- Timestamp:
- 03/31/06 17:29:32 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/src/BBCEntity.cpp
r699 r721 4 4 namespace BBC { 5 5 6 Entity::Entity() 6 Entity::Entity(): references(0) // initialize references to 0 7 7 { 8 8 createSubEntity(); … … 11 11 Entity::~Entity() 12 12 { 13 for (unsigned int iSubEntity = 0; iSubEntity < getNumSubEntities(); iSubEntity++) 14 { 15 SubEntity *subEntity = getSubEntity(iSubEntity); 16 delete subEntity; 17 } 13 18 14 } 19 15 20 16 void Entity::createSubEntity() 21 17 { 22 SubEntity *subEntity = new SubEntity();23 mSubEntityList.push_back(subEntity );24 } 25 26 void Entity::addSubEntity(SubEntity *value)18 SubEntityPtr subEntityPtr((SubEntity*)new SubEntity()); 19 mSubEntityList.push_back(subEntityPtr); 20 } 21 22 void Entity::addSubEntity(SubEntityPtr value) 27 23 { 28 24 mSubEntityList.push_back(value); 29 25 } 30 26 31 SubEntity *Entity::getSubEntity(unsigned int index)27 SubEntityPtr Entity::getSubEntity(unsigned int index) 32 28 { 33 29 return mSubEntityList[index]; … … 36 32 void Entity::removeSubEntity(unsigned int index) 37 33 { 38 SubEntity *subEntity = mSubEntityList[index];39 34 mSubEntityList.erase(mSubEntityList.begin()+index); 40 delete subEntity;41 35 } 42 36 … … 57 51 } 58 52 59 Ogre::Mesh*Entity::getMesh()53 MeshPtr Entity::getMesh() 60 54 { 61 55 return mMesh; 62 56 } 63 57 64 void Entity::setMesh( Ogre::Mesh *value)58 void Entity::setMesh(MeshPtr value) 65 59 { 66 60 mMesh = value; … … 93 87 void Entity::sincronizeNumSubEntities() 94 88 { 95 if (this->getNumSubEntities() < mMesh->get NumSubMeshes())96 { 97 while (this->getNumSubEntities() < mMesh->get NumSubMeshes())89 if (this->getNumSubEntities() < mMesh->get()->getNumSubMeshes()) 90 { 91 while (this->getNumSubEntities() < mMesh->get()->getNumSubMeshes()) 98 92 { 99 93 this->createSubEntity(); … … 101 95 } 102 96 103 if (this->getNumSubEntities() > mMesh->get NumSubMeshes())104 { 105 while (this->getNumSubEntities() > mMesh->get NumSubMeshes())97 if (this->getNumSubEntities() > mMesh->get()->getNumSubMeshes()) 98 { 99 while (this->getNumSubEntities() > mMesh->get()->getNumSubMeshes()) 106 100 { 107 101 this->removeSubEntity(this->getNumSubEntities()-1); … … 117 111 size_t next_offset = 0; 118 112 119 unsigned int numSubMeshes = mMesh->get NumSubMeshes();113 unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 120 114 sincronizeNumSubEntities(); 121 115 122 116 added_shared = false; 123 for (unsigned short i = 0; i < mMesh->get NumSubMeshes(); i++)124 { 125 Ogre::SubMesh* subMesh = mMesh->get SubMesh(i);126 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh-> sharedVertexData : subMesh->vertexData;117 for (unsigned short i = 0; i < mMesh->get()->getNumSubMeshes(); i++) 118 { 119 Ogre::SubMesh* subMesh = mMesh->get()->getSubMesh(i); 120 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh->get()->sharedVertexData : subMesh->vertexData; 127 121 128 122 if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) … … 173 167 size_t next_offset = 0; 174 168 175 unsigned int numSubMeshes = mMesh->get NumSubMeshes();169 unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 176 170 sincronizeNumSubEntities(); 177 171 178 172 added_shared = false; 179 for (unsigned short i = 0; i < mMesh->get NumSubMeshes(); i++)180 { 181 Ogre::SubMesh* subMesh = mMesh->get SubMesh(i);182 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh-> sharedVertexData : subMesh->vertexData;173 for (unsigned short i = 0; i < mMesh->get()->getNumSubMeshes(); i++) 174 { 175 Ogre::SubMesh* subMesh = mMesh->get()->getSubMesh(i); 176 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh->get()->sharedVertexData : subMesh->vertexData; 183 177 184 178 if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) … … 223 217 size_t next_offset = 0; 224 218 225 unsigned int numSubMeshes = mMesh->get NumSubMeshes();219 unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 226 220 sincronizeNumSubEntities(); 227 221 228 222 added_shared = false; 229 for (unsigned short i = 0; i < mMesh->get NumSubMeshes(); i++)230 { 231 Ogre::SubMesh* subMesh = mMesh->get SubMesh(i);232 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh-> sharedVertexData : subMesh->vertexData;223 for (unsigned short i = 0; i < mMesh->get()->getNumSubMeshes(); i++) 224 { 225 Ogre::SubMesh* subMesh = mMesh->get()->getSubMesh(i); 226 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh->get()->sharedVertexData : subMesh->vertexData; 233 227 234 228 if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) … … 290 284 size_t next_offset = 0; 291 285 292 unsigned int numSubMeshes = mMesh->get NumSubMeshes();286 unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 293 287 sincronizeNumSubEntities(); 294 288 295 289 added_shared = false; 296 for (unsigned short i = 0; i < mMesh->get NumSubMeshes(); i++)297 { 298 Ogre::SubMesh* subMesh = mMesh->get SubMesh(i);299 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh-> sharedVertexData : subMesh->vertexData;290 for (unsigned short i = 0; i < mMesh->get()->getNumSubMeshes(); i++) 291 { 292 Ogre::SubMesh* subMesh = mMesh->get()->getSubMesh(i); 293 Ogre::VertexData* vertexData = subMesh->useSharedVertices ? mMesh->get()->sharedVertexData : subMesh->vertexData; 300 294 301 295 if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) … … 411 405 size_t index_offset = 0; 412 406 413 unsigned int numSubMeshes = mMesh->get NumSubMeshes();407 unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 414 408 sincronizeNumSubEntities(); 415 409 … … 417 411 418 412 // Run through the submeshes again, adding the data into the arrays 419 for ( unsigned short i = 0; i < mMesh->get NumSubMeshes(); ++i)420 { 421 Ogre::SubMesh* submesh = mMesh->get SubMesh(i);422 423 Ogre::VertexData* vertex_data = submesh->useSharedVertices ? mMesh-> sharedVertexData : submesh->vertexData;413 for ( unsigned short i = 0; i < mMesh->get()->getNumSubMeshes(); ++i) 414 { 415 Ogre::SubMesh* submesh = mMesh->get()->getSubMesh(i); 416 417 Ogre::VertexData* vertex_data = submesh->useSharedVertices ? mMesh->get()->sharedVertexData : submesh->vertexData; 424 418 425 419 if((!submesh->useSharedVertices)||(submesh->useSharedVertices && !added_shared)) … … 497 491 unsigned int Entity::getNumSubEntities() 498 492 { 499 return static_cast<unsigned int>(mSubEntityList.size());493 return mSubEntityList.size(); 500 494 } 501 495 … … 530 524 for (unsigned int iSubEntity = 1; iSubEntity < mSubEntityList.size(); iSubEntity) 531 525 { 532 SubEntityList::iterator subEntityListIterator = mSubEntityList.begin()+iSubEntity;533 // Gametools -- 02/03/2006534 // BUG: If I delete the subentity other entities that reference it will lose it's data...535 //SubEntity *subEntity = (*subEntityListIterator);536 526 mSubEntityList.erase(mSubEntityList.begin()+iSubEntity); 537 //delete subEntity; 538 } 539 } 540 } 541 542 } 527 } 528 } 529 } 530 531 }
Note: See TracChangeset
for help on using the changeset viewer.