Explorar o código

Merge pull request #498 from TripleSnail/master

Add/remove all PhysicsControls even when a RigidBodyControl is present
empirephoenix %!s(int64=8) %!d(string=hai) anos
pai
achega
bfbb0d61ea

+ 4 - 6
jme3-bullet/src/main/java/com/jme3/bullet/PhysicsSpace.java

@@ -489,9 +489,10 @@ public class PhysicsSpace {
      * @param spatial the rootnode containing the physics objects
      */
     public void addAll(Spatial spatial) {
+        add(spatial);
+
         if (spatial.getControl(RigidBodyControl.class) != null) {
             RigidBodyControl physicsNode = spatial.getControl(RigidBodyControl.class);
-            add(physicsNode);
             //add joints with physicsNode as BodyA
             List<PhysicsJoint> joints = physicsNode.getJoints();
             for (Iterator<PhysicsJoint> it1 = joints.iterator(); it1.hasNext();) {
@@ -501,8 +502,6 @@ public class PhysicsSpace {
                     add(physicsJoint);
                 }
             }
-        } else {
-            add(spatial);
         }
         //recursion
         if (spatial instanceof Node) {
@@ -531,10 +530,9 @@ public class PhysicsSpace {
                     //remove(physicsJoint.getBodyB());
                 }
             }
-            remove(physicsNode);
-        } else if (spatial.getControl(PhysicsControl.class) != null) {
-            remove(spatial);
         }
+            
+        remove(spatial);
         //recursion
         if (spatial instanceof Node) {
             List<Spatial> children = ((Node) spatial).getChildren();

+ 4 - 6
jme3-jbullet/src/main/java/com/jme3/bullet/PhysicsSpace.java

@@ -458,9 +458,10 @@ public class PhysicsSpace {
      * @param spatial the rootnode containing the physics objects
      */
     public void addAll(Spatial spatial) {
+        add(spatial);
+
         if (spatial.getControl(RigidBodyControl.class) != null) {
             RigidBodyControl physicsNode = spatial.getControl(RigidBodyControl.class);
-            add(physicsNode);
             //add joints with physicsNode as BodyA
             List<PhysicsJoint> joints = physicsNode.getJoints();
             for (Iterator<PhysicsJoint> it1 = joints.iterator(); it1.hasNext();) {
@@ -470,8 +471,6 @@ public class PhysicsSpace {
                     add(physicsJoint);
                 }
             }
-        } else {
-            add(spatial);
         }
         //recursion
         if (spatial instanceof Node) {
@@ -500,10 +499,9 @@ public class PhysicsSpace {
                     //remove(physicsJoint.getBodyB());
                 }
             }
-            remove(physicsNode);
-        } else if (spatial.getControl(PhysicsControl.class) != null) {
-            remove(spatial);
         }
+        
+        remove(spatial);
         //recursion
         if (spatial instanceof Node) {
             List<Spatial> children = ((Node) spatial).getChildren();