[Orxonox-commit 2632] r7337 - code/branches/network3/src/libraries/network/packet
scheusso at orxonox.net
scheusso at orxonox.net
Fri Sep 3 15:46:22 CEST 2010
Author: scheusso
Date: 2010-09-03 15:46:21 +0200 (Fri, 03 Sep 2010)
New Revision: 7337
Modified:
code/branches/network3/src/libraries/network/packet/Gamestate.cc
Log:
fix in gamestate diff
Modified: code/branches/network3/src/libraries/network/packet/Gamestate.cc
===================================================================
--- code/branches/network3/src/libraries/network/packet/Gamestate.cc 2010-09-03 13:45:59 UTC (rev 7336)
+++ code/branches/network3/src/libraries/network/packet/Gamestate.cc 2010-09-03 13:46:21 UTC (rev 7337)
@@ -509,6 +509,7 @@
assert(baseData < baseDataEnd);
assert(dest < newData + newDataSize);
assert(sizes != this->sizes_.end());
+ bool diffedObject = false;
while ( baseData < baseDataEnd )
{
SynchronisableHeader htemp(baseData);
@@ -518,6 +519,8 @@
assert( h.getClassID() == htemp.getClassID() );
// goto DODIFF;
diffObject(dest, origData, baseData, h, sizes);
+ diffedObject = true;
+ break;
}
{
SynchronisableHeader htemp2(baseData+htemp.getDataSize()+SynchronisableHeader::getSize());
@@ -528,12 +531,13 @@
assert(htemp2.isDiffed()==false);
}
}
+ baseData += htemp.getDataSize()+SynchronisableHeader::getSize();
// assert( baseData+htemp.getDataSize()+SynchronisableHeader::getSize() <=baseData+baseLength );
// temp += htemp.getDataSize()+SynchronisableHeader::getSize();
-
+
}
// If not found start looking at the beginning
- assert( baseData == baseDataEnd );
+ assert( diffedObject || baseData == baseDataEnd );
baseData = GAMESTATE_START(base->data_);
{
SynchronisableHeader htemp2(baseData);
@@ -544,7 +548,7 @@
assert(htemp2.isDiffed()==false);
}
}
- while ( baseData < baseDataEnd )
+ while ( !diffedObject && baseData < baseDataEnd )
{
SynchronisableHeader htemp(baseData);
if ( htemp.getObjectID() == objectID )
@@ -573,8 +577,8 @@
copyObject(dest, origData, baseData, h, sizes);
assert(sizes != this->sizes_.end() || origData>=origDataEnd);
}
-
}
+ assert(sizes==this->sizes_.end());
Gamestate *g = new Gamestate(newData, getClientID());
More information about the Orxonox-commit
mailing list