[Orxonox-commit 5757] r10417 - in code/branches/core7/src: modules/objects/collisionshapes orxonox/collisionshapes

landauf at orxonox.net landauf at orxonox.net
Sun May 3 13:31:18 CEST 2015


Author: landauf
Date: 2015-05-03 13:31:18 +0200 (Sun, 03 May 2015)
New Revision: 10417

Modified:
   code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.cc
   code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.h
   code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.cc
   code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.h
   code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.cc
   code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.h
   code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.cc
   code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.h
   code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.cc
   code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.h
   code/branches/core7/src/orxonox/collisionshapes/CollisionShape.cc
   code/branches/core7/src/orxonox/collisionshapes/CompoundCollisionShape.cc
   code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc
   code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.h
Log:
moved destruction of bullet collision shape to ~CollisionShape(). CompoundCollisionShape needs some trickery to avoid that a shape gets deleted twice because it does some magic (i.e. assignments) in CompoundCollisionShape::updatePublicShape()

Modified: code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.cc
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -57,13 +57,6 @@
         this->registerVariables();
     }
 
-    BoxCollisionShape::~BoxCollisionShape()
-    {
-        // TODO: Move to CollisionShape?
-        if (this->isInitialized())
-            delete this->collisionShape_;
-    }
-
     void BoxCollisionShape::registerVariables()
     {
         registerVariable(this->halfExtents_, VariableDirection::ToClient, new NetworkCallback<CollisionShape>(this, &CollisionShape::updateShape));

Modified: code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.h
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/BoxCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -57,7 +57,6 @@
     {
         public:
             BoxCollisionShape(Context* context);
-            virtual ~BoxCollisionShape();
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 

Modified: code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.cc
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -53,12 +53,6 @@
         updateShape();
     }
 
-    ConeCollisionShape::~ConeCollisionShape()
-    {
-        if (this->isInitialized())
-            delete this->collisionShape_;
-    }
-
     /**
     @brief
         Creates a new internal collision shape for the ConeCollisionShape.

Modified: code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.h
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/ConeCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -55,7 +55,6 @@
     {
         public:
             ConeCollisionShape(Context* context);
-            virtual ~ConeCollisionShape();
 
         private:
             btCollisionShape* createNewShape() const; // Creates a new internal collision shape for the ConeCollisionShape.

Modified: code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.cc
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -53,12 +53,6 @@
         updateShape();
     }
 
-    CylinderCollisionShape::~CylinderCollisionShape()
-    {
-        if (this->isInitialized())
-            delete this->collisionShape_;
-    }
-
     /**
     @brief
         Creates a new internal collision shape for the CylinderCollisionShape.

Modified: code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.h
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/CylinderCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -52,7 +52,6 @@
     {
         public:
             CylinderCollisionShape(Context* context);
-            virtual ~CylinderCollisionShape();
 
         private:
             btCollisionShape* createNewShape() const; // Creates a new internal collision shape for the CylinderCollisionShape.

Modified: code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.cc
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -58,12 +58,6 @@
         this->registerVariables();
     }
 
-    PlaneCollisionShape::~PlaneCollisionShape()
-    {
-        if (this->isInitialized())
-            delete this->collisionShape_;
-    }
-
     void PlaneCollisionShape::registerVariables()
     {
         registerVariable(this->normal_, VariableDirection::ToClient, new NetworkCallback<CollisionShape>(this, &CollisionShape::updateShape));

Modified: code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.h
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/PlaneCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -57,7 +57,6 @@
     {
         public:
             PlaneCollisionShape(Context* context);
-            virtual ~PlaneCollisionShape();
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 

Modified: code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.cc
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -57,12 +57,6 @@
         this->registerVariables();
     }
 
-    SphereCollisionShape::~SphereCollisionShape()
-    {
-        if (this->isInitialized())
-            delete this->collisionShape_;
-    }
-
     void SphereCollisionShape::registerVariables()
     {
         registerVariable(this->radius_, VariableDirection::ToClient, new NetworkCallback<CollisionShape>(this, &CollisionShape::updateShape));

Modified: code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.h
===================================================================
--- code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/modules/objects/collisionshapes/SphereCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -55,7 +55,6 @@
     {
         public:
             SphereCollisionShape(Context* context);
-            virtual ~SphereCollisionShape();
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
 

Modified: code/branches/core7/src/orxonox/collisionshapes/CollisionShape.cc
===================================================================
--- code/branches/core7/src/orxonox/collisionshapes/CollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/orxonox/collisionshapes/CollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -81,6 +81,9 @@
 
             if (this->parent_)
                 this->parent_->detach(this);
+
+            if (this->collisionShape_)
+                delete this->collisionShape_;
         }
     }
 

Modified: code/branches/core7/src/orxonox/collisionshapes/CompoundCollisionShape.cc
===================================================================
--- code/branches/core7/src/orxonox/collisionshapes/CompoundCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/orxonox/collisionshapes/CompoundCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -70,9 +70,13 @@
                 // make sure that the child doesn't want to detach itself --> speedup because of the missing update
                 it->first->notifyDetached();
                 it->first->destroy();
+                if (this->collisionShape_ == it->second)
+                    this->collisionShape_ = NULL; // don't destroy it twice
             }
 
             delete this->compoundShape_;
+            if (this->collisionShape_ == this->compoundShape_)
+                this->collisionShape_ = NULL; // don't destroy it twice
         }
     }
 

Modified: code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc
===================================================================
--- code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.cc	2015-05-03 11:31:18 UTC (rev 10417)
@@ -47,11 +47,6 @@
         this->setSyncMode(ObjectDirection::None);
     }
 
-    WorldEntityCollisionShape::~WorldEntityCollisionShape()
-    {
-        // Called always by WE destructor
-    }
-
     void WorldEntityCollisionShape::updateParent()
     {
         // Note: This shape may also be attached to a CompoundCollisionShape because it's hosting

Modified: code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.h
===================================================================
--- code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.h	2015-05-03 10:22:22 UTC (rev 10416)
+++ code/branches/core7/src/orxonox/collisionshapes/WorldEntityCollisionShape.h	2015-05-03 11:31:18 UTC (rev 10417)
@@ -38,7 +38,6 @@
     {
         public:
             WorldEntityCollisionShape(Context* context);
-            virtual ~WorldEntityCollisionShape();
 
             inline void setWorldEntityOwner(WorldEntity* worldEntityOwner)
                 { this->worldEntityOwner_ = worldEntityOwner; }




More information about the Orxonox-commit mailing list