void SimDataBlockEvent::process(NetConnection *cptr) { if(mProcess) { //call the console function to set the number of blocks to be sent Con::executef("onDataBlockObjectReceived", Con::getIntArg(mIndex), Con::getIntArg(mTotal)); SimDataBlock* obj = NULL; String &errorBuffer = NetConnection::getErrorBuffer(); if( Sim::findObject( id,obj ) && dStrcmp( obj->getClassName(),mObj->getClassName() ) == 0 ) { U8 buf[1500]; BitStream stream(buf, 1500); mObj->packData(&stream); stream.setPosition(0); obj->unpackData(&stream); obj->preload(false, errorBuffer); } else { if( obj != NULL ) { Con::warnf( "A '%s' datablock with id: %d already existed. " "Clobbering it with new '%s' datablock from server.", obj->getClassName(), id, mObj->getClassName() ); obj->deleteObject(); } bool ret = mObj->registerObject(id); if(ret) { cptr->addObject(mObj); GameConnection *conn = dynamic_cast<GameConnection *>(cptr); if(conn) { conn->preloadDataBlock(mObj); mObj = NULL; } } } } }
void SimDataBlockEvent::process(NetConnection *cptr) { if(mProcess) { //call the console function to set the number of blocks to be sent Con::executef("onDataBlockObjectReceived", mIndex, mTotal); String &errorBuffer = NetConnection::getErrorBuffer(); // Register the datablock object if this is a new DB // and not for a modified datablock event. if( !mObj->isProperlyAdded() ) { // This is a fresh datablock object. // Perform preload on datablock and register // the object. GameConnection* conn = dynamic_cast< GameConnection* >( cptr ); if( conn ) conn->preloadDataBlock( mObj ); if( mObj->registerObject(id) ) { cptr->addObject( mObj ); mObj = NULL; } } else { // This is an update to an existing datablock. Preload // to finish this. mObj->preload( false, errorBuffer ); mObj = NULL; } } }