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

#ifndef _Included_com_jme3_bullet_joints_Point2PointJoint
#define _Included_com_jme3_bullet_joints_Point2PointJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    setDamping
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_setDamping
  (JNIEnv *, jobject, jlong, jfloat);

/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    setImpulseClamp
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_setImpulseClamp
  (JNIEnv *, jobject, jlong, jfloat);

/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    setTau
 * Signature: (JF)V
 */
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_setTau
  (JNIEnv *, jobject, jlong, jfloat);

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

/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    getImpulseClamp
 * Signature: (J)F
 */
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_getImpulseClamp
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    getTau
 * Signature: (J)F
 */
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_getTau
  (JNIEnv *, jobject, jlong);

/*
 * Class:     com_jme3_bullet_joints_Point2PointJoint
 * Method:    createJoint
 * Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
 */
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_createJoint
  (JNIEnv *, jobject, jlong, jlong, jobject, jobject);

#ifdef __cplusplus
}
#endif
#endif
