Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 17, 2014, 3:41:17 PM (11 years ago)
Author:
noep
Message:

Tried to prevent the StaticEntities & Collisionshapes from getting deleted by creating vectors of SmartPointers to them. didn't work.

Location:
code/branches/modularships/src/orxonox/worldentities/pawns
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/modularships/src/orxonox/worldentities/pawns/ModularSpaceShip.cc

    r10033 r10036  
    4242#include "collisionshapes/WorldEntityCollisionShape.h"
    4343#include <BulletCollision/CollisionShapes/btCollisionShape.h>
     44#include <BulletCollision/CollisionShapes/btCompoundShape.h>
    4445
    4546
     
    126127
    127128        this->partMap_[entity] = part;
     129
     130        //This adds a list of SmartPointers for all StaticEntities which have a ShipPart, preventing them from getting deleted. Hopefully.
     131        SmartPtr<StaticEntity> newSmartPtr = entity;
     132        SmartPtr<StaticEntity>* one = &newSmartPtr;
     133        this->entityPtrList_.push_back(one);
     134
     135        this->createCSPtrList(this->getWorldEntityCollisionShape());
     136
    128137        orxout() << "New entity-part assignment created!" << endl;
     138    }
     139
     140    // This should add smartPointers to all (Orxonox)Collisionshapes of this SpaceShip, preventing them fromg etting deleted. Might not work due to weird acting getAttachedShape
     141    void ModularSpaceShip::createCSPtrList(CompoundCollisionShape* cs)
     142    {
     143        for (int i=0; i < cs->getNumChildShapes(); i++)
     144        {
     145
     146            if (!orxonox_cast<CompoundCollisionShape*>(cs->getAttachedShape(i)))
     147            {
     148                SmartPtr<CollisionShape> newSmartPtr = cs->getAttachedShape(i);
     149                SmartPtr<CollisionShape>* one = &newSmartPtr;
     150                this->csPtrList_.push_back(one);
     151            }
     152
     153            if (orxonox_cast<CompoundCollisionShape*>(cs->getAttachedShape(i)))
     154                createCSPtrList((CompoundCollisionShape*)(cs->getAttachedShape(i)));
     155
     156        }
    129157    }
    130158
  • code/branches/modularships/src/orxonox/worldentities/pawns/ModularSpaceShip.h

    r10033 r10036  
    122122            virtual void updatePartAssignment();
    123123
     124            void createCSPtrList(CompoundCollisionShape* cs);
     125
    124126        protected:
    125127
     
    128130            void registerVariables();
    129131            std::vector<ShipPart*> partList_;  // The list of all Parts mounted on this ModularSpaceShip.
     132            std::vector<SmartPtr<StaticEntity>*> entityPtrList_;
     133            std::vector<SmartPtr<CollisionShape>*> csPtrList_;
    130134            std::map<StaticEntity*, ShipPart*> partMap_;
    131135       
Note: See TracChangeset for help on using the changeset viewer.