Ignore:
Timestamp:
03/31/06 17:29:32 (18 years ago)
Author:
igarcia
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Illum/IBRBillboardCloudTrees/OGRE/src/BBCEntity.cpp

    r699 r721  
    44namespace BBC { 
    55 
    6 Entity::Entity()  
     6Entity::Entity(): references(0) // initialize references to 0  
    77{ 
    88        createSubEntity(); 
     
    1111Entity::~Entity()         
    1212{ 
    13         for (unsigned int iSubEntity = 0; iSubEntity < getNumSubEntities(); iSubEntity++) 
    14         { 
    15                 SubEntity *subEntity = getSubEntity(iSubEntity); 
    16                 delete subEntity; 
    17         } 
     13 
    1814} 
    1915 
    2016void Entity::createSubEntity() 
    2117{ 
    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 
     22void Entity::addSubEntity(SubEntityPtr value) 
    2723{ 
    2824        mSubEntityList.push_back(value); 
    2925} 
    3026 
    31 SubEntity* Entity::getSubEntity(unsigned int index) 
     27SubEntityPtr Entity::getSubEntity(unsigned int index) 
    3228{ 
    3329        return mSubEntityList[index]; 
     
    3632void Entity::removeSubEntity(unsigned int index) 
    3733{ 
    38         SubEntity *subEntity = mSubEntityList[index]; 
    3934        mSubEntityList.erase(mSubEntityList.begin()+index); 
    40         delete subEntity; 
    4135} 
    4236 
     
    5751} 
    5852 
    59 Ogre::Mesh* Entity::getMesh()  
     53MeshPtr Entity::getMesh()  
    6054{ 
    6155        return mMesh; 
    6256} 
    6357 
    64 void Entity::setMesh(Ogre::Mesh *value)  
     58void Entity::setMesh(MeshPtr value)  
    6559{ 
    6660        mMesh = value; 
     
    9387void Entity::sincronizeNumSubEntities() 
    9488{ 
    95         if (this->getNumSubEntities() < mMesh->getNumSubMeshes()) 
    96         { 
    97                 while (this->getNumSubEntities() < mMesh->getNumSubMeshes()) 
     89        if (this->getNumSubEntities() < mMesh->get()->getNumSubMeshes()) 
     90        { 
     91                while (this->getNumSubEntities() < mMesh->get()->getNumSubMeshes()) 
    9892                { 
    9993                        this->createSubEntity(); 
     
    10195        } 
    10296 
    103         if (this->getNumSubEntities() > mMesh->getNumSubMeshes()) 
    104         { 
    105                 while (this->getNumSubEntities() > mMesh->getNumSubMeshes()) 
     97        if (this->getNumSubEntities() > mMesh->get()->getNumSubMeshes()) 
     98        { 
     99                while (this->getNumSubEntities() > mMesh->get()->getNumSubMeshes()) 
    106100                { 
    107101                        this->removeSubEntity(this->getNumSubEntities()-1); 
     
    117111        size_t next_offset = 0; 
    118112 
    119         unsigned int numSubMeshes = mMesh->getNumSubMeshes(); 
     113        unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 
    120114        sincronizeNumSubEntities(); 
    121115         
    122116        added_shared = false; 
    123         for (unsigned short i = 0; i < mMesh->getNumSubMeshes(); i++) 
    124         { 
    125                 Ogre::SubMesh* subMesh = mMesh->getSubMesh(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; 
    127121 
    128122                if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) 
     
    173167        size_t next_offset = 0; 
    174168 
    175         unsigned int numSubMeshes = mMesh->getNumSubMeshes(); 
     169        unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 
    176170        sincronizeNumSubEntities(); 
    177171         
    178172        added_shared = false; 
    179         for (unsigned short i = 0; i < mMesh->getNumSubMeshes(); i++) 
    180         { 
    181                 Ogre::SubMesh* subMesh = mMesh->getSubMesh(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; 
    183177 
    184178                if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) 
     
    223217        size_t next_offset = 0; 
    224218 
    225         unsigned int numSubMeshes = mMesh->getNumSubMeshes(); 
     219        unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 
    226220        sincronizeNumSubEntities(); 
    227221         
    228222        added_shared = false; 
    229         for (unsigned short i = 0; i < mMesh->getNumSubMeshes(); i++) 
    230         { 
    231                 Ogre::SubMesh* subMesh = mMesh->getSubMesh(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; 
    233227 
    234228                if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) 
     
    290284        size_t next_offset = 0; 
    291285 
    292         unsigned int numSubMeshes = mMesh->getNumSubMeshes(); 
     286        unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 
    293287        sincronizeNumSubEntities(); 
    294288         
    295289        added_shared = false; 
    296         for (unsigned short i = 0; i < mMesh->getNumSubMeshes(); i++) 
    297         { 
    298                 Ogre::SubMesh* subMesh = mMesh->getSubMesh(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; 
    300294 
    301295                if ((!subMesh->useSharedVertices) || (subMesh->useSharedVertices && !added_shared)) 
     
    411405        size_t index_offset = 0; 
    412406 
    413         unsigned int numSubMeshes = mMesh->getNumSubMeshes(); 
     407        unsigned int numSubMeshes = mMesh->get()->getNumSubMeshes(); 
    414408        sincronizeNumSubEntities(); 
    415409 
     
    417411 
    418412        // Run through the submeshes again, adding the data into the arrays 
    419         for ( unsigned short i = 0; i < mMesh->getNumSubMeshes(); ++i) 
    420         { 
    421                 Ogre::SubMesh* submesh = mMesh->getSubMesh(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; 
    424418 
    425419                if((!submesh->useSharedVertices)||(submesh->useSharedVertices && !added_shared)) 
     
    497491unsigned int Entity::getNumSubEntities() 
    498492{ 
    499         return static_cast<unsigned int>(mSubEntityList.size()); 
     493        return mSubEntityList.size(); 
    500494} 
    501495 
     
    530524                for (unsigned int iSubEntity = 1; iSubEntity < mSubEntityList.size(); iSubEntity) 
    531525                { 
    532                         SubEntityList::iterator subEntityListIterator = mSubEntityList.begin()+iSubEntity; 
    533                         // Gametools -- 02/03/2006 
    534                         // BUG: If I delete the subentity other entities that reference it will lose it's data... 
    535                         //SubEntity *subEntity = (*subEntityListIterator); 
    536526                        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.