- Timestamp:
- Dec 14, 2010, 8:54:00 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/network5/src/libraries/network/packet/Gamestate.cc
r7758 r7759 43 43 #define GAMESTATE_START(data) (data + GamestateHeader::getSize()) 44 44 45 #define PACKET_FLAG_GAMESTATE 0 //PacketFlag::Reliable 45 // #define PACKET_FLAG_GAMESTATE PacketFlag::Unsequenced 46 // #define PACKET_FLAG_GAMESTATE 0 47 #define PACKET_FLAG_GAMESTATE PacketFlag::Reliable 46 48 47 49 inline bool memzero( uint8_t* data, uint32_t datalength) … … 364 366 inline void /*Gamestate::*/diffObject( uint8_t*& newDataPtr, uint8_t*& origDataPtr, uint8_t*& baseDataPtr, SynchronisableHeader& objectHeader, std::vector<uint32_t>::iterator& sizes ) 365 367 { 366 // COUT(4) << "dodiff" << endl;367 // if(baseOffset==0)368 // {369 // assert(origOffset==0);370 // }371 368 assert( objectHeader.getDataSize() == SynchronisableHeader(baseDataPtr).getDataSize() ); 372 369 … … 382 379 else 383 380 { 384 // if( Synchronisable::getSynchronisable(origHeader.getObjectID())->getIdentifier()->getName() == "Bot" )385 // COUT(0) << "blub" << endl;386 // COUT(4) << "object diff: " << Synchronisable::getSynchronisable(h.getObjectID())->getIdentifier()->getName() << endl;387 // COUT(4) << "diff " << h.getObjectID() << ":";388 381 // Now start to diff the Object 389 382 SynchronisableHeaderLight newObjectHeader(newDataPtr); … … 396 389 // check whether variable changed and write id and copy over variable to the new stream 397 390 // otherwise skip variable 398 // assert(sizes != this->sizes_.end());399 391 uint32_t varSize = *sizes; 400 392 assert( varSize == Synchronisable::getSynchronisable(objectHeader.getObjectID())->getVarSize(variableID) ); … … 403 395 if ( memcmp(origDataPtr+objectOffset, baseDataPtr+objectOffset, varSize) != 0 ) 404 396 { 405 // COUT(4) << "copy variable" << endl;406 397 *(VariableID*)(newDataPtr+diffedObjectOffset) = variableID; // copy over the variableID 407 398 diffedObjectOffset += sizeof(VariableID); … … 412 403 else 413 404 { 414 // COUT(4) << "skip variable" << endl;415 405 objectOffset += varSize; 416 406 } 417 407 } 418 // else419 // COUT(4) << "varsize 0" << endl;420 408 421 409 ++variableID; 422 410 ++sizes; 423 411 } 424 412 413 // if there are variables from this object with 0 size left in sizes 425 414 if( Synchronisable::getSynchronisable(objectHeader.getObjectID())->getNrOfVariables() != variableID ) 426 415 sizes += Synchronisable::getSynchronisable(objectHeader.getObjectID())->getNrOfVariables() - variableID; 427 // COUT(4) << endl;428 416 429 417 newObjectHeader.setDiffed(true); … … 431 419 assert(objectOffset == objectHeader.getDataSize()+SynchronisableHeader::getSize()); 432 420 assert(newObjectHeader.getDataSize()>0); 421 433 422 origDataPtr += objectOffset; 434 // baseOffset += temp + h.getDataSize()+SynchronisableHeader::getSize() - baseData;435 //baseOffset += objectOffset;436 // SynchronisableHeader htemp(temp);437 // baseOffset += SynchronisableHeader::getSize() + htemp.getDataSize();438 // {439 // SynchronisableHeader htemp2( baseData+(temp-baseData+objectOffset) );440 // if( baseData+(temp-baseData+objectOffset) < baseData+baseLength )441 // {442 // assert(htemp2.getClassID()<500);443 // assert(htemp2.getDataSize()!=0 && htemp2.getDataSize()<1000);444 // assert(htemp2.isDiffed()==false);445 // }446 // }447 423 baseDataPtr += objectOffset; 448 424 newDataPtr += diffedObjectOffset; … … 455 431 // Just copy over the whole Object 456 432 memcpy( newData, origData, objectHeader.getDataSize()+SynchronisableHeader::getSize() ); 433 SynchronisableHeader(newData).setDiffed(false); 434 457 435 newData += objectHeader.getDataSize()+SynchronisableHeader::getSize(); 458 436 origData += objectHeader.getDataSize()+SynchronisableHeader::getSize(); … … 547 525 assert(sizesIt != this->sizes_.end()); 548 526 527 assert(Synchronisable::getSynchronisable(origHeader.getObjectID())); 528 assert(ClassByID(origHeader.getClassID())); 529 assert(origHeader.getDataSize() < 500); 530 549 531 bool diffedObject = false; 550 532 if( findObject(baseDataPtr, baseDataEnd, origHeader) ) 551 533 { 534 SynchronisableHeader baseHeader(baseDataPtr); 535 assert(Synchronisable::getSynchronisable(baseHeader.getObjectID())); 536 assert(ClassByID(baseHeader.getClassID())); 537 assert(baseHeader.getDataSize() < 500); 552 538 if( SynchronisableHeader(baseDataPtr).getDataSize()==origHeader.getDataSize() ) 553 539 { … … 570 556 if( findObject(baseDataPtr, oldBaseDataPtr, origHeader) ) 571 557 { 558 SynchronisableHeader baseHeader(baseDataPtr); 559 assert(Synchronisable::getSynchronisable(baseHeader.getObjectID())); 560 assert(ClassByID(baseHeader.getClassID())); 561 assert(baseHeader.getDataSize() < 500); 572 562 if( SynchronisableHeader(baseDataPtr).getDataSize()==origHeader.getDataSize() ) 573 563 {
Note: See TracChangeset
for help on using the changeset viewer.