Ver Fonte

CollisionShape: add isNonMoving() and test buildscript

sgold há 6 anos atrás
pai
commit
3482904c76

+ 19 - 0
jme3-bullet-native/src/native/cpp/com_jme3_bullet_collision_shapes_CollisionShape.cpp

@@ -105,6 +105,25 @@ extern "C" {
         }
         delete(shape);
     }
+
+    /*
+     * Class:     com_jme3_bullet_collision_shapes_CollisionShape
+     * Method:    isNonMoving
+     * Signature: (J)Z
+     */
+    JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_isNonMoving
+    (JNIEnv *env, jobject object, jlong shapeId) {
+        btCollisionShape *pShape
+                = reinterpret_cast<btCollisionShape *> (shapeId);
+        if (pShape == NULL) {
+            jclass newExc = env->FindClass("java/lang/NullPointerException");
+            env->ThrowNew(newExc, "The native object does not exist.");
+            return false;
+        }
+
+        return pShape->isNonMoving();
+    }
+
 #ifdef __cplusplus
 }
 #endif

+ 17 - 4
jme3-bullet/src/main/java/com/jme3/bullet/collision/shapes/CollisionShape.java

@@ -87,7 +87,7 @@ public abstract class CollisionShape implements Savable {
 ////            objectId.calculateLocalInertia(mass, vector);
 ////        }
 //    }
-//    
+//
 //    private native void calculateLocalInertia(long objectId, long shapeId, float mass);
 
     /**
@@ -129,6 +129,19 @@ public abstract class CollisionShape implements Savable {
         return scale;
     }
 
+    /**
+     * Test whether this shape can be applied to a dynamic rigid body. The only
+     * non-moving shapes are the heightfield, mesh, and plane shapes.
+     *
+     * @return true if non-moving, false otherwise
+     */
+    public boolean isNonMoving() {
+        boolean result = isNonMoving(objectId);
+        return result;
+    }
+
+    native private boolean isNonMoving(long objectId);
+
     /**
      * Read the collision margin for this shape.
      *
@@ -137,7 +150,7 @@ public abstract class CollisionShape implements Savable {
     public float getMargin() {
         return getMargin(objectId);
     }
-    
+
     private native float getMargin(long objectId);
 
     /**
@@ -177,9 +190,9 @@ public abstract class CollisionShape implements Savable {
         setMargin(objectId, margin);
         this.margin = margin;
     }
-    
+
     private native void setLocalScaling(long obectId, Vector3f scale);
-    
+
     private native void setMargin(long objectId, float margin);
 
     /**