1 /* 2 * Copyright (c) 2009-2010 jMonkeyEngine 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 /** 34 * Author: Normen Hansen 35 */ 36 #include "com_jme3_bullet_objects_infos_RigidBodyMotionState.h" 37 #include "jmeBulletUtil.h" 38 #include "jmeMotionState.h" 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 /* 45 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 46 * Method: createMotionState 47 * Signature: ()J 48 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_createMotionState(JNIEnv * env,jobject object)49 JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_createMotionState 50 (JNIEnv *env, jobject object) { 51 jmeClasses::initJavaClasses(env); 52 jmeMotionState* motionState = new jmeMotionState(); 53 return reinterpret_cast<jlong>(motionState); 54 } 55 56 /* 57 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 58 * Method: applyTransform 59 * Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Quaternion;)Z 60 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_applyTransform(JNIEnv * env,jobject object,jlong stateId,jobject location,jobject rotation)61 JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_applyTransform 62 (JNIEnv *env, jobject object, jlong stateId, jobject location, jobject rotation) { 63 jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId); 64 if (motionState == NULL) { 65 jclass newExc = env->FindClass("java/lang/NullPointerException"); 66 env->ThrowNew(newExc, "The native object does not exist."); 67 return false; 68 } 69 return motionState->applyTransform(env, location, rotation); 70 } 71 72 /* 73 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 74 * Method: getWorldLocation 75 * Signature: (JLcom/jme3/math/Vector3f;)V 76 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldLocation(JNIEnv * env,jobject object,jlong stateId,jobject value)77 JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldLocation 78 (JNIEnv *env, jobject object, jlong stateId, jobject value) { 79 jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId); 80 if (motionState == NULL) { 81 jclass newExc = env->FindClass("java/lang/NullPointerException"); 82 env->ThrowNew(newExc, "The native object does not exist."); 83 return; 84 } 85 jmeBulletUtil::convert(env, &motionState->worldTransform.getOrigin(), value); 86 } 87 88 /* 89 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 90 * Method: getWorldRotation 91 * Signature: (JLcom/jme3/math/Matrix3f;)V 92 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotation(JNIEnv * env,jobject object,jlong stateId,jobject value)93 JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotation 94 (JNIEnv *env, jobject object, jlong stateId, jobject value) { 95 jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId); 96 if (motionState == NULL) { 97 jclass newExc = env->FindClass("java/lang/NullPointerException"); 98 env->ThrowNew(newExc, "The native object does not exist."); 99 return; 100 } 101 jmeBulletUtil::convert(env, &motionState->worldTransform.getBasis(), value); 102 } 103 104 /* 105 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 106 * Method: getWorldRotationQuat 107 * Signature: (JLcom/jme3/math/Quaternion;)V 108 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotationQuat(JNIEnv * env,jobject object,jlong stateId,jobject value)109 JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotationQuat 110 (JNIEnv *env, jobject object, jlong stateId, jobject value) { 111 jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId); 112 if (motionState == NULL) { 113 jclass newExc = env->FindClass("java/lang/NullPointerException"); 114 env->ThrowNew(newExc, "The native object does not exist."); 115 return; 116 } 117 jmeBulletUtil::convertQuat(env, &motionState->worldTransform.getBasis(), value); 118 } 119 120 /* 121 * Class: com_jme3_bullet_objects_infos_RigidBodyMotionState 122 * Method: finalizeNative 123 * Signature: (J)V 124 */ Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_finalizeNative(JNIEnv * env,jobject object,jlong stateId)125 JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_finalizeNative 126 (JNIEnv *env, jobject object, jlong stateId) { 127 jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId); 128 if (motionState == NULL) { 129 jclass newExc = env->FindClass("java/lang/NullPointerException"); 130 env->ThrowNew(newExc, "The native object does not exist."); 131 return; 132 } 133 delete(motionState); 134 } 135 136 #ifdef __cplusplus 137 } 138 #endif 139