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

#ifndef _Included_com_jme3_bullet_joints_motors_TranslationalLimitMotor
#define _Included_com_jme3_bullet_joints_motors_TranslationalLimitMotor
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getLowerLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getLowerLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setLowerLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setLowerLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getUpperLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getUpperLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setUpperLimit
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setUpperLimit
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getAccumulatedImpulse
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getAccumulatedImpulse
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setAccumulatedImpulse
 * Signature: (JLcom/jme3/math/Vector3f;)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setAccumulatedImpulse
  (JNIEnv *, jobject, jlong, jobject);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getLimitSoftness
 * Signature: (J)F
 */
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getLimitSoftness
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setLimitSoftness
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setLimitSoftness
  (JNIEnv *, jobject, jlong, jfloat);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getDamping
 * Signature: (J)F
 */
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getDamping
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setDamping
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setDamping
  (JNIEnv *, jobject, jlong, jfloat);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    getRestitution
 * Signature: (J)F
 */
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getRestitution
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_motors_TranslationalLimitMotor
 * Method:    setRestitution
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setRestitution
  (JNIEnv *, jobject, jlong, jfloat);

#ifdef __cplusplus
}
#endif
#endif
