Browse Source

Further style edits. Only delete the collisionConfiguration in PhysicsWorld destructor if it was created in the constructor, and not specified by the override config.

Lasse Öörni 9 years ago
parent
commit
fe3b93080c

+ 2 - 2
Source/Urho3D/Physics/CollisionShape.cpp

@@ -1159,7 +1159,7 @@ void CollisionShape::UpdateShape()
             break;
 
         default:
-        	shape_ = this->UpdateDerivedShape(shapeType_, newWorldScale);
+            shape_ = this->UpdateDerivedShape(shapeType_, newWorldScale);
             break;
         }
 
@@ -1182,7 +1182,7 @@ void CollisionShape::UpdateShape()
 btCollisionShape* CollisionShape::UpdateDerivedShape(int shapeType, const Vector3& newWorldScale)
 {
     // To be overridden in derived classes.
-	return NULL;
+    return 0;
 }
 
 

+ 5 - 3
Source/Urho3D/Physics/PhysicsWorld.cpp

@@ -138,8 +138,8 @@ PhysicsWorld::PhysicsWorld(Context* context) :
 {
     gContactAddedCallback = CustomMaterialCombinerCallback;
 
-    if (PhysicsWorld::config.collisionConfig)
-        collisionConfiguration_ = PhysicsWorld::config.collisionConfig;
+    if (PhysicsWorld::config.collisionConfig_)
+        collisionConfiguration_ = PhysicsWorld::config.collisionConfig_;
     else
         collisionConfiguration_ = new btDefaultCollisionConfiguration();
 
@@ -184,7 +184,9 @@ PhysicsWorld::~PhysicsWorld()
     delete collisionDispatcher_;
     collisionDispatcher_ = 0;
 
-    delete collisionConfiguration_;
+    // Delete configuration only if it was the default created by PhysicsWorld
+    if (!PhysicsWorld::config.collisionConfig_)
+        delete collisionConfiguration_;
     collisionConfiguration_ = 0;
 }
 

+ 10 - 11
Source/Urho3D/Physics/PhysicsWorld.h

@@ -96,17 +96,16 @@ struct DelayedWorldTransform
     Quaternion worldRotation_;
 };
 
-/**
- * Custom overrides of physics internals.
- *
- * Must be modified before the physics component is created.
- */
+/// Custom overrides of physics internals. To use overrides, must be set before the physics component is created.
 struct PhysicsWorldConfig
 {
-    /// Override for the collision configuration (default btDefaultCollisionConfiguration).
-    btCollisionConfiguration*    collisionConfig;
+    PhysicsWorldConfig() :
+        collisionConfig_(0)
+    {
+    }
 
-    PhysicsWorldConfig() : collisionConfig(0) {}
+    /// Override for the collision configuration (default btDefaultCollisionConfiguration).
+    btCollisionConfiguration* collisionConfig_;
 };
 
 static const float DEFAULT_MAX_NETWORK_ANGULAR_VELOCITY = 100.0f;
@@ -120,9 +119,6 @@ class URHO3D_API PhysicsWorld : public Component, public btIDebugDraw
     friend void InternalTickCallback(btDynamicsWorld* world, btScalar timeStep);
 
 public:
-    /// Allow overrides of the internal configuration.
-    static struct PhysicsWorldConfig config;
-
     /// Construct.
     PhysicsWorld(Context* scontext);
     /// Destruct.
@@ -269,6 +265,9 @@ public:
     /// Return whether is currently inside the Bullet substep loop.
     bool IsSimulating() const { return simulating_; }
 
+    /// Overrides of the internal configuration.
+    static struct PhysicsWorldConfig config;
+
 protected:
     /// Handle scene being assigned.
     virtual void OnSceneSet(Scene* scene);