- native bullet: add some checks to physics space and physics vehicle
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8410 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
0a11431b21
commit
20c5994db4
@ -390,6 +390,9 @@ extern "C" {
|
|||||||
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
|
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
|
||||||
(JNIEnv * env, jobject object, jlong spaceId) {
|
(JNIEnv * env, jobject object, jlong spaceId) {
|
||||||
jmePhysicsSpace* space = (jmePhysicsSpace*) spaceId;
|
jmePhysicsSpace* space = (jmePhysicsSpace*) spaceId;
|
||||||
|
if (space == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
delete(space);
|
delete(space);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ extern "C" {
|
|||||||
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
|
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
|
||||||
(JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) {
|
(JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) {
|
||||||
//btRigidBody* body = (btRigidBody*) bodyId;
|
//btRigidBody* body = (btRigidBody*) bodyId;
|
||||||
|
jmeClasses::initJavaClasses(env);
|
||||||
jmePhysicsSpace *space = (jmePhysicsSpace *)spaceId;
|
jmePhysicsSpace *space = (jmePhysicsSpace *)spaceId;
|
||||||
if (space == NULL) {
|
if (space == NULL) {
|
||||||
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
||||||
@ -84,6 +85,7 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
|
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
|
||||||
(JNIEnv *env, jobject object, jlong objectId, jlong casterId) {
|
(JNIEnv *env, jobject object, jlong objectId, jlong casterId) {
|
||||||
|
jmeClasses::initJavaClasses(env);
|
||||||
btRigidBody* body = (btRigidBody*) objectId;
|
btRigidBody* body = (btRigidBody*) objectId;
|
||||||
if (body == NULL) {
|
if (body == NULL) {
|
||||||
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
||||||
@ -92,6 +94,11 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
body->setActivationState(DISABLE_DEACTIVATION);
|
body->setActivationState(DISABLE_DEACTIVATION);
|
||||||
btVehicleRaycaster* caster = (btDefaultVehicleRaycaster*) casterId;
|
btVehicleRaycaster* caster = (btDefaultVehicleRaycaster*) casterId;
|
||||||
|
if (caster == NULL) {
|
||||||
|
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
||||||
|
env->ThrowNew(newExc, "The native object does not exist.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
btRaycastVehicle::btVehicleTuning tuning;
|
btRaycastVehicle::btVehicleTuning tuning;
|
||||||
btRaycastVehicle* vehicle = new btRaycastVehicle(tuning, body, caster);
|
btRaycastVehicle* vehicle = new btRaycastVehicle(tuning, body, caster);
|
||||||
return (long) vehicle;
|
return (long) vehicle;
|
||||||
@ -250,6 +257,11 @@ extern "C" {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
delete(vehicle);
|
delete(vehicle);
|
||||||
|
if (rayCaster == NULL) {
|
||||||
|
jclass newExc = env->FindClass("java/lang/NullPointerException");
|
||||||
|
env->ThrowNew(newExc, "The native object does not exist.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
delete(rayCaster);
|
delete(rayCaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user