Browse Source

physics: Fix GlobalForceGroup

rdb 5 years ago
parent
commit
a6580f5dd3
2 changed files with 23 additions and 2 deletions
  1. 4 2
      direct/src/particles/GlobalForceGroup.py
  2. 19 0
      tests/physics/test_GlobalForceGroup.py

+ 4 - 2
direct/src/particles/GlobalForceGroup.py

@@ -1,4 +1,6 @@
 from . import ForceGroup
+from direct.showbase.PhysicsManagerGlobal import physicsMgr
+
 
 class GlobalForceGroup(ForceGroup.ForceGroup):
 
@@ -6,7 +8,7 @@ class GlobalForceGroup(ForceGroup.ForceGroup):
         ForceGroup.ForceGroup.__init__(self, name)
 
     def addForce(self, force):
-        ForceGroup.ForceGroup.addForce(force)
+        ForceGroup.ForceGroup.addForce(self, force)
         if (force.isLinear() == 0):
             # Physics manager will need an angular integrator
             base.addAngularIntegrator()
@@ -16,7 +18,7 @@ class GlobalForceGroup(ForceGroup.ForceGroup):
             physicsMgr.addAngularForce(force)
 
     def removeForce(self, force):
-        ForceGroup.ForceGroup.removeForce(force)
+        ForceGroup.ForceGroup.removeForce(self, force)
         if (force.isLinear() == 1):
             physicsMgr.removeLinearForce(force)
         else:

+ 19 - 0
tests/physics/test_GlobalForceGroup.py

@@ -0,0 +1,19 @@
+from direct.particles.GlobalForceGroup import GlobalForceGroup
+from panda3d import physics
+
+
+def test_GlobalForceGroup():
+    gfg = GlobalForceGroup()
+
+    force1 = physics.LinearVectorForce((1, 0, 0))
+    force2 = physics.LinearVectorForce((0, 1, 0))
+    gfg.addForce(force1)
+    assert tuple(gfg) == (force1,)
+    gfg.addForce(force2)
+    assert tuple(gfg) == (force1, force2)
+    gfg.removeForce(force1)
+    assert tuple(gfg) == (force2,)
+    gfg.removeForce(force1)
+    assert tuple(gfg) == (force2,)
+    gfg.removeForce(force2)
+    assert tuple(gfg) == ()