- Timestamp:
- Oct 9, 2009, 4:41:30 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core5/src/libraries/network/synchronisable/Synchronisable.cc
r5839 r5916 47 47 /** 48 48 * Constructor: 49 * Initializes all Variables and sets the right objectID 49 * Initializes all Variables and sets the right objectID_ 50 50 */ 51 Synchronisable::Synchronisable(BaseObject* creator ){51 Synchronisable::Synchronisable(BaseObject* creator ){ 52 52 RegisterRootObject(Synchronisable); 53 53 static uint32_t idCounter=0; … … 55 55 if ( GameMode::isMaster() || ( Host::running() && Host::isServer() ) ) 56 56 { 57 this->objectID = idCounter++; //this is only needed when running a server 58 //add synchronisable to the objectMap 59 objectMap_[this->objectID] = this; 57 this->setObjectID( idCounter++ ); 60 58 } 61 59 else 62 60 { 63 objectID=OBJECTID_UNKNOWN; 64 this->setObjectMode(0x0); //make sure this object doesn't get synchronized 65 } 66 classID = static_cast<uint32_t>(-1); 61 objectID_=OBJECTID_UNKNOWN; 62 } 63 classID_ = static_cast<uint32_t>(-1); 67 64 68 65 // set dataSize to 0 … … 73 70 // get creator id 74 71 if( creator ) 75 this->creatorID = creator->getSceneID();72 this->creatorID_ = creator->getSceneID(); 76 73 else 77 this->creatorID = OBJECTID_UNKNOWN;74 this->creatorID_ = OBJECTID_UNKNOWN; 78 75 79 76 /*searchcreatorID: … … 95 92 /** 96 93 * Destructor: 97 * Delete all callback objects and remove objectID from the objectMap_94 * Delete all callback objects and remove objectID_ from the objectMap_ 98 95 */ 99 96 Synchronisable::~Synchronisable(){ … … 102 99 // remove object from the static objectMap 103 100 if (this->objectMode_ != 0x0 && (Host::running() && Host::isServer())) 104 deletedObjects_.push(objectID );101 deletedObjects_.push(objectID_); 105 102 } 106 103 // delete all Synchronisable Variables from syncList ( which are also in stringList ) … … 110 107 stringList.clear(); 111 108 std::map<uint32_t, Synchronisable*>::iterator it; 112 it = objectMap_.find(objectID );109 it = objectMap_.find(objectID_); 113 110 if (it != objectMap_.end()) 114 111 objectMap_.erase(it); … … 175 172 Synchronisable *no = orxonox_cast<Synchronisable*>(bo); 176 173 assert(no); 177 no->objectID=header.getObjectID(); 174 assert( Synchronisable::objectMap_.find(header.getObjectID()) == Synchronisable::objectMap_.end() ); 175 no->setObjectID(header.getObjectID()); 178 176 //no->creatorID=header.getCreatorID(); //TODO: remove this 179 no-> classID=header.getClassID();180 assert(no->creatorID == header.getCreatorID());181 //assert(no->classID == header.getClassID());182 COUT(4) << "fabricate objectID : " << no->objectID << " classID: " << no->classID<< std::endl;177 no->setClassID(header.getClassID()); 178 assert(no->creatorID_ == header.getCreatorID()); 179 //assert(no->classID_ == header.getClassID()); 180 COUT(4) << "fabricate objectID_: " << no->objectID_ << " classID_: " << no->classID_ << std::endl; 183 181 // update data and create object/entity... 184 assert( Synchronisable::objectMap_.find(header.getObjectID()) == Synchronisable::objectMap_.end() );185 Synchronisable::objectMap_[header.getObjectID()] = no;186 182 bool b = no->updateData(mem, mode, true); 187 183 assert(b); … … 196 192 197 193 /** 198 * Finds and deletes the Synchronisable with the appropriate objectID 199 * @param objectID objectIDof the Synchronisable194 * Finds and deletes the Synchronisable with the appropriate objectID_ 195 * @param objectID_ objectID_ of the Synchronisable 200 196 * @return true/false 201 197 */ 202 bool Synchronisable::deleteObject(uint32_t objectID ){203 if(!getSynchronisable(objectID ))198 bool Synchronisable::deleteObject(uint32_t objectID_){ 199 if(!getSynchronisable(objectID_)) 204 200 return false; 205 assert(getSynchronisable(objectID )->objectID==objectID);206 Synchronisable *s = getSynchronisable(objectID );201 assert(getSynchronisable(objectID_)->objectID_==objectID_); 202 Synchronisable *s = getSynchronisable(objectID_); 207 203 if(s) 208 204 s->destroy(); // or delete? … … 213 209 214 210 /** 215 * This function looks up the objectID in the objectMap_ and returns a pointer to the right Synchronisable216 * @param objectID objectIDof the Synchronisable217 * @return pointer to the Synchronisable with the objectID 218 */ 219 Synchronisable* Synchronisable::getSynchronisable(uint32_t objectID ){211 * This function looks up the objectID_ in the objectMap_ and returns a pointer to the right Synchronisable 212 * @param objectID_ objectID_ of the Synchronisable 213 * @return pointer to the Synchronisable with the objectID_ 214 */ 215 Synchronisable* Synchronisable::getSynchronisable(uint32_t objectID_){ 220 216 std::map<uint32_t, Synchronisable*>::iterator it1; 221 it1 = objectMap_.find(objectID );217 it1 = objectMap_.find(objectID_); 222 218 if (it1 != objectMap_.end()) 223 219 return it1->second; … … 225 221 // ObjectList<Synchronisable>::iterator it; 226 222 // for(it = ObjectList<Synchronisable>::begin(); it; ++it){ 227 // if( it->getObjectID()==objectID ){228 // objectMap_[objectID ] = *it;223 // if( it->getObjectID()==objectID_ ){ 224 // objectMap_[objectID_] = *it; 229 225 // return *it; 230 226 // } … … 236 232 237 233 /** 238 * This function takes all SynchronisableVariables out of the Synchronisable and saves them together with the size, objectID and classIDto the given memory234 * This function takes all SynchronisableVariables out of the Synchronisable and saves them together with the size, objectID_ and classID_ to the given memory 239 235 * takes a pointer to already allocated memory (must have at least getSize bytes length) 240 236 * structure of the bitstream: 241 * |totalsize,objectID ,classID,var1,var2,string1_length,string1,var3,...|237 * |totalsize,objectID_,classID_,var1,var2,string1_length,string1,var3,...| 242 238 * length of varx: size saved int syncvarlist 243 239 * @param mem pointer to allocated memory with enough size … … 257 253 uint32_t tempsize = 0; 258 254 #ifndef NDEBUG 259 if (this->classID ==0)255 if (this->classID_==0) 260 256 COUT(3) << "classid 0 " << this->getIdentifier()->getName() << std::endl; 261 257 #endif 262 258 263 if (this->classID == static_cast<uint32_t>(-1)) 264 this->classID = this->getIdentifier()->getNetworkID(); 265 266 assert(ClassByID(this->classID)); 267 assert(this->classID==this->getIdentifier()->getNetworkID()); 259 if (this->classID_ == static_cast<uint32_t>(-1)) 260 this->classID_ = this->getIdentifier()->getNetworkID(); 261 262 assert(ClassByID(this->classID_)); 263 assert(this->classID_==this->getIdentifier()->getNetworkID()); 264 assert(this->objectID_!=OBJECTID_UNKNOWN); 268 265 std::vector<SynchronisableVariableBase*>::iterator i; 269 266 … … 274 271 275 272 276 COUT(5) << "Synchronisable getting data from objectID : " << objectID << " classID: " << classID<< std::endl;273 COUT(5) << "Synchronisable getting data from objectID_: " << objectID_ << " classID_: " << classID_ << std::endl; 277 274 // copy to location 278 275 for(i=syncList.begin(); i!=syncList.end(); ++i){ … … 282 279 283 280 tempsize += SynchronisableHeader::getSize(); 284 header.setObjectID( this->objectID );285 header.setCreatorID( this->creatorID );286 header.setClassID( this->classID );281 header.setObjectID( this->objectID_ ); 282 header.setCreatorID( this->creatorID_ ); 283 header.setClassID( this->classID_ ); 287 284 header.setDataAvailable( true ); 288 285 header.setDataSize( tempsize ); … … 316 313 // start extract header 317 314 SynchronisableHeader syncHeader(mem); 318 assert(syncHeader.getObjectID()==this->objectID );319 assert(syncHeader.getCreatorID()==this->creatorID );320 assert(syncHeader.getClassID()==this->classID );315 assert(syncHeader.getObjectID()==this->objectID_); 316 assert(syncHeader.getCreatorID()==this->creatorID_); 317 assert(syncHeader.getClassID()==this->classID_); 321 318 if(syncHeader.isDataAvailable()==false){ 322 319 mem += syncHeader.getDataSize(); … … 327 324 // stop extract header 328 325 329 //COUT(5) << "Synchronisable: objectID " << syncHeader.getObjectID() << ", classID" << syncHeader.getClassID() << " size: " << syncHeader.getDataSize() << " synchronising data" << std::endl;326 //COUT(5) << "Synchronisable: objectID_ " << syncHeader.getObjectID() << ", classID_ " << syncHeader.getClassID() << " size: " << syncHeader.getDataSize() << " synchronising data" << std::endl; 330 327 for(i=syncList.begin(); i!=syncList.end(); i++) 331 328 { … … 366 363 if(mode==0x0) 367 364 mode=state_; 368 return ( ( objectMode_&mode)!=0 && (!syncList.empty() ) );369 } 370 371 /** 372 * This function looks at the header located in the bytestream and checks wheter objectID and classIDmatch with the Synchronisables ones365 return ( (this->objectMode_ & mode)!=0 && (!syncList.empty() ) ); 366 } 367 368 /** 369 * This function looks at the header located in the bytestream and checks wheter objectID_ and classID_ match with the Synchronisables ones 373 370 * @param mem pointer to the bytestream 374 371 */ … … 376 373 { 377 374 SynchronisableHeader header(mem); 378 assert(header.getObjectID()==this->objectID );375 assert(header.getObjectID()==this->objectID_); 379 376 return header.isDataAvailable(); 380 377 } … … 388 385 * @param mode same as in registerVar 389 386 */ 390 void Synchronisable::set ObjectMode(uint8_t mode){387 void Synchronisable::setSyncMode(uint8_t mode){ 391 388 assert(mode==0x0 || mode==0x1 || mode==0x2 || mode==0x3); 392 objectMode_=mode;389 this->objectMode_=mode; 393 390 } 394 391
Note: See TracChangeset
for help on using the changeset viewer.