@@ -38,8 +38,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38
38
import com .jme3 .bullet .SolverType ;
39
39
import com .jme3 .bullet .collision .Activation ;
40
40
import com .jme3 .bullet .collision .ManifoldPoints ;
41
- import com .jme3 .bullet .collision .PhysicsCollisionEvent ;
42
- import com .jme3 .bullet .collision .PhysicsCollisionListener ;
43
41
import com .jme3 .bullet .collision .PhysicsCollisionObject ;
44
42
import com .jme3 .bullet .collision .PhysicsRayTestResult ;
45
43
import com .jme3 .bullet .collision .shapes .Box2dShape ;
@@ -104,10 +102,18 @@ public class TestLibbulletjme {
104
102
// *************************************************************************
105
103
// fields
106
104
107
- /*
105
+ /**
108
106
* true if the expected collision in performDropTest() has been detected
109
107
*/
110
108
private static boolean dropAndFloorHaveCollided = false ;
109
+ /**
110
+ * dynamic rigid body in performDropTest()
111
+ */
112
+ private static PhysicsRigidBody drop ;
113
+ /**
114
+ * static rigid body in performDropTest()
115
+ */
116
+ private static PhysicsRigidBody floor ;
111
117
// *************************************************************************
112
118
// new methods exposed
113
119
@@ -1485,16 +1491,40 @@ private static void performDropTests(CollisionShape dropShape,
1485
1491
Vector3f max = new Vector3f (10f , 10f , 10f );
1486
1492
PhysicsSpace space ;
1487
1493
1488
- space = new PhysicsSpace (min , max , broadphase , solver );
1494
+ space = new PhysicsSpace (min , max , broadphase , solver ) {
1495
+ @ Override
1496
+ public void onContactProcessed (PhysicsCollisionObject a ,
1497
+ PhysicsCollisionObject b , long manifoldPointId ) {
1498
+ Assert .assertTrue (a == floor && b == drop
1499
+ || a == drop && b == floor );
1500
+ dropAndFloorHaveCollided = true ;
1501
+ }
1502
+ };
1489
1503
performDropTest (dropShape , space );
1490
1504
1491
1505
if (solver == SolverType .SI ) {
1492
- space = new PhysicsSoftSpace (min , max , broadphase );
1506
+ space = new PhysicsSoftSpace (min , max , broadphase ) {
1507
+ @ Override
1508
+ public void onContactProcessed (PhysicsCollisionObject a ,
1509
+ PhysicsCollisionObject b , long manifoldPointId ) {
1510
+ Assert .assertTrue (a == floor && b == drop
1511
+ || a == drop && b == floor );
1512
+ dropAndFloorHaveCollided = true ;
1513
+ }
1514
+ };
1493
1515
performDropTest (dropShape , space );
1494
1516
}
1495
1517
1496
1518
if (solver != SolverType .NNCG ) {
1497
- space = new MultiBodySpace (min , max , broadphase , solver );
1519
+ space = new MultiBodySpace (min , max , broadphase , solver ) {
1520
+ @ Override
1521
+ public void onContactProcessed (PhysicsCollisionObject a ,
1522
+ PhysicsCollisionObject b , long manifoldPointId ) {
1523
+ Assert .assertTrue (a == floor && b == drop
1524
+ || a == drop && b == floor );
1525
+ dropAndFloorHaveCollided = true ;
1526
+ }
1527
+ };
1498
1528
performDropTest (dropShape , space );
1499
1529
}
1500
1530
@@ -1565,26 +1595,14 @@ private static void performDropTest(CollisionShape dropShape,
1565
1595
1566
1596
if (space instanceof PhysicsSpace ) {
1567
1597
dropAndFloorHaveCollided = false ;
1568
- PhysicsCollisionListener listener = new PhysicsCollisionListener () {
1569
- @ Override
1570
- public void collision (PhysicsCollisionEvent event ) {
1571
- PhysicsCollisionObject a = event .getObjectA ();
1572
- PhysicsCollisionObject b = event .getObjectB ();
1573
- Assert .assertTrue (a == floorBody && b == dropBody
1574
- || a == dropBody && b == floorBody );
1575
- dropAndFloorHaveCollided = true ;
1576
- }
1577
- };
1578
- space .addCollisionListener (listener );
1598
+ drop = dropBody ;
1599
+ floor = floorBody ;
1579
1600
}
1580
1601
/*
1581
1602
* 50 iterations with a 20-msec timestep
1582
1603
*/
1583
1604
for (int i = 0 ; i < 50 ; ++i ) {
1584
- space .update (0.02f , 0 );
1585
- if (space instanceof PhysicsSpace ) {
1586
- space .distributeEvents ();
1587
- }
1605
+ space .update (0.02f , 0 , false , true , false );
1588
1606
//System.out.printf("location = %s%n",
1589
1607
// dropBody.getPhysicsLocation(null));
1590
1608
}
@@ -1806,8 +1824,7 @@ private static void verifyPhysicsSpaceDefaults(PhysicsSpace space) {
1806
1824
Assert .assertEquals (0f , info .globalCfm (), 0f );
1807
1825
Assert .assertEquals (128 , info .minBatch ());
1808
1826
1809
- String className = space .getClass ().getSimpleName ();
1810
- int expectedMode = (className .equals ("MultiBodySpace" )) ? 0x114 : 0x104 ;
1827
+ int expectedMode = (space instanceof MultiBodySpace ) ? 0x114 : 0x104 ;
1811
1828
Assert .assertEquals (expectedMode , info .mode ());
1812
1829
1813
1830
Assert .assertEquals (10 , info .numIterations ());
0 commit comments