/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_SixDofJoint */

#ifndef _Included_com_jme3_bullet_joints_SixDofJoint
#define _Included_com_jme3_bullet_joints_SixDofJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    getRotationalLimitMotor
 * Signature: (JI)J
 */
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_SixDofJoint_getRotationalLimitMotor
  (JNIEnv *, jobject, jlong, jint);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    getTranslationalLimitMotor
 * Signature: (J)J
 */
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_SixDofJoint_getTranslationalLimitMotor
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    setLinearUpperLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofJoint_setLinearUpperLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    setLinearLowerLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofJoint_setLinearLowerLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    setAngularUpperLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofJoint_setAngularUpperLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    setAngularLowerLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofJoint_setAngularLowerLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_SixDofJoint
 * Method:    createJoint
 * Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;Z)J
 */
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_SixDofJoint_createJoint
  (JNIEnv *, jobject, jlong, jlong, jobject, jobject, jobject, jobject, jboolean);

#ifdef __cplusplus
}
#endif
#endif
