Przeglądaj źródła

Merge pull request #979 from sgrenier/next

Fixes physics issues for ghost objects and kinematic rigid bodies introduced by previous commit
Steve Grenier 12 lat temu
rodzic
commit
9fba645590
2 zmienionych plików z 10 dodań i 3 usunięć
  1. 1 1
      gameplay/src/Node.cpp
  2. 9 2
      gameplay/src/PhysicsCollisionObject.cpp

+ 1 - 1
gameplay/src/Node.cpp

@@ -420,7 +420,7 @@ const Matrix& Node::getWorldMatrix() const
             // If we have a parent, multiply our parent world transform by our local
             // transform to obtain our final resolved world transform.
             Node* parent = getParent();
-            if (parent)
+            if (parent && (!_collisionObject || _collisionObject->isKinematic()))
             {
                 Matrix::multiply(parent->getWorldMatrix(), getMatrix(), &_world);
             }

+ 9 - 2
gameplay/src/PhysicsCollisionObject.cpp

@@ -87,8 +87,15 @@ bool PhysicsCollisionObject::isKinematic() const
 
 bool PhysicsCollisionObject::isStatic() const
 {
-    GP_ASSERT(getCollisionObject());
-    return getCollisionObject()->isStaticObject();
+    switch (getType())
+    {
+    case GHOST_OBJECT:
+    case CHARACTER:
+        return false;
+    default:
+        GP_ASSERT(getCollisionObject());
+        return getCollisionObject()->isStaticObject();
+    }
 }
 
 bool PhysicsCollisionObject::isDynamic() const