|
@@ -33,7 +33,7 @@
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Author: Normen Hansen
|
|
|
|
|
|
+ * Author: Normen Hansen,Empire Phoenix, Lutherion
|
|
*/
|
|
*/
|
|
//public fields
|
|
//public fields
|
|
jclass jmeClasses::PhysicsSpace;
|
|
jclass jmeClasses::PhysicsSpace;
|
|
@@ -81,6 +81,16 @@ jfieldID jmeClasses::Matrix3f_m22;
|
|
jclass jmeClasses::DebugMeshCallback;
|
|
jclass jmeClasses::DebugMeshCallback;
|
|
jmethodID jmeClasses::DebugMeshCallback_addVector;
|
|
jmethodID jmeClasses::DebugMeshCallback_addVector;
|
|
|
|
|
|
|
|
+jclass jmeClasses::PhysicsRay_Class;
|
|
|
|
+jmethodID jmeClasses::PhysicsRay_newSingleResult;
|
|
|
|
+
|
|
|
|
+jfieldID jmeClasses::PhysicsRay_normalInWorldSpace;
|
|
|
|
+jfieldID jmeClasses::PhysicsRay_hitfraction;
|
|
|
|
+jfieldID jmeClasses::PhysicsRay_collisionObject;
|
|
|
|
+
|
|
|
|
+jclass jmeClasses::PhysicsRay_listresult;
|
|
|
|
+jmethodID jmeClasses::PhysicsRay_addmethod;
|
|
|
|
+
|
|
//private fields
|
|
//private fields
|
|
//JNIEnv* jmeClasses::env;
|
|
//JNIEnv* jmeClasses::env;
|
|
JavaVM* jmeClasses::vm;
|
|
JavaVM* jmeClasses::vm;
|
|
@@ -103,7 +113,7 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
// jmeClasses::env = env;
|
|
// jmeClasses::env = env;
|
|
env->GetJavaVM(&vm);
|
|
env->GetJavaVM(&vm);
|
|
|
|
|
|
- PhysicsSpace = env->FindClass("com/jme3/bullet/PhysicsSpace");
|
|
|
|
|
|
+ PhysicsSpace = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/PhysicsSpace"));
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
@@ -117,7 +127,7 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- PhysicsGhostObject = env->FindClass("com/jme3/bullet/objects/PhysicsGhostObject");
|
|
|
|
|
|
+ PhysicsGhostObject = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/objects/PhysicsGhostObject"));
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
@@ -128,7 +138,7 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- Vector3f = env->FindClass("com/jme3/math/Vector3f");
|
|
|
|
|
|
+ Vector3f = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Vector3f"));
|
|
Vector3f_set = env->GetMethodID(Vector3f, "set", "(FFF)Lcom/jme3/math/Vector3f;");
|
|
Vector3f_set = env->GetMethodID(Vector3f, "set", "(FFF)Lcom/jme3/math/Vector3f;");
|
|
Vector3f_toArray = env->GetMethodID(Vector3f, "toArray", "([F)[F");
|
|
Vector3f_toArray = env->GetMethodID(Vector3f, "toArray", "([F)[F");
|
|
Vector3f_getX = env->GetMethodID(Vector3f, "getX", "()F");
|
|
Vector3f_getX = env->GetMethodID(Vector3f, "getX", "()F");
|
|
@@ -138,7 +148,7 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
Vector3f_y = env->GetFieldID(Vector3f, "y", "F");
|
|
Vector3f_y = env->GetFieldID(Vector3f, "y", "F");
|
|
Vector3f_z = env->GetFieldID(Vector3f, "z", "F");
|
|
Vector3f_z = env->GetFieldID(Vector3f, "z", "F");
|
|
|
|
|
|
- Quaternion = env->FindClass("com/jme3/math/Quaternion");
|
|
|
|
|
|
+ Quaternion = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Quaternion"));
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
@@ -153,7 +163,7 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
Quaternion_z = env->GetFieldID(Quaternion, "z", "F");
|
|
Quaternion_z = env->GetFieldID(Quaternion, "z", "F");
|
|
Quaternion_w = env->GetFieldID(Quaternion, "w", "F");
|
|
Quaternion_w = env->GetFieldID(Quaternion, "w", "F");
|
|
|
|
|
|
- Matrix3f = env->FindClass("com/jme3/math/Matrix3f");
|
|
|
|
|
|
+ Matrix3f = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Matrix3f"));
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
@@ -174,17 +184,62 @@ void jmeClasses::initJavaClasses(JNIEnv* env) {
|
|
Matrix3f_m21 = env->GetFieldID(Matrix3f, "m21", "F");
|
|
Matrix3f_m21 = env->GetFieldID(Matrix3f, "m21", "F");
|
|
Matrix3f_m22 = env->GetFieldID(Matrix3f, "m22", "F");
|
|
Matrix3f_m22 = env->GetFieldID(Matrix3f, "m22", "F");
|
|
|
|
|
|
- DebugMeshCallback = env->FindClass("com/jme3/bullet/util/DebugMeshCallback");
|
|
|
|
|
|
+ DebugMeshCallback = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/util/DebugMeshCallback"));
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
DebugMeshCallback_addVector = env->GetMethodID(DebugMeshCallback, "addVector", "(FFFII)V");
|
|
DebugMeshCallback_addVector = env->GetMethodID(DebugMeshCallback, "addVector", "(FFFII)V");
|
|
if (env->ExceptionCheck()) {
|
|
if (env->ExceptionCheck()) {
|
|
env->Throw(env->ExceptionOccurred());
|
|
env->Throw(env->ExceptionOccurred());
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ PhysicsRay_Class = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/collision/PhysicsRayTestResult"));
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PhysicsRay_newSingleResult = env->GetMethodID(PhysicsRay_Class,"<init>","()V");
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PhysicsRay_normalInWorldSpace = env->GetFieldID(PhysicsRay_Class,"hitNormalLocal","Lcom/jme3/math/Vector3f;");
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ PhysicsRay_hitfraction = env->GetFieldID(PhysicsRay_Class,"hitFraction","F");
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ PhysicsRay_collisionObject = env->GetFieldID(PhysicsRay_Class,"collisionObject","Lcom/jme3/bullet/collision/PhysicsCollisionObject;");
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PhysicsRay_listresult = env->FindClass("java/util/List");
|
|
|
|
+ PhysicsRay_listresult = (jclass)env->NewGlobalRef(PhysicsRay_listresult);
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PhysicsRay_addmethod = env->GetMethodID(PhysicsRay_listresult,"add","(Ljava/lang/Object;)Z");
|
|
|
|
+ if (env->ExceptionCheck()) {
|
|
|
|
+ env->Throw(env->ExceptionOccurred());
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
void jmeClasses::throwNPE(JNIEnv* env) {
|
|
void jmeClasses::throwNPE(JNIEnv* env) {
|