- big refactoring of engine build and cleaning of sources, totally breaking SDK build for now

- separate jar files for engine components
- resolve dependencies between code parts
- remove Nifty dependency from Cinematics
- remove Physics dependency from TerrainGrid
- add public accessors to Natives Extraction
- remove RenderHint serialization from networking

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8838 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 13 years ago
parent 30eefdfe43
commit 1cc957e7e9
  1. 72
      engine/src/android/nbproject/project.xml
  2. 50
      engine/src/bullet/com/jme3/bullet/collision/shapes/infos/ChildCollisionShape.java
  3. 208
      engine/src/bullet/com/jme3/bullet/control/CharacterControl.java
  4. 178
      engine/src/bullet/com/jme3/bullet/control/GhostControl.java
  5. 873
      engine/src/bullet/com/jme3/bullet/control/KinematicRagdollControl.java
  6. 28
      engine/src/bullet/com/jme3/bullet/control/PhysicsControl.java
  7. 266
      engine/src/bullet/com/jme3/bullet/control/RigidBodyControl.java
  8. 270
      engine/src/bullet/com/jme3/bullet/control/VehicleControl.java
  9. 99
      engine/src/bullet/com/jme3/bullet/control/ragdoll/HumanoidRagdollPreset.java
  10. 106
      engine/src/bullet/com/jme3/bullet/control/ragdoll/RagdollPreset.java
  11. 273
      engine/src/bullet/com/jme3/bullet/control/ragdoll/RagdollUtils.java
  12. 259
      engine/src/bullet/native/android/Android.mk
  13. 2
      engine/src/bullet/native/android/Application.mk
  14. 273
      engine/src/bullet/native/android/jmePhysicsSpace.cpp
  15. 310
      engine/src/bullet/native/build.xml
  16. 169
      engine/src/bullet/native/bullet-native-build.txt
  17. 35
      engine/src/bullet/native/bullet.properties
  18. 450
      engine/src/bullet/native/com_jme3_bullet_PhysicsSpace.cpp
  19. 165
      engine/src/bullet/native/com_jme3_bullet_PhysicsSpace.h
  20. 308
      engine/src/bullet/native/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp
  21. 173
      engine/src/bullet/native/com_jme3_bullet_collision_PhysicsCollisionEvent.h
  22. 148
      engine/src/bullet/native/com_jme3_bullet_collision_PhysicsCollisionObject.cpp
  23. 87
      engine/src/bullet/native/com_jme3_bullet_collision_PhysicsCollisionObject.h
  24. 59
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp
  25. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_BoxCollisionShape.h
  26. 68
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp
  27. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h
  28. 110
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CollisionShape.cpp
  29. 45
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CollisionShape.h
  30. 107
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp
  31. 37
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CompoundCollisionShape.h
  32. 68
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp
  33. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_ConeCollisionShape.h
  34. 70
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp
  35. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_CylinderCollisionShape.h
  36. 70
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp
  37. 29
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_GImpactCollisionShape.h
  38. 59
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp
  39. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h
  40. 69
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp
  41. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_HullCollisionShape.h
  42. 70
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp
  43. 29
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_MeshCollisionShape.h
  44. 60
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp
  45. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_PlaneCollisionShape.h
  46. 110
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp
  47. 45
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_SimplexCollisionShape.h
  48. 57
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp
  49. 21
      engine/src/bullet/native/com_jme3_bullet_collision_shapes_SphereCollisionShape.h
  50. 100
      engine/src/bullet/native/com_jme3_bullet_joints_ConeJoint.cpp
  51. 37
      engine/src/bullet/native/com_jme3_bullet_joints_ConeJoint.h
  52. 226
      engine/src/bullet/native/com_jme3_bullet_joints_HingeJoint.cpp
  53. 101
      engine/src/bullet/native/com_jme3_bullet_joints_HingeJoint.h
  54. 61
      engine/src/bullet/native/com_jme3_bullet_joints_PhysicsJoint.cpp
  55. 29
      engine/src/bullet/native/com_jme3_bullet_joints_PhysicsJoint.h
  56. 162
      engine/src/bullet/native/com_jme3_bullet_joints_Point2PointJoint.cpp
  57. 69
      engine/src/bullet/native/com_jme3_bullet_joints_Point2PointJoint.h
  58. 170
      engine/src/bullet/native/com_jme3_bullet_joints_SixDofJoint.cpp
  59. 69
      engine/src/bullet/native/com_jme3_bullet_joints_SixDofJoint.h
  60. 94
      engine/src/bullet/native/com_jme3_bullet_joints_SixDofSpringJoint.cpp
  61. 61
      engine/src/bullet/native/com_jme3_bullet_joints_SixDofSpringJoint.h
  62. 963
      engine/src/bullet/native/com_jme3_bullet_joints_SliderJoint.cpp
  63. 469
      engine/src/bullet/native/com_jme3_bullet_joints_SliderJoint.h
  64. 365
      engine/src/bullet/native/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp
  65. 173
      engine/src/bullet/native/com_jme3_bullet_joints_motors_RotationalLimitMotor.h
  66. 237
      engine/src/bullet/native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp
  67. 109
      engine/src/bullet/native/com_jme3_bullet_joints_motors_TranslationalLimitMotor.h
  68. 388
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsCharacter.cpp
  69. 215
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsCharacter.h
  70. 313
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsGhostObject.cpp
  71. 167
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsGhostObject.h
  72. 849
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsRigidBody.cpp
  73. 415
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsRigidBody.h
  74. 272
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsVehicle.cpp
  75. 143
      engine/src/bullet/native/com_jme3_bullet_objects_PhysicsVehicle.h
  76. 147
      engine/src/bullet/native/com_jme3_bullet_objects_VehicleWheel.cpp
  77. 61
      engine/src/bullet/native/com_jme3_bullet_objects_VehicleWheel.h
  78. 138
      engine/src/bullet/native/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp
  79. 61
      engine/src/bullet/native/com_jme3_bullet_objects_infos_RigidBodyMotionState.h
  80. 152
      engine/src/bullet/native/com_jme3_bullet_util_DebugShapeFactory.cpp
  81. 21
      engine/src/bullet/native/com_jme3_bullet_util_DebugShapeFactory.h
  82. 59
      engine/src/bullet/native/com_jme3_bullet_util_NativeMeshUtil.cpp
  83. 21
      engine/src/bullet/native/com_jme3_bullet_util_NativeMeshUtil.h
  84. 327
      engine/src/bullet/native/jmeBulletUtil.cpp
  85. 61
      engine/src/bullet/native/jmeBulletUtil.h
  86. 250
      engine/src/bullet/native/jmeClasses.cpp
  87. 99
      engine/src/bullet/native/jmeClasses.h
  88. 89
      engine/src/bullet/native/jmeMotionState.cpp
  89. 57
      engine/src/bullet/native/jmeMotionState.h
  90. 273
      engine/src/bullet/native/jmePhysicsSpace.cpp
  91. 76
      engine/src/bullet/native/jmePhysicsSpace.h
  92. 6
      engine/src/bullet/native/nativeclasses.txt
  93. 68
      engine/src/bullet/nbproject/project.xml
  94. 131
      engine/src/desktop/com/jme3/asset/AssetCache.java
  95. 22
      engine/src/desktop/com/jme3/asset/Desktop.cfg
  96. 421
      engine/src/desktop/com/jme3/asset/DesktopAssetManager.java
  97. 209
      engine/src/desktop/com/jme3/asset/ImplHandler.java
  98. 103
      engine/src/desktop/com/jme3/asset/ThreadingManager.java
  99. 122
      engine/src/desktop/com/jme3/asset/plugins/ClasspathLocator.java
  100. 113
      engine/src/desktop/com/jme3/asset/plugins/FileLocator.java
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<name>jMonkeyEngine3 - Android</name>
</general-data>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/2">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>jMonkeyEngine3 - Android</name>
<properties>
<property name="ant.script">../../build.xml</property>
</properties>
<folders>
<source-folder>
<label>Source Packages</label>
<type>java</type>
<location>.</location>
<encoding>MacRoman</encoding>
</source-folder>
</folders>
<ide-actions>
<action name="build">
<script>${ant.script}</script>
<target>jar</target>
</action>
<action name="clean">
<script>${ant.script}</script>
<target>clean</target>
</action>
<action name="javadoc">
<script>${ant.script}</script>
<target>javadoc</target>
</action>
<action name="run">
<script>${ant.script}</script>
<target>run</target>
</action>
<action name="rebuild">
<script>${ant.script}</script>
<target>clean</target>
<target>jar</target>
</action>
</ide-actions>
<view>
<items>
<source-folder style="packages">
<label>Source Packages</label>
<location>.</location>
</source-folder>
<source-file>
<location>${ant.script}</location>
</source-file>
</items>
<context-menu>
<ide-action name="build"/>
<ide-action name="rebuild"/>
<ide-action name="clean"/>
<ide-action name="javadoc"/>
<ide-action name="run"/>
</context-menu>
</view>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1">
<compilation-unit>
<package-root>.</package-root>
<classpath mode="compile">../../lib/android/android.jar:../../dist/jMonkeyEngine3.jar</classpath>
<source-level>1.5</source-level>
</compilation-unit>
</java-data>
</configuration>
</project>

@ -1,50 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.collision.shapes.infos;
import com.jme3.bullet.collision.shapes.BoxCollisionShape;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.export.Savable;
import com.jme3.math.Matrix3f;
import com.jme3.math.Vector3f;
import java.io.IOException;
/**
*
* @author normenhansen
*/
public class ChildCollisionShape implements Savable {
public Vector3f location;
public Matrix3f rotation;
public CollisionShape shape;
public ChildCollisionShape() {
}
public ChildCollisionShape(Vector3f location, Matrix3f rotation, CollisionShape shape) {
this.location = location;
this.rotation = rotation;
this.shape = shape;
}
public void write(JmeExporter ex) throws IOException {
OutputCapsule capsule = ex.getCapsule(this);
capsule.write(location, "location", new Vector3f());
capsule.write(rotation, "rotation", new Matrix3f());
capsule.write(shape, "shape", new BoxCollisionShape(new Vector3f(1, 1, 1)));
}
public void read(JmeImporter im) throws IOException {
InputCapsule capsule = im.getCapsule(this);
location = (Vector3f) capsule.readSavable("location", new Vector3f());
rotation = (Matrix3f) capsule.readSavable("rotation", new Matrix3f());
shape = (CollisionShape) capsule.readSavable("shape", new BoxCollisionShape(new Vector3f(1, 1, 1)));
}
}

@ -1,208 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.objects.PhysicsCharacter;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
import java.io.IOException;
/**
*
* @author normenhansen
*/
public class CharacterControl extends PhysicsCharacter implements PhysicsControl {
protected Spatial spatial;
protected boolean enabled = true;
protected boolean added = false;
protected PhysicsSpace space = null;
protected Vector3f viewDirection = new Vector3f(Vector3f.UNIT_Z);
protected boolean useViewDirection = true;
protected boolean applyLocal = false;
public CharacterControl() {
}
public CharacterControl(CollisionShape shape, float stepHeight) {
super(shape, stepHeight);
}
public boolean isApplyPhysicsLocal() {
return applyLocal;
}
/**
* When set to true, the physics coordinates will be applied to the local
* translation of the Spatial
* @param applyPhysicsLocal
*/
public void setApplyPhysicsLocal(boolean applyPhysicsLocal) {
applyLocal = applyPhysicsLocal;
}
private Vector3f getSpatialTranslation() {
if (applyLocal) {
return spatial.getLocalTranslation();
}
return spatial.getWorldTranslation();
}
public Control cloneForSpatial(Spatial spatial) {
CharacterControl control = new CharacterControl(collisionShape, stepHeight);
control.setCcdMotionThreshold(getCcdMotionThreshold());
control.setCcdSweptSphereRadius(getCcdSweptSphereRadius());
control.setCollideWithGroups(getCollideWithGroups());
control.setCollisionGroup(getCollisionGroup());
control.setFallSpeed(getFallSpeed());
control.setGravity(getGravity());
control.setJumpSpeed(getJumpSpeed());
control.setMaxSlope(getMaxSlope());
control.setPhysicsLocation(getPhysicsLocation());
control.setUpAxis(getUpAxis());
control.setApplyPhysicsLocal(isApplyPhysicsLocal());
control.setSpatial(spatial);
return control;
}
public void setSpatial(Spatial spatial) {
if (getUserObject() == null || getUserObject() == this.spatial) {
setUserObject(spatial);
}
this.spatial = spatial;
if (spatial == null) {
if (getUserObject() == spatial) {
setUserObject(null);
}
return;
}
setPhysicsLocation(getSpatialTranslation());
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (space != null) {
if (enabled && !added) {
if (spatial != null) {
warp(getSpatialTranslation());
}
space.addCollisionObject(this);
added = true;
} else if (!enabled && added) {
space.removeCollisionObject(this);
added = false;
}
}
}
public boolean isEnabled() {
return enabled;
}
public void setViewDirection(Vector3f vec) {
viewDirection.set(vec);
}
public Vector3f getViewDirection() {
return viewDirection;
}
public boolean isUseViewDirection() {
return useViewDirection;
}
public void setUseViewDirection(boolean viewDirectionEnabled) {
this.useViewDirection = viewDirectionEnabled;
}
public void update(float tpf) {
if (enabled && spatial != null) {
Quaternion localRotationQuat = spatial.getLocalRotation();
Vector3f localLocation = spatial.getLocalTranslation();
if (!applyLocal && spatial.getParent() != null) {
getPhysicsLocation(localLocation);
localLocation.subtractLocal(spatial.getParent().getWorldTranslation());
localLocation.divideLocal(spatial.getParent().getWorldScale());
tmp_inverseWorldRotation.set(spatial.getParent().getWorldRotation()).inverseLocal().multLocal(localLocation);
spatial.setLocalTranslation(localLocation);
if (useViewDirection) {
localRotationQuat.lookAt(viewDirection, Vector3f.UNIT_Y);
spatial.setLocalRotation(localRotationQuat);
}
} else {
spatial.setLocalTranslation(getPhysicsLocation());
localRotationQuat.lookAt(viewDirection, Vector3f.UNIT_Y);
spatial.setLocalRotation(localRotationQuat);
}
}
}
public void render(RenderManager rm, ViewPort vp) {
if (enabled && space != null && space.getDebugManager() != null) {
if (debugShape == null) {
attachDebugShape(space.getDebugManager());
}
debugShape.setLocalTranslation(getPhysicsLocation());
debugShape.updateLogicalState(0);
debugShape.updateGeometricState();
rm.renderScene(debugShape, vp);
}
}
public void setPhysicsSpace(PhysicsSpace space) {
if (space == null) {
if (this.space != null) {
this.space.removeCollisionObject(this);
added = false;
}
} else {
if (this.space == space) {
return;
}
space.addCollisionObject(this);
added = true;
}
this.space = space;
}
public PhysicsSpace getPhysicsSpace() {
return space;
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
OutputCapsule oc = ex.getCapsule(this);
oc.write(enabled, "enabled", true);
oc.write(applyLocal, "applyLocalPhysics", false);
oc.write(useViewDirection, "viewDirectionEnabled", true);
oc.write(viewDirection, "viewDirection", new Vector3f(Vector3f.UNIT_Z));
oc.write(spatial, "spatial", null);
}
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
InputCapsule ic = im.getCapsule(this);
enabled = ic.readBoolean("enabled", true);
useViewDirection = ic.readBoolean("viewDirectionEnabled", true);
viewDirection = (Vector3f) ic.readSavable("viewDirection", new Vector3f(Vector3f.UNIT_Z));
applyLocal = ic.readBoolean("applyLocalPhysics", false);
spatial = (Spatial) ic.readSavable("spatial", null);
setUserObject(spatial);
}
}

@ -1,178 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.objects.PhysicsGhostObject;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
import java.io.IOException;
/**
* A GhostControl moves with the spatial it is attached to and can be used to check
* overlaps with other physics objects (e.g. aggro radius).
* @author normenhansen
*/
public class GhostControl extends PhysicsGhostObject implements PhysicsControl {
protected Spatial spatial;
protected boolean enabled = true;
protected boolean added = false;
protected PhysicsSpace space = null;
protected boolean applyLocal = false;
public GhostControl() {
}
public GhostControl(CollisionShape shape) {
super(shape);
}
public boolean isApplyPhysicsLocal() {
return applyLocal;
}
/**
* When set to true, the physics coordinates will be applied to the local
* translation of the Spatial
* @param applyPhysicsLocal
*/
public void setApplyPhysicsLocal(boolean applyPhysicsLocal) {
applyLocal = applyPhysicsLocal;
}
private Vector3f getSpatialTranslation() {
if (applyLocal) {
return spatial.getLocalTranslation();
}
return spatial.getWorldTranslation();
}
private Quaternion getSpatialRotation() {
if (applyLocal) {
return spatial.getLocalRotation();
}
return spatial.getWorldRotation();
}
public Control cloneForSpatial(Spatial spatial) {
GhostControl control = new GhostControl(collisionShape);
control.setCcdMotionThreshold(getCcdMotionThreshold());
control.setCcdSweptSphereRadius(getCcdSweptSphereRadius());
control.setCollideWithGroups(getCollideWithGroups());
control.setCollisionGroup(getCollisionGroup());
control.setPhysicsLocation(getPhysicsLocation());
control.setPhysicsRotation(getPhysicsRotationMatrix());
control.setApplyPhysicsLocal(isApplyPhysicsLocal());
control.setSpatial(spatial);
return control;
}
public void setSpatial(Spatial spatial) {
if (getUserObject() == null || getUserObject() == this.spatial) {
setUserObject(spatial);
}
this.spatial = spatial;
if (spatial == null) {
if (getUserObject() == spatial) {
setUserObject(null);
}
return;
}
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (space != null) {
if (enabled && !added) {
if (spatial != null) {
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
space.addCollisionObject(this);
added = true;
} else if (!enabled && added) {
space.removeCollisionObject(this);
added = false;
}
}
}
public boolean isEnabled() {
return enabled;
}
public void update(float tpf) {
if (!enabled) {
return;
}
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
public void render(RenderManager rm, ViewPort vp) {
if (enabled && space != null && space.getDebugManager() != null) {
if (debugShape == null) {
attachDebugShape(space.getDebugManager());
}
debugShape.setLocalTranslation(spatial.getWorldTranslation());
debugShape.setLocalRotation(spatial.getWorldRotation());
debugShape.updateLogicalState(0);
debugShape.updateGeometricState();
rm.renderScene(debugShape, vp);
}
}
public void setPhysicsSpace(PhysicsSpace space) {
if (space == null) {
if (this.space != null) {
this.space.removeCollisionObject(this);
added = false;
}
} else {
if (this.space == space) {
return;
}
space.addCollisionObject(this);
added = true;
}
this.space = space;
}
public PhysicsSpace getPhysicsSpace() {
return space;
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
OutputCapsule oc = ex.getCapsule(this);
oc.write(enabled, "enabled", true);
oc.write(applyLocal, "applyLocalPhysics", false);
oc.write(spatial, "spatial", null);
}
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
InputCapsule ic = im.getCapsule(this);
enabled = ic.readBoolean("enabled", true);
spatial = (Spatial) ic.readSavable("spatial", null);
applyLocal = ic.readBoolean("applyLocalPhysics", false);
setUserObject(spatial);
}
}

@ -1,873 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.control.ragdoll.RagdollPreset;
import com.jme3.bullet.control.ragdoll.HumanoidRagdollPreset;
import com.jme3.animation.AnimControl;
import com.jme3.animation.Bone;
import com.jme3.animation.Skeleton;
import com.jme3.animation.SkeletonControl;
import com.jme3.asset.AssetManager;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.PhysicsCollisionEvent;
import com.jme3.bullet.collision.PhysicsCollisionListener;
import com.jme3.bullet.collision.PhysicsCollisionObject;
import com.jme3.bullet.collision.RagdollCollisionListener;
import com.jme3.bullet.collision.shapes.BoxCollisionShape;
import com.jme3.bullet.collision.shapes.HullCollisionShape;
import com.jme3.bullet.control.ragdoll.RagdollUtils;
import com.jme3.bullet.joints.SixDofJoint;
import com.jme3.bullet.objects.PhysicsRigidBody;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
import com.jme3.util.TempVars;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
/**<strong>This control is still a WIP, use it at your own risk</strong><br>
* To use this control you need a model with an AnimControl and a SkeletonControl.<br>
* This should be the case if you imported an animated model from Ogre or blender.<br>
* Note enabling/disabling the control add/removes it from the physic space<br>
* <p>
* This control creates collision shapes for each bones of the skeleton when you call spatial.addControl(ragdollControl).
* <ul>
* <li>The shape is HullCollision shape based on the vertices associated with each bone and based on a tweakable weight threshold (see setWeightThreshold)</li>
* <li>If you don't want each bone to be a collision shape, you can specify what bone to use by using the addBoneName method<br>
* By using this method, bone that are not used to create a shape, are "merged" to their parent to create the collision shape.
* </li>
* </ul>
*</p>
*<p>
*There are 2 modes for this control :
* <ul>
* <li><strong>The kinematic modes :</strong><br>
* this is the default behavior, this means that the collision shapes of the body are able to interact with physics enabled objects.
* in this mode physic shapes follow the moovements of the animated skeleton (for example animated by a key framed animation)
* this mode is enabled by calling setKinematicMode();
* </li>
* <li><strong>The ragdoll modes :</strong><br>
* To enable this behavior, you need to call setRagdollMode() method.
* In this mode the charater is entirely controled by physics, so it will fall under the gravity and move if any force is applied to it.
* </li>
* </ul>
*</p>
*
* @author Normen Hansen and Rémy Bouquet (Nehon)
*/
public class KinematicRagdollControl implements PhysicsControl, PhysicsCollisionListener {
protected static final Logger logger = Logger.getLogger(KinematicRagdollControl.class.getName());
protected Map<String, PhysicsBoneLink> boneLinks = new HashMap<String, PhysicsBoneLink>();
protected Skeleton skeleton;
protected PhysicsSpace space;
protected boolean enabled = true;
protected boolean debug = false;
protected PhysicsRigidBody baseRigidBody;
protected float weightThreshold = -1.0f;
protected Spatial targetModel;
protected Vector3f initScale;
protected Mode mode = Mode.Kinetmatic;
protected boolean blendedControl = false;
protected float blendTime = 1.0f;
protected float blendStart = 0.0f;
protected List<RagdollCollisionListener> listeners;
protected float eventDispatchImpulseThreshold = 10;
protected RagdollPreset preset = new HumanoidRagdollPreset();
protected Set<String> boneList = new TreeSet<String>();
protected Vector3f modelPosition = new Vector3f();
protected Quaternion modelRotation = new Quaternion();
protected float rootMass = 15;
protected float totalMass = 0;
protected boolean added = false;
public static enum Mode {
Kinetmatic,
Ragdoll
}
protected class PhysicsBoneLink {
protected Bone bone;
protected Quaternion initalWorldRotation;
protected SixDofJoint joint;
protected PhysicsRigidBody rigidBody;
protected Quaternion startBlendingRot = new Quaternion();
protected Vector3f startBlendingPos = new Vector3f();
}
/**
* contruct a KinematicRagdollControl
*/
public KinematicRagdollControl() {
}
public KinematicRagdollControl(float weightThreshold) {
this.weightThreshold = weightThreshold;
}
public KinematicRagdollControl(RagdollPreset preset, float weightThreshold) {
this.preset = preset;
this.weightThreshold = weightThreshold;
}
public KinematicRagdollControl(RagdollPreset preset) {
this.preset = preset;
}
public void update(float tpf) {
if (!enabled) {
return;
}
TempVars vars = TempVars.get();
Quaternion tmpRot1 = vars.quat1;
Quaternion tmpRot2 = vars.quat2;
//if the ragdoll has the control of the skeleton, we update each bone with its position in physic world space.
if (mode == mode.Ragdoll && targetModel.getLocalTranslation().equals(modelPosition)) {
for (PhysicsBoneLink link : boneLinks.values()) {
Vector3f position = vars.vect1;
//retrieving bone position in physic world space
Vector3f p = link.rigidBody.getMotionState().getWorldLocation();
//transforming this position with inverse transforms of the model
targetModel.getWorldTransform().transformInverseVector(p, position);
//retrieving bone rotation in physic world space
Quaternion q = link.rigidBody.getMotionState().getWorldRotationQuat();
//multiplying this rotation by the initialWorld rotation of the bone,
//then transforming it with the inverse world rotation of the model
tmpRot1.set(q).multLocal(link.initalWorldRotation);
tmpRot2.set(targetModel.getWorldRotation()).inverseLocal().mult(tmpRot1, tmpRot1);
tmpRot1.normalizeLocal();
//if the bone is the root bone, we apply the physic's transform to the model, so its position and rotation are correctly updated
if (link.bone.getParent() == null) {
//offsetting the physic's position/rotation by the root bone inverse model space position/rotaion
modelPosition.set(p).subtractLocal(link.bone.getWorldBindPosition());
targetModel.getParent().getWorldTransform().transformInverseVector(modelPosition, modelPosition);
modelRotation.set(q).multLocal(tmpRot2.set(link.bone.getWorldBindRotation()).inverseLocal());
//applying transforms to the model
targetModel.setLocalTranslation(modelPosition);
targetModel.setLocalRotation(modelRotation);
//Applying computed transforms to the bone
link.bone.setUserTransformsWorld(position, tmpRot1);
} else {
//if boneList is empty, this means that every bone in the ragdoll has a collision shape,
//so we just update the bone position
if (boneList.isEmpty()) {
link.bone.setUserTransformsWorld(position, tmpRot1);
} else {
//boneList is not empty, this means some bones of the skeleton might not be associated with a collision shape.
//So we update them recusively
RagdollUtils.setTransform(link.bone, position, tmpRot1, false, boneList);
}
}
}
} else {
//the ragdoll does not have the controll, so the keyframed animation updates the physic position of the physic bonces
for (PhysicsBoneLink link : boneLinks.values()) {
Vector3f position = vars.vect1;
//if blended control this means, keyframed animation is updating the skeleton,
//but to allow smooth transition, we blend this transformation with the saved position of the ragdoll
if (blendedControl) {
Vector3f position2 = vars.vect2;
//initializing tmp vars with the start position/rotation of the ragdoll
position.set(link.startBlendingPos);
tmpRot1.set(link.startBlendingRot);
//interpolating between ragdoll position/rotation and keyframed position/rotation
tmpRot2.set(tmpRot1).nlerp(link.bone.getModelSpaceRotation(), blendStart / blendTime);
position2.set(position).interpolate(link.bone.getModelSpacePosition(), blendStart / blendTime);
tmpRot1.set(tmpRot2);
position.set(position2);
//updating bones transforms
if (boneList.isEmpty()) {
//we ensure we have the control to update the bone
link.bone.setUserControl(true);
link.bone.setUserTransformsWorld(position, tmpRot1);
//we give control back to the key framed animation.
link.bone.setUserControl(false);
} else {
RagdollUtils.setTransform(link.bone, position, tmpRot1, true, boneList);
}
}
//setting skeleton transforms to the ragdoll
matchPhysicObjectToBone(link, position, tmpRot1);
modelPosition.set(targetModel.getLocalTranslation());
}
//time control for blending
if (blendedControl) {
blendStart += tpf;
if (blendStart > blendTime) {
blendedControl = false;
}
}
}
vars.release();
}
/**
* Set the transforms of a rigidBody to match the transforms of a bone.
* this is used to make the ragdoll follow the skeleton motion while in Kinematic mode
* @param link the link containing the bone and the rigidBody
* @param position just a temp vector for position
* @param tmpRot1 just a temp quaternion for rotation
*/
private void matchPhysicObjectToBone(PhysicsBoneLink link, Vector3f position, Quaternion tmpRot1) {
//computing position from rotation and scale
targetModel.getWorldTransform().transformVector(link.bone.getModelSpacePosition(), position);
//computing rotation
tmpRot1.set(link.bone.getModelSpaceRotation()).multLocal(link.bone.getWorldBindInverseRotation());
targetModel.getWorldRotation().mult(tmpRot1, tmpRot1);
tmpRot1.normalizeLocal();
//updating physic location/rotation of the physic bone
link.rigidBody.setPhysicsLocation(position);
link.rigidBody.setPhysicsRotation(tmpRot1);
}
public Control cloneForSpatial(Spatial spatial) {
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* rebuild the ragdoll
* this is useful if you applied scale on the ragdoll after it's been initialized
*/
public void reBuild() {
setSpatial(targetModel);
addToPhysicsSpace();
}
public void setSpatial(Spatial model) {
if (model == null) {
removeFromPhysicsSpace();
clearData();
return;
}
targetModel = model;
Node parent = model.getParent();
Vector3f initPosition = model.getLocalTranslation().clone();
Quaternion initRotation = model.getLocalRotation().clone();
initScale = model.getLocalScale().clone();
model.removeFromParent();
model.setLocalTranslation(Vector3f.ZERO);
model.setLocalRotation(Quaternion.IDENTITY);
model.setLocalScale(1);
//HACK ALERT change this
//I remove the skeletonControl and readd it to the spatial to make sure it's after the ragdollControl in the stack
//Find a proper way to order the controls.
SkeletonControl sc = model.getControl(SkeletonControl.class);
model.removeControl(sc);
model.addControl(sc);
//----
removeFromPhysicsSpace();
clearData();
// put into bind pose and compute bone transforms in model space
// maybe dont reset to ragdoll out of animations?
scanSpatial(model);
if (parent != null) {
parent.attachChild(model);
}
model.setLocalTranslation(initPosition);
model.setLocalRotation(initRotation);
model.setLocalScale(initScale);
logger.log(Level.INFO, "Created physics ragdoll for skeleton {0}", skeleton);
}
/**
* Add a bone name to this control
* Using this method you can specify which bones of the skeleton will be used to build the collision shapes.
* @param name
*/
public void addBoneName(String name) {
boneList.add(name);
}
private void scanSpatial(Spatial model) {
AnimControl animControl = model.getControl(AnimControl.class);
Map<Integer, List<Float>> pointsMap = null;
if (weightThreshold == -1.0f) {
pointsMap = RagdollUtils.buildPointMap(model);
}
skeleton = animControl.getSkeleton();
skeleton.resetAndUpdate();
for (int i = 0; i < skeleton.getRoots().length; i++) {
Bone childBone = skeleton.getRoots()[i];
if (childBone.getParent() == null) {
logger.log(Level.INFO, "Found root bone in skeleton {0}", skeleton);
baseRigidBody = new PhysicsRigidBody(new BoxCollisionShape(Vector3f.UNIT_XYZ.mult(0.1f)), 1);
baseRigidBody.setKinematic(mode == Mode.Kinetmatic);
boneRecursion(model, childBone, baseRigidBody, 1, pointsMap);
}
}
}
private void boneRecursion(Spatial model, Bone bone, PhysicsRigidBody parent, int reccount, Map<Integer, List<Float>> pointsMap) {
PhysicsRigidBody parentShape = parent;
if (boneList.isEmpty() || boneList.contains(bone.getName())) {
PhysicsBoneLink link = new PhysicsBoneLink();
link.bone = bone;
//creating the collision shape
HullCollisionShape shape = null;
if (pointsMap != null) {
//build a shape for the bone, using the vertices that are most influenced by this bone
shape = RagdollUtils.makeShapeFromPointMap(pointsMap, RagdollUtils.getBoneIndices(link.bone, skeleton, boneList), initScale, link.bone.getModelSpacePosition());
} else {
//build a shape for the bone, using the vertices associated with this bone with a weight above the threshold
shape = RagdollUtils.makeShapeFromVerticeWeights(model, RagdollUtils.getBoneIndices(link.bone, skeleton, boneList), initScale, link.bone.getModelSpacePosition(), weightThreshold);
}
PhysicsRigidBody shapeNode = new PhysicsRigidBody(shape, rootMass / (float) reccount);
shapeNode.setKinematic(mode == Mode.Kinetmatic);
totalMass += rootMass / (float) reccount;
link.rigidBody = shapeNode;
link.initalWorldRotation = bone.getModelSpaceRotation().clone();
if (parent != null) {
//get joint position for parent
Vector3f posToParent = new Vector3f();
if (bone.getParent() != null) {
bone.getModelSpacePosition().subtract(bone.getParent().getModelSpacePosition(), posToParent).multLocal(initScale);
}
SixDofJoint joint = new SixDofJoint(parent, shapeNode, posToParent, new Vector3f(0, 0, 0f), true);
preset.setupJointForBone(bone.getName(), joint);
link.joint = joint;
joint.setCollisionBetweenLinkedBodys(false);
}
boneLinks.put(bone.getName(), link);
shapeNode.setUserObject(link);
parentShape = shapeNode;
}
for (Iterator<Bone> it = bone.getChildren().iterator(); it.hasNext();) {
Bone childBone = it.next();
boneRecursion(model, childBone, parentShape, reccount + 1, pointsMap);
}
}
/**
* Set the joint limits for the joint between the given bone and its parent.
* This method can't work before attaching the control to a spatial
* @param boneName the name of the bone
* @param maxX the maximum rotation on the x axis (in radians)
* @param minX the minimum rotation on the x axis (in radians)
* @param maxY the maximum rotation on the y axis (in radians)
* @param minY the minimum rotation on the z axis (in radians)
* @param maxZ the maximum rotation on the z axis (in radians)
* @param minZ the minimum rotation on the z axis (in radians)
*/
public void setJointLimit(String boneName, float maxX, float minX, float maxY, float minY, float maxZ, float minZ) {
PhysicsBoneLink link = boneLinks.get(boneName);
if (link != null) {
RagdollUtils.setJointLimit(link.joint, maxX, minX, maxY, minY, maxZ, minZ);
} else {
logger.log(Level.WARNING, "Not joint was found for bone {0}. make sure you call spatial.addControl(ragdoll) before setting joints limit", boneName);
}
}
/**
* Return the joint between the given bone and its parent.
* This return null if it's called before attaching the control to a spatial
* @param boneName the name of the bone
* @return the joint between the given bone and its parent
*/
public SixDofJoint getJoint(String boneName) {
PhysicsBoneLink link = boneLinks.get(boneName);
if (link != null) {
return link.joint;
} else {
logger.log(Level.WARNING, "Not joint was found for bone {0}. make sure you call spatial.addControl(ragdoll) before setting joints limit", boneName);
return null;
}
}
private void clearData() {
boneLinks.clear();
baseRigidBody = null;
}
private void addToPhysicsSpace() {
if (space == null) {
return;
}
if (baseRigidBody != null) {
space.add(baseRigidBody);
added = true;
}
for (Iterator<PhysicsBoneLink> it = boneLinks.values().iterator(); it.hasNext();) {
PhysicsBoneLink physicsBoneLink = it.next();
if (physicsBoneLink.rigidBody != null) {
space.add(physicsBoneLink.rigidBody);
if (physicsBoneLink.joint != null) {
space.add(physicsBoneLink.joint);
}
added = true;
}
}
}
protected void removeFromPhysicsSpace() {
if (space == null) {
return;
}
if (baseRigidBody != null) {
space.remove(baseRigidBody);
}
for (Iterator<PhysicsBoneLink> it = boneLinks.values().iterator(); it.hasNext();) {
PhysicsBoneLink physicsBoneLink = it.next();
if (physicsBoneLink.joint != null) {
space.remove(physicsBoneLink.joint);
if (physicsBoneLink.rigidBody != null) {
space.remove(physicsBoneLink.rigidBody);
}
}
}
added = false;
}
/**
* enable or disable the control
* note that if enabled is true and that the physic space has been set on the ragdoll, the ragdoll is added to the physic space
* if enabled is false the ragdoll is removed from physic space.
* @param enabled
*/
public void setEnabled(boolean enabled) {
if (this.enabled == enabled) {
return;
}
this.enabled = enabled;
if (!enabled && space != null) {
removeFromPhysicsSpace();
} else if (enabled && space != null) {
addToPhysicsSpace();
}
}
/**
* returns true if the control is enabled
* @return
*/
public boolean isEnabled() {
return enabled;
}
protected void attachDebugShape(AssetManager manager) {
for (Iterator<PhysicsBoneLink> it = boneLinks.values().iterator(); it.hasNext();) {
PhysicsBoneLink physicsBoneLink = it.next();
physicsBoneLink.rigidBody.createDebugShape(manager);
}
debug = true;
}
protected void detachDebugShape() {
for (Iterator<PhysicsBoneLink> it = boneLinks.values().iterator(); it.hasNext();) {
PhysicsBoneLink physicsBoneLink = it.next();
physicsBoneLink.rigidBody.detachDebugShape();
}
debug = false;
}
/**
* For internal use only
* specific render for the ragdoll(if debugging)
* @param rm
* @param vp
*/
public void render(RenderManager rm, ViewPort vp) {
if (enabled && space != null && space.getDebugManager() != null) {
if (!debug) {
attachDebugShape(space.getDebugManager());
}
for (Iterator<PhysicsBoneLink> it = boneLinks.values().iterator(); it.hasNext();) {
PhysicsBoneLink physicsBoneLink = it.next();
Spatial debugShape = physicsBoneLink.rigidBody.debugShape();
if (debugShape != null) {
debugShape.setLocalTranslation(physicsBoneLink.rigidBody.getMotionState().getWorldLocation());
debugShape.setLocalRotation(physicsBoneLink.rigidBody.getMotionState().getWorldRotationQuat());
debugShape.updateGeometricState();
rm.renderScene(debugShape, vp);
}
}
}
}
/**
* set the physic space to this ragdoll
* @param space
*/
public void setPhysicsSpace(PhysicsSpace space) {
if (space == null) {
removeFromPhysicsSpace();
this.space = space;
} else {
if (this.space == space) {
return;
}
this.space = space;
addToPhysicsSpace();
this.space.addCollisionListener(this);
}
}
/**
* returns the physic space
* @return
*/
public PhysicsSpace getPhysicsSpace() {
return space;
}
/**
* serialize this control
* @param ex
* @throws IOException
*/
public void write(JmeExporter ex) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* de-serialize this control
* @param im
* @throws IOException
*/
public void read(JmeImporter im) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* For internal use only
* callback for collisionevent
* @param event
*/
public void collision(PhysicsCollisionEvent event) {
PhysicsCollisionObject objA = event.getObjectA();
PhysicsCollisionObject objB = event.getObjectB();
//excluding collisions that involve 2 parts of the ragdoll
if (event.getNodeA() == null && event.getNodeB() == null) {
return;
}
//discarding low impulse collision
if (event.getAppliedImpulse() < eventDispatchImpulseThreshold) {
return;
}
boolean hit = false;
Bone hitBone = null;
PhysicsCollisionObject hitObject = null;
//Computing which bone has been hit
if (objA.getUserObject() instanceof PhysicsBoneLink) {
PhysicsBoneLink link = (PhysicsBoneLink) objA.getUserObject();
if (link != null) {
hit = true;
hitBone = link.bone;
hitObject = objB;
}
}
if (objB.getUserObject() instanceof PhysicsBoneLink) {
PhysicsBoneLink link = (PhysicsBoneLink) objB.getUserObject();
if (link != null) {
hit = true;
hitBone = link.bone;
hitObject = objA;
}
}
//dispatching the event if the ragdoll has been hit
if (hit && listeners != null) {
for (RagdollCollisionListener listener : listeners) {
listener.collide(hitBone, hitObject, event);
}
}
}
/**
* Enable or disable the ragdoll behaviour.
* if ragdollEnabled is true, the character motion will only be powerd by physics
* else, the characted will be animated by the keyframe animation,
* but will be able to physically interact with its physic environnement
* @param ragdollEnabled
*/
protected void setMode(Mode mode) {
this.mode = mode;
AnimControl animControl = targetModel.getControl(AnimControl.class);
animControl.setEnabled(mode == Mode.Kinetmatic);
baseRigidBody.setKinematic(mode == Mode.Kinetmatic);
TempVars vars = TempVars.get();
for (PhysicsBoneLink link : boneLinks.values()) {
link.rigidBody.setKinematic(mode == Mode.Kinetmatic);
if (mode == Mode.Ragdoll) {
Quaternion tmpRot1 = vars.quat1;
Vector3f position = vars.vect1;
//making sure that the ragdoll is at the correct place.
matchPhysicObjectToBone(link, position, tmpRot1);
}
}
vars.release();
for (Bone bone : skeleton.getRoots()) {
RagdollUtils.setUserControl(bone, mode == Mode.Ragdoll);
}
}
/**
* Smoothly blend from Ragdoll mode to Kinematic mode
* This is useful to blend ragdoll actual position to a keyframe animation for example
* @param blendTime the blending time between ragdoll to anim.
*/
public void blendToKinematicMode(float blendTime) {
if (mode == Mode.Kinetmatic) {
return;
}
blendedControl = true;
this.blendTime = blendTime;
mode = Mode.Kinetmatic;
AnimControl animControl = targetModel.getControl(AnimControl.class);
animControl.setEnabled(true);
TempVars vars = TempVars.get();
for (PhysicsBoneLink link : boneLinks.values()) {
Vector3f p = link.rigidBody.getMotionState().getWorldLocation();
Vector3f position = vars.vect1;
targetModel.getWorldTransform().transformInverseVector(p, position);
Quaternion q = link.rigidBody.getMotionState().getWorldRotationQuat();
Quaternion q2 = vars.quat1;
Quaternion q3 = vars.quat2;
q2.set(q).multLocal(link.initalWorldRotation).normalizeLocal();
q3.set(targetModel.getWorldRotation()).inverseLocal().mult(q2, q2);
q2.normalizeLocal();
link.startBlendingPos.set(position);
link.startBlendingRot.set(q2);
link.rigidBody.setKinematic(true);
}
vars.release();
for (Bone bone : skeleton.getRoots()) {
RagdollUtils.setUserControl(bone, false);
}
blendStart = 0;
}
/**
* Set the control into Kinematic mode
* In theis mode, the collision shapes follow the movements of the skeleton,
* and can interact with physical environement
*/
public void setKinematicMode() {
if (mode != Mode.Kinetmatic) {
setMode(Mode.Kinetmatic);
}
}
/**
* Sets the control into Ragdoll mode
* The skeleton is entirely controlled by physics.
*/
public void setRagdollMode() {
if (mode != Mode.Ragdoll) {
setMode(Mode.Ragdoll);
}
}
/**
* retruns the mode of this control
* @return
*/
public Mode getMode() {
return mode;
}
/**
* add a
* @param listener
*/
public void addCollisionListener(RagdollCollisionListener listener) {
if (listeners == null) {
listeners = new ArrayList<RagdollCollisionListener>();
}
listeners.add(listener);
}
public void setRootMass(float rootMass) {
this.rootMass = rootMass;
}
public float getTotalMass() {
return totalMass;
}
public float getWeightThreshold() {
return weightThreshold;
}
public void setWeightThreshold(float weightThreshold) {
this.weightThreshold = weightThreshold;
}
public float getEventDispatchImpulseThreshold() {
return eventDispatchImpulseThreshold;
}
public void setEventDispatchImpulseThreshold(float eventDispatchImpulseThreshold) {
this.eventDispatchImpulseThreshold = eventDispatchImpulseThreshold;
}
/**
* Set the CcdMotionThreshold of all the bone's rigidBodies of the ragdoll
* @see PhysicsRigidBody#setCcdMotionThreshold(float)
* @param value
*/
public void setCcdMotionThreshold(float value) {
for (PhysicsBoneLink link : boneLinks.values()) {
link.rigidBody.setCcdMotionThreshold(value);
}
}
/**
* Set the CcdSweptSphereRadius of all the bone's rigidBodies of the ragdoll
* @see PhysicsRigidBody#setCcdSweptSphereRadius(float)
* @param value
*/
public void setCcdSweptSphereRadius(float value) {
for (PhysicsBoneLink link : boneLinks.values()) {
link.rigidBody.setCcdSweptSphereRadius(value);
}
}
/**
* Set the CcdMotionThreshold of the given bone's rigidBodies of the ragdoll
* @see PhysicsRigidBody#setCcdMotionThreshold(float)
* @param value
* @deprecated use getBoneRigidBody(String BoneName).setCcdMotionThreshold(float) instead
*/
@Deprecated
public void setBoneCcdMotionThreshold(String boneName, float value) {
PhysicsBoneLink link = boneLinks.get(boneName);
if (link != null) {
link.rigidBody.setCcdMotionThreshold(value);
}
}
/**
* Set the CcdSweptSphereRadius of the given bone's rigidBodies of the ragdoll
* @see PhysicsRigidBody#setCcdSweptSphereRadius(float)
* @param value
* @deprecated use getBoneRigidBody(String BoneName).setCcdSweptSphereRadius(float) instead
*/
@Deprecated
public void setBoneCcdSweptSphereRadius(String boneName, float value) {
PhysicsBoneLink link = boneLinks.get(boneName);
if (link != null) {
link.rigidBody.setCcdSweptSphereRadius(value);
}
}
/**
* return the rigidBody associated to the given bone
* @param boneName the name of the bone
* @return the associated rigidBody.
*/
public PhysicsRigidBody getBoneRigidBody(String boneName) {
PhysicsBoneLink link = boneLinks.get(boneName);
if (link != null) {
return link.rigidBody;
}
return null;
}
}

@ -1,28 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.scene.control.Control;
/**
*
* @author normenhansen
*/
public interface PhysicsControl extends Control {
public void setPhysicsSpace(PhysicsSpace space);
public PhysicsSpace getPhysicsSpace();
/**
* The physics object is removed from the physics space when the control
* is disabled. When the control is enabled again the physics object is
* moved to the current location of the spatial and then added to the physics
* space. This allows disabling/enabling physics to move the spatial freely.
* @param state
*/
public void setEnabled(boolean state);
}

@ -1,266 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.shapes.BoxCollisionShape;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.collision.shapes.SphereCollisionShape;
import com.jme3.bullet.objects.PhysicsRigidBody;
import com.jme3.bullet.util.CollisionShapeFactory;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
import com.jme3.scene.shape.Box;
import com.jme3.scene.shape.Sphere;
import java.io.IOException;
/**
*
* @author normenhansen
*/
public class RigidBodyControl extends PhysicsRigidBody implements PhysicsControl {
protected Spatial spatial;
protected boolean enabled = true;
protected boolean added = false;
protected PhysicsSpace space = null;
protected boolean kinematicSpatial = true;
public RigidBodyControl() {
}
/**
* When using this constructor, the CollisionShape for the RigidBody is generated
* automatically when the Control is added to a Spatial.
* @param mass When not 0, a HullCollisionShape is generated, otherwise a MeshCollisionShape is used. For geometries with box or sphere meshes the proper box or sphere collision shape is used.
*/
public RigidBodyControl(float mass) {
this.mass = mass;
}
/**
* Creates a new PhysicsNode with the supplied collision shape and mass 1
* @param child
* @param shape
*/
public RigidBodyControl(CollisionShape shape) {
super(shape);
}
public RigidBodyControl(CollisionShape shape, float mass) {
super(shape, mass);
}
public Control cloneForSpatial(Spatial spatial) {
RigidBodyControl control = new RigidBodyControl(collisionShape, mass);
control.setAngularFactor(getAngularFactor());
control.setAngularSleepingThreshold(getAngularSleepingThreshold());
control.setCcdMotionThreshold(getCcdMotionThreshold());
control.setCcdSweptSphereRadius(getCcdSweptSphereRadius());
control.setCollideWithGroups(getCollideWithGroups());
control.setCollisionGroup(getCollisionGroup());
control.setDamping(getLinearDamping(), getAngularDamping());
control.setFriction(getFriction());
control.setGravity(getGravity());
control.setKinematic(isKinematic());
control.setKinematicSpatial(isKinematicSpatial());
control.setLinearSleepingThreshold(getLinearSleepingThreshold());
control.setPhysicsLocation(getPhysicsLocation(null));
control.setPhysicsRotation(getPhysicsRotationMatrix(null));
control.setRestitution(getRestitution());
if (mass > 0) {
control.setAngularVelocity(getAngularVelocity());
control.setLinearVelocity(getLinearVelocity());
}
control.setApplyPhysicsLocal(isApplyPhysicsLocal());
control.setSpatial(spatial);
return control;
}
public void setSpatial(Spatial spatial) {
if (getUserObject() == null || getUserObject() == this.spatial) {
setUserObject(spatial);
}
this.spatial = spatial;
if (spatial == null) {
if (getUserObject() == spatial) {
setUserObject(null);
}
spatial = null;
collisionShape = null;
return;
}
if (collisionShape == null) {
createCollisionShape();
rebuildRigidBody();
}
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
protected void createCollisionShape() {
if (spatial == null) {
return;
}
if (spatial instanceof Geometry) {
Geometry geom = (Geometry) spatial;
Mesh mesh = geom.getMesh();
if (mesh instanceof Sphere) {
collisionShape = new SphereCollisionShape(((Sphere) mesh).getRadius());
return;
} else if (mesh instanceof Box) {
collisionShape = new BoxCollisionShape(new Vector3f(((Box) mesh).getXExtent(), ((Box) mesh).getYExtent(), ((Box) mesh).getZExtent()));
return;
}
}
if (mass > 0) {
collisionShape = CollisionShapeFactory.createDynamicMeshShape(spatial);
} else {
collisionShape = CollisionShapeFactory.createMeshShape(spatial);
}
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (space != null) {
if (enabled && !added) {
if (spatial != null) {
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
space.addCollisionObject(this);
added = true;
} else if (!enabled && added) {
space.removeCollisionObject(this);
added = false;
}
}
}
public boolean isEnabled() {
return enabled;
}
/**
* Checks if this control is in kinematic spatial mode.
* @return true if the spatial location is applied to this kinematic rigidbody
*/
public boolean isKinematicSpatial() {
return kinematicSpatial;
}
/**
* Sets this control to kinematic spatial mode so that the spatials transform will
* be applied to the rigidbody in kinematic mode, defaults to true.
* @param kinematicSpatial
*/
public void setKinematicSpatial(boolean kinematicSpatial) {
this.kinematicSpatial = kinematicSpatial;
}
public boolean isApplyPhysicsLocal() {
return motionState.isApplyPhysicsLocal();
}
/**
* When set to true, the physics coordinates will be applied to the local
* translation of the Spatial instead of the world traslation.
* @param applyPhysicsLocal
*/
public void setApplyPhysicsLocal(boolean applyPhysicsLocal) {
motionState.setApplyPhysicsLocal(applyPhysicsLocal);
}
private Vector3f getSpatialTranslation(){
if(motionState.isApplyPhysicsLocal()){
return spatial.getLocalTranslation();
}
return spatial.getWorldTranslation();
}
private Quaternion getSpatialRotation(){
if(motionState.isApplyPhysicsLocal()){
return spatial.getLocalRotation();
}
return spatial.getWorldRotation();
}
public void update(float tpf) {
if (enabled && spatial != null) {
if (isKinematic() && kinematicSpatial) {
super.setPhysicsLocation(getSpatialTranslation());
super.setPhysicsRotation(getSpatialRotation());
} else {
getMotionState().applyTransform(spatial);
}
}
}
public void render(RenderManager rm, ViewPort vp) {
if (enabled && space != null && space.getDebugManager() != null) {
if (debugShape == null) {
attachDebugShape(space.getDebugManager());
}
//TODO: using spatial traslation/rotation..
debugShape.setLocalTranslation(spatial.getWorldTranslation());
debugShape.setLocalRotation(spatial.getWorldRotation());
debugShape.updateLogicalState(0);
debugShape.updateGeometricState();
rm.renderScene(debugShape, vp);
}
}
public void setPhysicsSpace(PhysicsSpace space) {
if (space == null) {
if (this.space != null) {
this.space.removeCollisionObject(this);
added = false;
}
} else {
if(this.space==space) return;
space.addCollisionObject(this);
added = true;
}
this.space = space;
}
public PhysicsSpace getPhysicsSpace() {
return space;
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
OutputCapsule oc = ex.getCapsule(this);
oc.write(enabled, "enabled", true);
oc.write(motionState.isApplyPhysicsLocal(), "applyLocalPhysics", false);
oc.write(kinematicSpatial, "kinematicSpatial", true);
oc.write(spatial, "spatial", null);
}
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
InputCapsule ic = im.getCapsule(this);
enabled = ic.readBoolean("enabled", true);
kinematicSpatial = ic.readBoolean("kinematicSpatial", true);
spatial = (Spatial) ic.readSavable("spatial", null);
motionState.setApplyPhysicsLocal(ic.readBoolean("applyLocalPhysics", false));
setUserObject(spatial);
}
}

@ -1,270 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control;
import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.joints.PhysicsJoint;
import com.jme3.bullet.objects.PhysicsVehicle;
import com.jme3.bullet.objects.VehicleWheel;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
import com.jme3.scene.debug.Arrow;
import java.io.IOException;
import java.util.Iterator;
/**
*
* @author normenhansen
*/
public class VehicleControl extends PhysicsVehicle implements PhysicsControl {
protected Spatial spatial;
protected boolean enabled = true;
protected PhysicsSpace space = null;
protected boolean added = false;
public VehicleControl() {
}
/**
* Creates a new PhysicsNode with the supplied collision shape
* @param child
* @param shape
*/
public VehicleControl(CollisionShape shape) {
super(shape);
}
public VehicleControl(CollisionShape shape, float mass) {
super(shape, mass);
}
public boolean isApplyPhysicsLocal() {
return motionState.isApplyPhysicsLocal();
}
/**
* When set to true, the physics coordinates will be applied to the local
* translation of the Spatial
* @param applyPhysicsLocal
*/
public void setApplyPhysicsLocal(boolean applyPhysicsLocal) {
motionState.setApplyPhysicsLocal(applyPhysicsLocal);
for (Iterator<VehicleWheel> it = wheels.iterator(); it.hasNext();) {
VehicleWheel vehicleWheel = it.next();
vehicleWheel.setApplyLocal(applyPhysicsLocal);
}
}
private Vector3f getSpatialTranslation(){
if(motionState.isApplyPhysicsLocal()){
return spatial.getLocalTranslation();
}
return spatial.getWorldTranslation();
}
private Quaternion getSpatialRotation(){
if(motionState.isApplyPhysicsLocal()){
return spatial.getLocalRotation();
}
return spatial.getWorldRotation();
}
public Control cloneForSpatial(Spatial spatial) {
VehicleControl control = new VehicleControl(collisionShape, mass);
control.setAngularFactor(getAngularFactor());
control.setAngularSleepingThreshold(getAngularSleepingThreshold());
control.setAngularVelocity(getAngularVelocity());
control.setCcdMotionThreshold(getCcdMotionThreshold());
control.setCcdSweptSphereRadius(getCcdSweptSphereRadius());
control.setCollideWithGroups(getCollideWithGroups());
control.setCollisionGroup(getCollisionGroup());
control.setDamping(getLinearDamping(), getAngularDamping());
control.setFriction(getFriction());
control.setGravity(getGravity());
control.setKinematic(isKinematic());
control.setLinearSleepingThreshold(getLinearSleepingThreshold());
control.setLinearVelocity(getLinearVelocity());
control.setPhysicsLocation(getPhysicsLocation());
control.setPhysicsRotation(getPhysicsRotationMatrix());
control.setRestitution(getRestitution());
control.setFrictionSlip(getFrictionSlip());
control.setMaxSuspensionTravelCm(getMaxSuspensionTravelCm());
control.setSuspensionStiffness(getSuspensionStiffness());
control.setSuspensionCompression(tuning.suspensionCompression);
control.setSuspensionDamping(tuning.suspensionDamping);
control.setMaxSuspensionForce(getMaxSuspensionForce());
for (Iterator<VehicleWheel> it = wheels.iterator(); it.hasNext();) {
VehicleWheel wheel = it.next();
VehicleWheel newWheel = control.addWheel(wheel.getLocation(), wheel.getDirection(), wheel.getAxle(), wheel.getRestLength(), wheel.getRadius(), wheel.isFrontWheel());
newWheel.setFrictionSlip(wheel.getFrictionSlip());
newWheel.setMaxSuspensionTravelCm(wheel.getMaxSuspensionTravelCm());
newWheel.setSuspensionStiffness(wheel.getSuspensionStiffness());
newWheel.setWheelsDampingCompression(wheel.getWheelsDampingCompression());
newWheel.setWheelsDampingRelaxation(wheel.getWheelsDampingRelaxation());
newWheel.setMaxSuspensionForce(wheel.getMaxSuspensionForce());
//TODO: bad way finding children!
if (spatial instanceof Node) {
Node node = (Node) spatial;
Spatial wheelSpat = node.getChild(wheel.getWheelSpatial().getName());
if (wheelSpat != null) {
newWheel.setWheelSpatial(wheelSpat);
}
}
}
control.setApplyPhysicsLocal(isApplyPhysicsLocal());
control.setSpatial(spatial);
return control;
}
public void setSpatial(Spatial spatial) {
if (getUserObject() == null || getUserObject() == this.spatial) {
setUserObject(spatial);
}
this.spatial = spatial;
if (spatial == null) {
if (getUserObject() == spatial) {
setUserObject(null);
}
this.spatial = null;
this.collisionShape = null;
return;
}
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
if (space != null) {
if (enabled && !added) {
if(spatial!=null){
setPhysicsLocation(getSpatialTranslation());
setPhysicsRotation(getSpatialRotation());
}
space.addCollisionObject(this);
added = true;
} else if (!enabled && added) {
space.removeCollisionObject(this);
added = false;
}
}
}
public boolean isEnabled() {
return enabled;
}
public void update(float tpf) {
if (enabled && spatial != null) {
if (getMotionState().applyTransform(spatial)) {
spatial.getWorldTransform();
applyWheelTransforms();
}
} else if (enabled) {
applyWheelTransforms();
}
}
@Override
protected Spatial getDebugShape() {
return super.getDebugShape();
}
public void render(RenderManager rm, ViewPort vp) {
if (enabled && space != null && space.getDebugManager() != null) {
if (debugShape == null) {
attachDebugShape(space.getDebugManager());
}
Node debugNode = (Node) debugShape;
debugShape.setLocalTranslation(spatial.getWorldTranslation());
debugShape.setLocalRotation(spatial.getWorldRotation());
int i = 0;
for (Iterator<VehicleWheel> it = wheels.iterator(); it.hasNext();) {
VehicleWheel physicsVehicleWheel = it.next();
Vector3f location = physicsVehicleWheel.getLocation().clone();
Vector3f direction = physicsVehicleWheel.getDirection().clone();
Vector3f axle = physicsVehicleWheel.getAxle().clone();
float restLength = physicsVehicleWheel.getRestLength();
float radius = physicsVehicleWheel.getRadius();
Geometry locGeom = (Geometry) debugNode.getChild("WheelLocationDebugShape" + i);
Geometry dirGeom = (Geometry) debugNode.getChild("WheelDirectionDebugShape" + i);
Geometry axleGeom = (Geometry) debugNode.getChild("WheelAxleDebugShape" + i);
Geometry wheelGeom = (Geometry) debugNode.getChild("WheelRadiusDebugShape" + i);
Arrow locArrow = (Arrow) locGeom.getMesh();
locArrow.setArrowExtent(location);
Arrow axleArrow = (Arrow) axleGeom.getMesh();
axleArrow.setArrowExtent(axle.normalizeLocal().multLocal(0.3f));
Arrow wheelArrow = (Arrow) wheelGeom.getMesh();
wheelArrow.setArrowExtent(direction.normalizeLocal().multLocal(radius));
Arrow dirArrow = (Arrow) dirGeom.getMesh();
dirArrow.setArrowExtent(direction.normalizeLocal().multLocal(restLength));
dirGeom.setLocalTranslation(location);
axleGeom.setLocalTranslation(location.addLocal(direction));
wheelGeom.setLocalTranslation(location);
i++;
}
debugShape.updateLogicalState(0);
debugShape.updateGeometricState();
rm.renderScene(debugShape, vp);
}
}
public void setPhysicsSpace(PhysicsSpace space) {
createVehicle(space);
if (space == null) {
if (this.space != null) {
this.space.removeCollisionObject(this);
added = false;
}
} else {
if(this.space==space) return;
space.addCollisionObject(this);
added = true;
}
this.space = space;
}
public PhysicsSpace getPhysicsSpace() {
return space;
}
@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
OutputCapsule oc = ex.getCapsule(this);
oc.write(enabled, "enabled", true);
oc.write(motionState.isApplyPhysicsLocal(), "applyLocalPhysics", false);
oc.write(spatial, "spatial", null);
}
@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
InputCapsule ic = im.getCapsule(this);
enabled = ic.readBoolean("enabled", true);
spatial = (Spatial) ic.readSavable("spatial", null);
motionState.setApplyPhysicsLocal(ic.readBoolean("applyLocalPhysics", false));
setUserObject(spatial);
}
}

@ -1,99 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control.ragdoll;
import com.jme3.math.FastMath;
/**
*
* @author Nehon
*/
public class HumanoidRagdollPreset extends RagdollPreset {
@Override
protected void initBoneMap() {
boneMap.put("head", new JointPreset(FastMath.QUARTER_PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI));
boneMap.put("torso", new JointPreset(FastMath.QUARTER_PI, -FastMath.QUARTER_PI, 0, 0, FastMath.QUARTER_PI, -FastMath.QUARTER_PI));
boneMap.put("upperleg", new JointPreset(FastMath.PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI/2, -FastMath.QUARTER_PI/2, FastMath.QUARTER_PI, -FastMath.QUARTER_PI));
boneMap.put("lowerleg", new JointPreset(0, -FastMath.PI, 0, 0, 0, 0));
boneMap.put("foot", new JointPreset(0, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI));
boneMap.put("upperarm", new JointPreset(FastMath.HALF_PI, -FastMath.QUARTER_PI, 0, 0, FastMath.HALF_PI, -FastMath.QUARTER_PI));
boneMap.put("lowerarm", new JointPreset(FastMath.HALF_PI, 0, 0, 0, 0, 0));
boneMap.put("hand", new JointPreset(FastMath.QUARTER_PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI, FastMath.QUARTER_PI, -FastMath.QUARTER_PI));
}
@Override
protected void initLexicon() {
LexiconEntry entry = new LexiconEntry();
entry.addSynonym("head", 100);
lexicon.put("head", entry);
entry = new LexiconEntry();
entry.addSynonym("torso", 100);
entry.addSynonym("chest", 100);
entry.addSynonym("spine", 45);
entry.addSynonym("high", 25);
lexicon.put("torso", entry);
entry = new LexiconEntry();
entry.addSynonym("upperleg", 100);
entry.addSynonym("thigh", 100);
entry.addSynonym("hip", 75);
entry.addSynonym("leg", 40);
entry.addSynonym("high", 10);
entry.addSynonym("up", 15);
entry.addSynonym("upper", 15);
lexicon.put("upperleg", entry);
entry = new LexiconEntry();
entry.addSynonym("lowerleg", 100);
entry.addSynonym("calf", 100);
entry.addSynonym("knee", 75);
entry.addSynonym("leg", 50);
entry.addSynonym("low", 10);
entry.addSynonym("lower", 10);
lexicon.put("lowerleg", entry);
entry = new LexiconEntry();
entry.addSynonym("foot", 100);
entry.addSynonym("ankle", 75);
lexicon.put("foot", entry);
entry = new LexiconEntry();
entry.addSynonym("upperarm", 100);
entry.addSynonym("humerus", 100);
entry.addSynonym("shoulder", 50);
entry.addSynonym("arm", 40);
entry.addSynonym("high", 10);
entry.addSynonym("up", 15);
entry.addSynonym("upper", 15);
lexicon.put("upperarm", entry);
entry = new LexiconEntry();
entry.addSynonym("lowerarm", 100);
entry.addSynonym("ulna", 100);
entry.addSynonym("elbow", 75);
entry.addSynonym("arm", 50);
entry.addSynonym("low", 10);
entry.addSynonym("lower", 10);
lexicon.put("lowerarm", entry);
entry = new LexiconEntry();
entry.addSynonym("hand", 100);
entry.addSynonym("fist", 100);
entry.addSynonym("wrist", 75);
lexicon.put("hand", entry);
}
}

@ -1,106 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control.ragdoll;
import com.jme3.bullet.joints.SixDofJoint;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Nehon
*/
public abstract class RagdollPreset {
protected static final Logger logger = Logger.getLogger(RagdollPreset.class.getName());
protected Map<String, JointPreset> boneMap = new HashMap<String, JointPreset>();
protected Map<String, LexiconEntry> lexicon = new HashMap<String, LexiconEntry>();
protected abstract void initBoneMap();
protected abstract void initLexicon();
public void setupJointForBone(String boneName, SixDofJoint joint) {
if (boneMap.isEmpty()) {
initBoneMap();
}
if (lexicon.isEmpty()) {
initLexicon();
}
String resultName = "";
int resultScore = 0;
for (String key : lexicon.keySet()) {
int score = lexicon.get(key).getScore(boneName);
if (score > resultScore) {
resultScore = score;
resultName = key;
}
}
JointPreset preset = boneMap.get(resultName);
if (preset != null && resultScore >= 50) {
logger.log(Level.INFO, "Found matching joint for bone {0} : {1} with score {2}", new Object[]{boneName, resultName, resultScore});
preset.setupJoint(joint);
} else {
logger.log(Level.INFO, "No joint match found for bone {0}", boneName);
if (resultScore > 0) {
logger.log(Level.INFO, "Best match found is {0} with score {1}", new Object[]{resultName, resultScore});
}
new JointPreset().setupJoint(joint);
}
}
protected class JointPreset {
private float maxX, minX, maxY, minY, maxZ, minZ;
public JointPreset() {
}
public JointPreset(float maxX, float minX, float maxY, float minY, float maxZ, float minZ) {
this.maxX = maxX;
this.minX = minX;
this.maxY = maxY;
this.minY = minY;
this.maxZ = maxZ;
this.minZ = minZ;
}
public void setupJoint(SixDofJoint joint) {
joint.getRotationalLimitMotor(0).setHiLimit(maxX);
joint.getRotationalLimitMotor(0).setLoLimit(minX);
joint.getRotationalLimitMotor(1).setHiLimit(maxY);
joint.getRotationalLimitMotor(1).setLoLimit(minY);
joint.getRotationalLimitMotor(2).setHiLimit(maxZ);
joint.getRotationalLimitMotor(2).setLoLimit(minZ);
}
}
protected class LexiconEntry extends HashMap<String, Integer> {
public void addSynonym(String word, int score) {
put(word.toLowerCase(), score);
}
public int getScore(String word) {
int score = 0;
String searchWord = word.toLowerCase();
for (String key : this.keySet()) {
if (searchWord.indexOf(key) >= 0) {
score += get(key);
}
}
return score;
}
}
}

@ -1,273 +0,0 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.bullet.control.ragdoll;
import com.jme3.animation.Bone;
import com.jme3.animation.Skeleton;
import com.jme3.bullet.collision.shapes.HullCollisionShape;
import com.jme3.bullet.joints.SixDofJoint;
import com.jme3.math.Quaternion;
import com.jme3.math.Transform;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.VertexBuffer.Type;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
* @author Nehon
*/
public class RagdollUtils {
public static void setJointLimit(SixDofJoint joint, float maxX, float minX, float maxY, float minY, float maxZ, float minZ) {
joint.getRotationalLimitMotor(0).setHiLimit(maxX);
joint.getRotationalLimitMotor(0).setLoLimit(minX);
joint.getRotationalLimitMotor(1).setHiLimit(maxY);
joint.getRotationalLimitMotor(1).setLoLimit(minY);
joint.getRotationalLimitMotor(2).setHiLimit(maxZ);
joint.getRotationalLimitMotor(2).setLoLimit(minZ);
}
public static Map<Integer, List<Float>> buildPointMap(Spatial model) {
Map<Integer, List<Float>> map = new HashMap<Integer, List<Float>>();
if (model instanceof Geometry) {
Geometry g = (Geometry) model;
buildPointMapForMesh(g.getMesh(), map);
} else if (model instanceof Node) {
Node node = (Node) model;
for (Spatial s : node.getChildren()) {
if (s instanceof Geometry) {
Geometry g = (Geometry) s;
buildPointMapForMesh(g.getMesh(), map);
}
}
}
return map;
}
private static Map<Integer, List<Float>> buildPointMapForMesh(Mesh mesh, Map<Integer, List<Float>> map) {
FloatBuffer vertices = mesh.getFloatBuffer(Type.Position);
ByteBuffer boneIndices = (ByteBuffer) mesh.getBuffer(Type.BoneIndex).getData();
FloatBuffer boneWeight = (FloatBuffer) mesh.getBuffer(Type.BoneWeight).getData();
vertices.rewind();
boneIndices.rewind();
boneWeight.rewind();
int vertexComponents = mesh.getVertexCount() * 3;
int k, start, index;
float maxWeight = 0;
for (int i = 0; i < vertexComponents; i += 3) {
start = i / 3 * 4;
index = 0;
maxWeight = -1;
for (k = start; k < start + 4; k++) {
float weight = boneWeight.get(k);
if (weight > maxWeight) {
maxWeight = weight;
index = boneIndices.get(k);
}
}
List<Float> points = map.get(index);
if (points == null) {
points = new ArrayList<Float>();
map.put(index, points);
}
points.add(vertices.get(i));
points.add(vertices.get(i + 1));
points.add(vertices.get(i + 2));
}
return map;
}
/**
* Create a hull collision shape from linked vertices to this bone.
* Vertices have to be previoulsly gathered in a map using buildPointMap method
* @param link
* @param model
* @return
*/
public static HullCollisionShape makeShapeFromPointMap(Map<Integer, List<Float>> pointsMap, List<Integer> boneIndices, Vector3f initialScale, Vector3f initialPosition) {
ArrayList<Float> points = new ArrayList<Float>();
for (Integer index : boneIndices) {
List<Float> l = pointsMap.get(index);
if (l != null) {
for (int i = 0; i < l.size(); i += 3) {
Vector3f pos = new Vector3f();
pos.x = l.get(i);
pos.y = l.get(i + 1);
pos.z = l.get(i + 2);
pos.subtractLocal(initialPosition).multLocal(initialScale);
points.add(pos.x);
points.add(pos.y);
points.add(pos.z);
}
}
}
float[] p = new float[points.size()];
for (int i = 0; i < points.size(); i++) {
p[i] = points.get(i);
}
return new HullCollisionShape(p);
}
//retruns the list of bone indices of the given bone and its child(if they are not in the boneList)
public static List<Integer> getBoneIndices(Bone bone, Skeleton skeleton, Set<String> boneList) {
List<Integer> list = new LinkedList<Integer>();
if (boneList.isEmpty()) {
list.add(skeleton.getBoneIndex(bone));
} else {
list.add(skeleton.getBoneIndex(bone));
for (Bone chilBone : bone.getChildren()) {
if (!boneList.contains(chilBone.getName())) {
list.addAll(getBoneIndices(chilBone, skeleton, boneList));
}
}
}
return list;
}
/**
* Create a hull collision shape from linked vertices to this bone.
*
* @param link
* @param model
* @return
*/
public static HullCollisionShape makeShapeFromVerticeWeights(Spatial model, List<Integer> boneIndices, Vector3f initialScale, Vector3f initialPosition, float weightThreshold) {
ArrayList<Float> points = new ArrayList<Float>();
if (model instanceof Geometry) {
Geometry g = (Geometry) model;
for (Integer index : boneIndices) {
points.addAll(getPoints(g.getMesh(), index, initialScale, initialPosition, weightThreshold));
}
} else if (model instanceof Node) {
Node node = (Node) model;
for (Spatial s : node.getChildren()) {
if (s instanceof Geometry) {
Geometry g = (Geometry) s;
for (Integer index : boneIndices) {
points.addAll(getPoints(g.getMesh(), index, initialScale, initialPosition, weightThreshold));
}
}
}
}
float[] p = new float[points.size()];
for (int i = 0; i < points.size(); i++) {
p[i] = points.get(i);
}
return new HullCollisionShape(p);
}
/**
* returns a list of points for the given bone
* @param mesh
* @param boneIndex
* @param offset
* @param link
* @return
*/
private static List<Float> getPoints(Mesh mesh, int boneIndex, Vector3f initialScale, Vector3f offset, float weightThreshold) {
FloatBuffer vertices = mesh.getFloatBuffer(Type.Position);
ByteBuffer boneIndices = (ByteBuffer) mesh.getBuffer(Type.BoneIndex).getData();
FloatBuffer boneWeight = (FloatBuffer) mesh.getBuffer(Type.BoneWeight).getData();
vertices.rewind();
boneIndices.rewind();
boneWeight.rewind();
ArrayList<Float> results = new ArrayList<Float>();
int vertexComponents = mesh.getVertexCount() * 3;
for (int i = 0; i < vertexComponents; i += 3) {
int k;
boolean add = false;
int start = i / 3 * 4;
for (k = start; k < start + 4; k++) {
if (boneIndices.get(k) == boneIndex && boneWeight.get(k) >= weightThreshold) {
add = true;
break;
}
}
if (add) {
Vector3f pos = new Vector3f();
pos.x = vertices.get(i);
pos.y = vertices.get(i + 1);
pos.z = vertices.get(i + 2);
pos.subtractLocal(offset).multLocal(initialScale);
results.add(pos.x);
results.add(pos.y);
results.add(pos.z);
}
}
return results;
}
/**
* Updates a bone position and rotation.
* if the child bones are not in the bone list this means, they are not associated with a physic shape.
* So they have to be updated
* @param bone the bone
* @param pos the position
* @param rot the rotation
*/
public static void setTransform(Bone bone, Vector3f pos, Quaternion rot, boolean restoreBoneControl, Set<String> boneList) {
//we ensure that we have the control
if (restoreBoneControl) {
bone.setUserControl(true);
}
//we set te user transforms of the bone
bone.setUserTransformsWorld(pos, rot);
for (Bone childBone : bone.getChildren()) {
//each child bone that is not in the list is updated
if (!boneList.contains(childBone.getName())) {
Transform t = childBone.getCombinedTransform(pos, rot);
setTransform(childBone, t.getTranslation(), t.getRotation(), restoreBoneControl, boneList);
}
}
//we give back the control to the keyframed animation
if (restoreBoneControl) {
bone.setUserControl(false);
}
}
public static void setUserControl(Bone bone, boolean bool) {
bone.setUserControl(bool);
for (Bone child : bone.getChildren()) {
setUserControl(child, bool);
}
}
}

@ -1,259 +0,0 @@
# /*
# Bullet Continuous Collision Detection and Physics Library for Android NDK
# Copyright (c) 2006-2009 Noritsuna Imamura <a href="http://www.siprop.org/" rel="nofollow">http://www.siprop.org/</a>
#
# This software is provided 'as-is', without any express or implied warranty.
# In no event will the authors be held liable for any damages arising from the use of this software.
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it freely,
# subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
# */
LOCAL_PATH:= $(call my-dir)
JME3_PATH:=
BULLET_PATH:=
include $(CLEAR_VARS)
LOCAL_MODULE := bulletjme
LOCAL_C_INCLUDES := $(BULLET_PATH)/\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision\
$(BULLET_PATH)/BulletCollision/CollisionDispatch\
$(BULLET_PATH)/BulletCollision/CollisionShapes\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver\
$(BULLET_PATH)/BulletDynamics/Dynamics\
$(BULLET_PATH)/BulletDynamics/Vehicle\
$(BULLET_PATH)/LinearMath\
$(BULLET_PATH)/BulletCollision\
$(BULLET_PATH)/BulletDynamics\
$(BULLET_PATH)/BulletMultiThreaded\
$(BULLET_PATH)/BulletSoftBody\
$(BULLET_PATH)/ibmsdk\
$(BULLET_PATH)/LinearMath\
$(BULLET_PATH)/MiniCL\
$(BULLET_PATH)/vectormath\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision\
$(BULLET_PATH)/BulletCollision/CollisionDispatch\
$(BULLET_PATH)/BulletCollision/CollisionShapes\
$(BULLET_PATH)/BulletCollision/Gimpact\
$(BULLET_PATH)/BulletCollision/ibmsdk\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision\
$(BULLET_PATH)/BulletDynamics/Character\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver\
$(BULLET_PATH)/BulletDynamics/Dynamics\
$(BULLET_PATH)/BulletDynamics/ibmsdk\
$(BULLET_PATH)/BulletDynamics/Vehicle\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers\
$(BULLET_PATH)/BulletMultiThreaded/out\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask\
$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10\
$(BULLET_PATH)/LinearMath/ibmsdk\
$(BULLET_PATH)/MiniCL/MiniCLTask\
$(BULLET_PATH)/vectormath/scalar\
$(BULLET_PATH)/vectormath/sse
LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -lm -llog
LOCAL_SRC_FILES := $(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionEvent.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_PhysicsCollisionObject.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_BoxCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_CapsuleCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_CollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_CompoundCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_ConeCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_CylinderCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_GImpactCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_HullCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_MeshCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_PlaneCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_SimplexCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_collision_shapes_SphereCollisionShape.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_ConeJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_HingeJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_motors_RotationalLimitMotor.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_motors_TranslationalLimitMotor.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_PhysicsJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_Point2PointJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_SixDofJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_SixDofSpringJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_joints_SliderJoint.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_infos_RigidBodyMotionState.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_PhysicsCharacter.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_PhysicsGhostObject.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_PhysicsRigidBody.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_PhysicsVehicle.cpp\
$(JME3_PATH)/com_jme3_bullet_objects_VehicleWheel.cpp\
$(JME3_PATH)/com_jme3_bullet_PhysicsSpace.cpp\
$(JME3_PATH)/com_jme3_bullet_util_DebugShapeFactory.cpp\
$(JME3_PATH)/com_jme3_bullet_util_NativeMeshUtil.cpp\
$(JME3_PATH)/jmeBulletUtil.cpp\
$(JME3_PATH)/jmeClasses.cpp\
$(JME3_PATH)/jmeMotionState.cpp\
$(JME3_PATH)/jmePhysicsSpace.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvt.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btDispatcher.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp\
$(BULLET_PATH)/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionObject.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCollisionWorld.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btGhostObject.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btManifoldResult.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/btUnionFind.cpp\
$(BULLET_PATH)/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btBox2dShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btBoxShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btCapsuleShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btCollisionShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btCompoundShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConcaveShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConeShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvex2dShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexHullShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexInternalShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btCylinderShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btEmptyShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btMultiSphereShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btOptimizedBvh.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btShapeHull.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btSphereShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTetrahedronShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleBuffer.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleCallback.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMesh.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp\
$(BULLET_PATH)/BulletCollision/CollisionShapes/btUniformScalingShape.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btContactProcessing.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btGenericPoolAllocator.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactBvh.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btGImpactShape.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/btTriangleShapeEx.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/gim_box_set.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/gim_contact.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/gim_memory.cpp\
$(BULLET_PATH)/BulletCollision/Gimpact/gim_tri_collision.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp\
$(BULLET_PATH)/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp\
$(BULLET_PATH)/BulletDynamics/Character/btKinematicCharacterController.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btContactConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp\
$(BULLET_PATH)/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp\
$(BULLET_PATH)/BulletDynamics/Dynamics/btRigidBody.cpp\
$(BULLET_PATH)/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp\
$(BULLET_PATH)/BulletDynamics/Dynamics/Bullet-C-API.cpp\
$(BULLET_PATH)/BulletDynamics/Vehicle/btRaycastVehicle.cpp\
$(BULLET_PATH)/BulletDynamics/Vehicle/btWheelInfo.cpp\
$(BULLET_PATH)/BulletMultiThreaded/btGpu3DGridBroadphase.cpp\
$(BULLET_PATH)/BulletMultiThreaded/btParallelConstraintSolver.cpp\
$(BULLET_PATH)/BulletMultiThreaded/btThreadSupportInterface.cpp\
$(BULLET_PATH)/BulletMultiThreaded/PosixThreadSupport.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SequentialThreadSupport.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuCollisionTaskProcess.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuFakeDma.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuLibspe2Support.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTaskProcess.cpp\
$(BULLET_PATH)/BulletMultiThreaded/Win32ThreadSupport.cpp\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.cpp\
$(BULLET_PATH)/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/MiniCLTaskWrap.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp\
$(BULLET_PATH)/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp\
$(BULLET_PATH)/BulletSoftBody/btDefaultSoftBodySolver.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftBody.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftBodyHelpers.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftRigidDynamicsWorld.cpp\
$(BULLET_PATH)/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp\
$(BULLET_PATH)/LinearMath/btAlignedAllocator.cpp\
$(BULLET_PATH)/LinearMath/btConvexHull.cpp\
$(BULLET_PATH)/LinearMath/btConvexHullComputer.cpp\
$(BULLET_PATH)/LinearMath/btGeometryUtil.cpp\
$(BULLET_PATH)/LinearMath/btQuickprof.cpp\
$(BULLET_PATH)/LinearMath/btSerializer.cpp\
$(BULLET_PATH)/MiniCL/MiniCL.cpp\
$(BULLET_PATH)/MiniCL/MiniCLTaskScheduler.cpp\
$(BULLET_PATH)/MiniCL/MiniCLTask/MiniCLTask.cpp
include $(BUILD_SHARED_LIBRARY)

@ -1,2 +0,0 @@
APP_MODULES := bulletjme
APP_ABI := all

@ -1,273 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "jmePhysicsSpace.h"
#include "jmeBulletUtil.h"
#include <stdio.h>
/**
* Author: Normen Hansen
*/
jmePhysicsSpace::jmePhysicsSpace(JNIEnv* env, jobject javaSpace) {
//TODO: global ref? maybe not -> cleaning, rather callback class?
this->javaPhysicsSpace = env->NewWeakGlobalRef(javaSpace);
this->env = env;
env->GetJavaVM(&vm);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmePhysicsSpace::attachThread() {
#ifdef JNI_VERSION_1_2
vm->AttachCurrentThread((JNIEnv**) &env, NULL);
#else
vm->AttachCurrentThread(&env, NULL);
#endif
}
JNIEnv* jmePhysicsSpace::getEnv() {
attachThread();
return this->env;
}
void jmePhysicsSpace::stepSimulation(jfloat tpf, jint maxSteps, jfloat accuracy) {
dynamicsWorld->stepSimulation(tpf, maxSteps, accuracy);
}
btThreadSupportInterface* jmePhysicsSpace::createSolverThreadSupport(int maxNumThreads) {
#ifdef _WIN32
Win32ThreadSupport::Win32ThreadConstructionInfo threadConstructionInfo("solverThreads", SolverThreadFunc, SolverlsMemoryFunc, maxNumThreads);
Win32ThreadSupport* threadSupport = new Win32ThreadSupport(threadConstructionInfo);
threadSupport->startSPU();
#elif defined (USE_PTHREADS)
PosixThreadSupport::ThreadConstructionInfo constructionInfo("collision", SolverThreadFunc,
SolverlsMemoryFunc, maxNumThreads);
PosixThreadSupport* threadSupport = new PosixThreadSupport(constructionInfo);
threadSupport->startSPU();
#else
SequentialThreadSupport::SequentialThreadConstructionInfo tci("solverThreads", SolverThreadFunc, SolverlsMemoryFunc);
SequentialThreadSupport* threadSupport = new SequentialThreadSupport(tci);
threadSupport->startSPU();
#endif
return threadSupport;
}
btThreadSupportInterface* jmePhysicsSpace::createDispatchThreadSupport(int maxNumThreads) {
#ifdef _WIN32
Win32ThreadSupport::Win32ThreadConstructionInfo threadConstructionInfo("solverThreads", processCollisionTask, createCollisionLocalStoreMemory, maxNumThreads);
Win32ThreadSupport* threadSupport = new Win32ThreadSupport(threadConstructionInfo);
threadSupport->startSPU();
#elif defined (USE_PTHREADS)
PosixThreadSupport::ThreadConstructionInfo solverConstructionInfo("solver", processCollisionTask,
createCollisionLocalStoreMemory, maxNumThreads);
PosixThreadSupport* threadSupport = new PosixThreadSupport(solverConstructionInfo);
threadSupport->startSPU();
#else
SequentialThreadSupport::SequentialThreadConstructionInfo tci("solverThreads", processCollisionTask, createCollisionLocalStoreMemory);
SequentialThreadSupport* threadSupport = new SequentialThreadSupport(tci);
threadSupport->startSPU();
#endif
return threadSupport;
}
void jmePhysicsSpace::createPhysicsSpace(jfloat minX, jfloat minY, jfloat minZ, jfloat maxX, jfloat maxY, jfloat maxZ, jint broadphaseId, jboolean threading) {
// collision configuration contains default setup for memory, collision setup
btDefaultCollisionConstructionInfo cci;
// if(threading){
// cci.m_defaultMaxPersistentManifoldPoolSize = 32768;
// }
btCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration(cci);
btVector3 min = btVector3(minX, minY, minZ);
btVector3 max = btVector3(maxX, maxY, maxZ);
btBroadphaseInterface* broadphase;
switch (broadphaseId) {
case 0:
broadphase = new btSimpleBroadphase();
break;
case 1:
broadphase = new btAxisSweep3(min, max);
break;
case 2:
//TODO: 32bit!
broadphase = new btAxisSweep3(min, max);
break;
case 3:
broadphase = new btDbvtBroadphase();
break;
case 4:
// broadphase = new btGpu3DGridBroadphase(
// min, max,
// 20, 20, 20,
// 10000, 1000, 25);
break;
}
btCollisionDispatcher* dispatcher;
btConstraintSolver* solver;
// use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
if (threading) {
btThreadSupportInterface* dispatchThreads = createDispatchThreadSupport(4);
dispatcher = new SpuGatheringCollisionDispatcher(dispatchThreads, 4, collisionConfiguration);
dispatcher->setDispatcherFlags(btCollisionDispatcher::CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION);
} else {
dispatcher = new btCollisionDispatcher(collisionConfiguration);
}
// the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded)
if (threading) {
btThreadSupportInterface* solverThreads = createSolverThreadSupport(4);
solver = new btParallelConstraintSolver(solverThreads);
} else {
solver = new btSequentialImpulseConstraintSolver;
}
//create dynamics world
btDiscreteDynamicsWorld* world = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
dynamicsWorld = world;
dynamicsWorld->setWorldUserInfo(this);
//parallel solver requires the contacts to be in a contiguous pool, so avoid dynamic allocation
if (threading) {
world->getSimulationIslandManager()->setSplitIslands(false);
world->getSolverInfo().m_numIterations = 4;
world->getSolverInfo().m_solverMode = SOLVER_SIMD + SOLVER_USE_WARMSTARTING; //+SOLVER_RANDMIZE_ORDER;
world->getDispatchInfo().m_enableSPU = true;
}
broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
dynamicsWorld->setGravity(btVector3(0, -9.81f, 0));
struct jmeFilterCallback : public btOverlapFilterCallback {
// return true when pairs need collision
virtual bool needBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy * proxy1) const {
// bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;
// collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);
bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;
collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);
if (collides) {
btCollisionObject* co0 = (btCollisionObject*) proxy0->m_clientObject;
btCollisionObject* co1 = (btCollisionObject*) proxy1->m_clientObject;
jmeUserPointer *up0 = (jmeUserPointer*) co0 -> getUserPointer();
jmeUserPointer *up1 = (jmeUserPointer*) co1 -> getUserPointer();
if (up0 != NULL && up1 != NULL) {
collides = (up0->group & up1->groups) != 0;
collides = collides && (up1->group & up0->groups);
//add some additional logic here that modified 'collides'
return collides;
}
return false;
}
return collides;
}
};
dynamicsWorld->getPairCache()->setOverlapFilterCallback(new jmeFilterCallback());
dynamicsWorld->setInternalTickCallback(&jmePhysicsSpace::preTickCallback, static_cast<void *> (this), true);
dynamicsWorld->setInternalTickCallback(&jmePhysicsSpace::postTickCallback, static_cast<void *> (this));
if (gContactProcessedCallback == NULL) {
gContactProcessedCallback = &jmePhysicsSpace::contactProcessedCallback;
}
}
void jmePhysicsSpace::preTickCallback(btDynamicsWorld *world, btScalar timeStep) {
jmePhysicsSpace* dynamicsWorld = (jmePhysicsSpace*) world->getWorldUserInfo();
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_preTick, timeStep);
env->DeleteLocalRef(javaPhysicsSpace);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
}
void jmePhysicsSpace::postTickCallback(btDynamicsWorld *world, btScalar timeStep) {
jmePhysicsSpace* dynamicsWorld = (jmePhysicsSpace*) world->getWorldUserInfo();
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_postTick, timeStep);
env->DeleteLocalRef(javaPhysicsSpace);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
}
bool jmePhysicsSpace::contactProcessedCallback(btManifoldPoint &cp, void *body0, void *body1) {
// printf("contactProcessedCallback %d %dn", body0, body1);
btCollisionObject* co0 = (btCollisionObject*) body0;
jmeUserPointer *up0 = (jmeUserPointer*) co0 -> getUserPointer();
btCollisionObject* co1 = (btCollisionObject*) body1;
jmeUserPointer *up1 = (jmeUserPointer*) co1 -> getUserPointer();
if (up0 != NULL) {
jmePhysicsSpace *dynamicsWorld = (jmePhysicsSpace *)up0->space;
if (dynamicsWorld != NULL) {
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
jobject javaCollisionObject0 = env->NewLocalRef(up0->javaCollisionObject);
jobject javaCollisionObject1 = env->NewLocalRef(up1->javaCollisionObject);
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_addCollisionEvent, javaCollisionObject0, javaCollisionObject1, (jlong) & cp);
env->DeleteLocalRef(javaPhysicsSpace);
env->DeleteLocalRef(javaCollisionObject0);
env->DeleteLocalRef(javaCollisionObject1);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return true;
}
}
}
}
return true;
}
btDynamicsWorld* jmePhysicsSpace::getDynamicsWorld() {
return dynamicsWorld;
}
jobject jmePhysicsSpace::getJavaPhysicsSpace() {
return javaPhysicsSpace;
}
jmePhysicsSpace::~jmePhysicsSpace() {
delete(dynamicsWorld);
}

@ -1,310 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="build bullet natives" default="all" basedir="../../../">
<!-- load cpp compiler ant task -->
<taskdef resource="cpptasks.tasks" classpath="lib/antlibs/cpptasks.jar"/>
<!-- load properties -->
<property file="src/bullet/native/bullet.properties"/>
<!-- condition for mac platform check -->
<condition property="isSolaris">
<os name="SunOS"/>
</condition>
<condition property="isMac">
<and>
<os family="mac" />
<os family="unix" />
</and>
</condition>
<!-- condition for windows platform check -->
<condition property="isWindows">
<os family="windows" />
</condition>
<!-- condition for linux platform check -->
<condition property="isLinux">
<and>
<os family="unix"/>
<not>
<os family="mac"/>
</not>
<not>
<os name="SunOS"/>
</not>
</and>
</condition>
<!-- condition for x86_64 check -->
<condition property="isx86_64">
<os arch="x86_64" />
</condition>
<condition property="ndk-build-name" value="ndk-build.cmd" else="ndk-build">
<os family="windows" />
</condition>
<fileset id="lib.jars" dir="${bullet.lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset id="lib.jme.jars" dir="${bullet.jme.dir}">
<include name="**/*.jar"/>
</fileset>
<pathconvert property="lib.importpath">
<fileset refid="lib.jars"/>
<fileset refid="lib.jme.jars"/>
</pathconvert>
<target name="build-bullet-natives" description="builds the native bullet library for the platform being run on" depends="-create-folders, create-native-headers, -nativelib-osx, -nativelib-windows, -nativelib-linux, -nativelib-solaris, -nativelib-android">
<echo message="Updating native jME3-bullet-natives.jar"/>
<zip basedir="${bullet.output.base}/jarcontent" file="${bullet.output.base}/jME3-bullet-natives.jar" compress="true"/>
<zip basedir="${bullet.output.base}/android" file="${bullet.output.base}/jME3-bullet-natives-android.jar" compress="true"/>
<copy file="${bullet.output.base}/jME3-bullet-natives.jar" todir="dist/opt/native-bullet/lib/"/>
<copy file="${bullet.output.base}/jME3-bullet-natives-android.jar" todir="dist/opt/native-bullet/lib/"/>
</target>
<target name="create-native-headers" description="creates the native headers">
<javah destdir="${bullet.source.dir}" classpath="${bullet.build.dir}${path.separator}${lib.importpath}" force="yes">
<class name="com.jme3.bullet.PhysicsSpace"/>
<class name="com.jme3.bullet.collision.PhysicsCollisionEvent"/>
<class name="com.jme3.bullet.collision.PhysicsCollisionObject"/>
<class name="com.jme3.bullet.objects.PhysicsCharacter"/>
<class name="com.jme3.bullet.objects.PhysicsGhostObject"/>
<class name="com.jme3.bullet.objects.PhysicsRigidBody"/>
<class name="com.jme3.bullet.objects.PhysicsVehicle"/>
<class name="com.jme3.bullet.objects.VehicleWheel"/>
<class name="com.jme3.bullet.objects.infos.RigidBodyMotionState"/>
<class name="com.jme3.bullet.collision.shapes.CollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.BoxCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.CapsuleCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.CompoundCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.ConeCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.CylinderCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.GImpactCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.HeightfieldCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.HullCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.MeshCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.PlaneCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.SimplexCollisionShape"/>
<class name="com.jme3.bullet.collision.shapes.SphereCollisionShape"/>
<class name="com.jme3.bullet.joints.PhysicsJoint"/>
<class name="com.jme3.bullet.joints.ConeJoint"/>
<class name="com.jme3.bullet.joints.HingeJoint"/>
<class name="com.jme3.bullet.joints.Point2PointJoint"/>
<class name="com.jme3.bullet.joints.SixDofJoint"/>
<class name="com.jme3.bullet.joints.SixDofSpringJoint"/>
<class name="com.jme3.bullet.joints.SliderJoint"/>
<class name="com.jme3.bullet.joints.motors.RotationalLimitMotor"/>
<class name="com.jme3.bullet.joints.motors.TranslationalLimitMotor"/>
<class name="com.jme3.bullet.util.NativeMeshUtil"/>
<class name="com.jme3.bullet.util.DebugShapeFactory"/>
</javah>
</target>
<!-- compares the API of native bullet and java version-->
<target name="bullet-api-diff">
<echo message="Comparing bullet and jbullet API"/>
<property name="dependencyfinder.home" value="lib/antlibs/depfinder"/>
<path id="dependencyfinder">
<pathelement location="${dependencyfinder.home}/classes"/>
<pathelement location="${dependencyfinder.home}/lib/DependencyFinder.jar"/>
<pathelement location="${dependencyfinder.home}/lib/jakarta-oro.jar"/>
<pathelement location="${dependencyfinder.home}/lib/log4j.jar"/>
<pathelement location="${dependencyfinder.home}/lib/guava.jar"/>
</path>
<taskdef resource="dependencyfindertasks.properties">
<classpath refid="dependencyfinder"/>
</taskdef>
<jarjardiff destfile="bullet-api-diff.xml"
name="jMonkeyEngine3 Bullet Physics API Comparison"
oldlabel="Java Version"
newlabel="Native Version"
level="incompatible">
<old>
<pathelement location="build/jME3-jbullet.jar"/>
</old>
<new>
<pathelement location="build/jME3-bullet.jar"/>
</new>
</jarjardiff>
<xslt style="${dependencyfinder.home}/etc/DiffToHTML.xsl"
in="bullet-api-diff.xml"
out="bullet-api-diff.html" force="true"/>
<delete file="bullet-api-diff.xml"/>
</target>
<target name="-create-folders" description="creates the native headers">
<mkdir dir="${bullet.source.dir}"/>
<mkdir dir="${bullet.build.dir}"/>
<mkdir dir="${bullet.output.dir}"/>
<mkdir dir="build/bullet-native"/>
</target>
<target name="-nativelib-osx" if="isMac">
<echo message="Building MacOSX version of native bullet"/>
<mkdir dir="${bullet.output.dir}/macosx"/>
<cc name="${bullet.osx.compiler}" warnings="none" debug="${bullet.compile.debug}" link="shared" outfile="${bullet.output.dir}/macosx/${bullet.library.name}" objdir="build/bullet-native">
<fileset dir="${bullet.source.dir}">
<include name="*.cpp">
</include>
</fileset>
<includepath path="${bullet.osx.java.include}"/>
<includepath path="${bullet.bullet.include}"/>
<compilerarg value="-syslibroot ${bullet.osx.syslibroot}"/>
<!--compilerarg value="-arch"/>
<compilerarg value="ppc"/-->
<compilerarg value="-arch"/>
<compilerarg value="i386"/>
<compilerarg value="-arch"/>
<compilerarg value="x86_64"/>
<linker name="${bullet.osx.compiler}">
<!--libset dir="${bullet.folder}/src/BulletSoftBody" libs="BulletSoftBody"/-->
<libset dir="${bullet.folder}/src/BulletMultiThreaded" libs="BulletMultiThreaded"/>
<libset dir="${bullet.folder}/src/BulletDynamics" libs="BulletDynamics"/>
<libset dir="${bullet.folder}/src/BulletCollision" libs="BulletCollision"/>
<libset dir="${bullet.folder}/src/LinearMath" libs="LinearMath"/>
<!--linkerarg value="-arch"/>
<linkerarg value="ppc"/-->
<linkerarg value="-arch"/>
<linkerarg value="i386"/>
<linkerarg value="-arch"/>
<linkerarg value="x86_64"/>
</linker>
</cc>
<move file="${bullet.output.dir}/macosx/lib${bullet.library.name}.dylib" tofile="${bullet.output.dir}/macosx/lib${bullet.library.name}.jnilib" failonerror="true" verbose="true"/>
<delete file="${bullet.output.dir}/macosx/history.xml"/>
</target>
<target name="-nativelib-linux" if="isLinux">
<echo message="Building Linux version of native bullet"/>
<mkdir dir="${bullet.output.dir}/linux"/>
<cc name="${bullet.linux.compiler}" warnings="severe" debug="${bullet.compile.debug}" link="shared" outfile="${bullet.output.dir}/linux/${bullet.library.name}" objdir="build/bullet-native">
<fileset dir="${bullet.source.dir}">
<include name="*.cpp">
</include>
</fileset>
<includepath path="${bullet.java.include}"/>
<includepath path="${bullet.java.include}/linux"/>
<includepath path="${bullet.bullet.include}"/>
<!--compilerarg value="-m32"/-->
<!--compilerarg value="-static-libgcc"/>
<compilerarg value="-fPIC"/-->
<linker name="${bullet.linux.compiler}">
<!-- linkerarg value="-static-libgcc"/ -->
<libset dir="${bullet.folder}/src/BulletMultiThreaded" libs="BulletMultiThreaded"/>
<libset dir="${bullet.folder}/src/BulletDynamics" libs="BulletDynamics"/>
<libset dir="${bullet.folder}/src/BulletCollision" libs="BulletCollision"/>
<libset dir="${bullet.folder}/src/LinearMath" libs="LinearMath"/>
</linker>
</cc>
<delete file="${bullet.output.dir}/linux/history.xml"/>
</target>
<target name="-nativelib-solaris" if="isSolaris">
<echo message="Building Solaris version of native bullet"/>
<mkdir dir="${bullet.output.dir}/linux"/>
<cc name="${bullet.solaris.compiler}" warnings="severe" debug="${bullet.compile.debug}" link="shared" outfile="${bullet.output.dir}/solaris/${bullet.library.name}" objdir="build/bullet-native">
<fileset dir="${bullet.source.dir}">
<include name="*.cpp">
</include>
</fileset>
<includepath path="${bullet.java.include}"/>
<includepath path="${bullet.java.include}/solaris"/>
<includepath path="${bullet.bullet.include}"/>
<!--compilerarg value="-m32"/-->
<compilerarg value="-m32"/>
<compilerarg value="-fno-strict-aliasing"/>
<compilerarg value="-pthread"/>
<compilerarg value="-fPIC"/>
<compilerarg value="-D_REENTRANT"/>
<compilerarg value="-static-libstdc++"/>
<compilerarg value="-static-libgcc"/>
<compilerarg value="-D_REENTRANT"/>
<linker name="${bullet.solaris.compiler}">
<linkerarg value="-R/usr/sfw/lib"/>
<libset dir="${bullet.folder}/src/BulletMultiThreaded" libs="BulletMultiThreaded"/>
<libset dir="${bullet.folder}/src/BulletDynamics" libs="BulletDynamics"/>
<libset dir="${bullet.folder}/src/BulletCollision" libs="BulletCollision"/>
<libset dir="${bullet.folder}/src/LinearMath" libs="LinearMath"/>
</linker>
</cc>
<delete file="${bullet.output.dir}/solaris/history.xml"/>
</target>
<target name="-nativelib-windows" if="isWindows">
<echo message="Building Windows version of native bullet"/>
<mkdir dir="${bullet.output.dir}/windows"/>
<cc multithreaded="" name="${bullet.windows.compiler}" warnings="none" debug="${bullet.compile.debug}" outtype="shared" outfile="${bullet.output.dir}/windows/${bullet.library.name}" objdir="build/bullet-native">
<fileset dir="${bullet.source.dir}">
<include name="*.cpp">
</include>
</fileset>
<includepath path="${bullet.java.include}"/>
<includepath path="${bullet.java.include}/win32"/>
<includepath path="${bullet.bullet.include}"/>
<!--compilerarg value="-m32"/-->
<linker name="${bullet.windows.compiler}" debug="${bullet.compile.debug}" >
<linkerarg value="-o${bullet.library.name}.dll" />
<linkerarg value="--kill-at" />
<linkerarg value="-static"/>
<libset dir="${bullet.folder}/lib" libs="BulletMultiThreaded,BulletDynamics,BulletCollision,LinearMath"/>
</linker>
</cc>
<delete file="${bullet.output.dir}/windows/history.xml"/>
</target>
<target name="-nativelib-android" depends="-check-android-ndk" if="haveAndoidNdk">
<!-- delete previous android jni, libs, and obj subdirectories for a clean start -->
<delete dir="build/bullet-android/jni" failonerror="false"/>
<delete dir="build/bullet-android/libs" failonerror="false"/>
<delete dir="build/bullet-android/obj" failonerror="false"/>
<!-- create the android subdirectory in jarcontent for the libbulletjme.so shared library -->
<mkdir dir="${bullet.output.base}/android"/>
<!-- create the jni subdirectory -->
<mkdir dir="build/bullet-android/jni" />
<!-- copy Android.mk and Application.mk files into jni directory -->
<copy file="${bullet.source.dir}/android/Android.mk" todir="build/bullet-android/jni" verbose="true"/>
<copy file="${bullet.source.dir}/android/Application.mk" todir="build/bullet-android/jni" verbose="true"/>
<!-- copy edited version of jmePhysicsSpace to remove NDK compile error -->
<copy file="${bullet.source.dir}/android/jmePhysicsSpace.cpp" todir="build/bullet-android/jni" verbose="true"/>
<!-- copy jME3 Native Bullet files into jni directory -->
<copy todir="build/bullet-android/jni" verbose="true" flatten="false">
<fileset dir="${bullet.source.dir}">
<include name="*.cpp" />
<include name="*.h" />
<!-- skip jmePhysicsSpace (use edited one) to remove NDK compile error -->
<exclude name="jmePhysicsSpace.cpp" />
</fileset>
</copy>
<!-- copy Bullet-2.79 files into jni directory -->
<copy todir="build/bullet-android/jni" verbose="true" flatten="false">
<fileset dir="${bullet.bullet.include}">
<include name="**/*.cpp"/>
<include name="**/*.h"/>
<include name="**/*.cl"/>
</fileset>
</copy>
<exec executable="${ndk.dir}/${ndk-build-name}" failonerror="true" >
<arg line="-C build/bullet-android/"/>
</exec>
<!-- copy resulting library directories to jarcontent directory -->
<copy todir="${bullet.output.base}/android" verbose="true" flatten="false">
<fileset dir="build/bullet-android/libs">
<include name="**/*.*"/>
<include name="**/*.*"/>
<!--exclude name="**/x86/*.*"/-->
</fileset>
</copy>
</target>
<target name="-check-android-ndk">
<available file="${ndk.dir}/${ndk-build-name}" property="haveAndoidNdk"/>
</target>
</project>

@ -1,169 +0,0 @@
***********************************
* Build info for bulletjme *
* (c) 2011 Normen Hansen *
***********************************
This document outlines the process of building bullet-jme on different platforms.
Since bullet-jme is a native java library and bullet gets included statically,
building requires you to download and build the bullet source first.
***********************************
* Building bullet *
***********************************
-----------------------------------
General info
-----------------------------------
Note that the compilation of bullet should not produce dll / so / dylib files
but static *.a libraries which can later be compiled into the binary of bullet-jme.
-----------------------------------
Downloading and extracting bullet
-----------------------------------
Requirements:
- Bullet source: http://bullet.googlecode.com/
Extract bullet source and build bullet (see below)
-----------------------------------
Building on Mac OSX
-----------------------------------
Requirements:
- Apple Developer tools: http://developer.apple.com/
- CMake: http://www.cmake.org/ (or via http://www.macports.org)
Commands:
> cd bullet-trunk
> cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON \
-DCMAKE_OSX_ARCHITECTURES='ppc;i386;x86_64' \
-DBUILD_EXTRAS=off -DBUILD_DEMOS=off -DCMAKE_BUILD_TYPE=Release
> make
-----------------------------------
Building on WINDOWS (MinGW/GCC, Recommended)
-----------------------------------
Requirements:
- GNU C++ Compiler: http://www.mingw.org/
http://mingw-w64.sourceforge.net/
- CMake: http://www.cmake.org/
Commands:
> cd bullet-trunk
> cmake . -DBUILD_SHARED_LIBS=OFF -DBUILD_DEMOS:BOOL=OFF -DBUILD_EXTRAS:BOOL=OFF -DCMAKE_BUILD_TYPE=Release . -G "MinGW Makefiles"
> mingw32-make
-----------------------------------
Building on WINDOWS (VisualStudio, untested)
-----------------------------------
Requirements:
- Microsoft Visual Studio http://msdn.microsoft.com/
Bullet comes with autogenerated Project Files for Microsoft Visual Studio 6, 7, 7.1 and 8.
The main Workspace/Solution is located in Bullet/msvc/8/wksbullet.sln (replace 8 with your version).
Build the project to create static libraries.
-----------------------------------
Building bullet on LINUX
-----------------------------------
Requirements:
- Gnu C++ Compiler: http://gcc.gnu.org/
- CMake: http://www.cmake.org/ (or via your package manager of choice)
Commands:
> cd bullet-trunk
> cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC"\
-DBUILD_EXTRAS=off -DBUILD_DEMOS=off -DCMAKE_BUILD_TYPE=Release
> make
-----------------------------------
More info on building bullet
-----------------------------------
http://www.bulletphysics.org/mediawiki-1.5.8/index.php?title=Installation
***********************************
* Building bulletjme *
***********************************
-----------------------------------
Requirements
-----------------------------------
- Java SDK 1.5+: http://java.sun.com
- Apache ANT: http://ant.apache.org
- C++ Compiler: (see below)
- jme3 Source: http://jmonkeyengine.googlecode.com/
- Statically compiled bullet source (see above)
-----------------------------------
Preparation
-----------------------------------
- copy/link bullet-trunk folder into the same folder where the bullet-jme folder is:
disk
|
+-root folder
|
+-engine
|
+-sdk
|
+-bullet-trunk
- You can alter options in the "src/bullet/native/bullet.properties" file, such as the used bullet
version, native compilation options etc. (see below)
-----------------------------------
Building bulletjme native
-----------------------------------
Commands:
> cd engine
> ant jar
> ant build-bullet-natives
Thats all. ANT takes care building native binaries and copies them to th elib directory.
If you get compilation errors, try setting "native.java.include" in the build.properties file to your
JDK include directory, e.g. /opt/java/include or "c:\Program Files\Java\jdk1.6.0_20\include".
-----------------------------------
Altering the native build process
-----------------------------------
bullet-jme uses cpptasks to compile native code.
To change the used compiler, edit the "native.platform.compiler" entry in the
"build.properties" file. The following c++ compilers work with cpptasks:
gcc GCC C++ compiler
g++ GCC C++ compiler
c++ GCC C++ compiler
msvc Microsoft Visual C++
bcc Borland C++ Compiler
icl Intel C++ compiler for Windows (IA-32)
ecl Intel C++ compiler for Windows (IA-64)
icc Intel C++ compiler for Linux (IA-32)
ecc Intel C++ compiler for Linux (IA-64)
CC Sun ONE C++ compiler
aCC HP aC++ C++ Compiler
wcl OpenWatcom C/C++ compiler
In the "nbproject" folder you can find "build-native-platform.xml" files containing the commands
to compile bullet-jme on different platforms. If you want to alter the process,
you can copy and modify one of the files and import it in the "build.xml" file instead
of the old one.
-----------------------------------
Netbeans Project
-----------------------------------
The project also includes a Netbeans project to edit and build
the source in the Netbeans IDE in the /src/bullet/ subfolder.
To have correct syntax highlighting in .cpp/.h files:
- in Netbeans Settings -> C/C++ -> Code Assistance -> C++
- add bullet-2.77/src as include directories for c++
- add JAVA_HOME/include as include directories for c++

@ -1,35 +0,0 @@
#####################################################
# these are the ant build properties for bullet-jme #
#####################################################
bullet.library.name=bulletjme
bullet.library.version=0.9
# change if bullet folder has different location
bullet.folder=../bullet-2.79
# compile options
bullet.compile.debug=false
# native library compilation options
bullet.osx.compiler=g++
bullet.osx.syslibroot=/Developer/SDKs/MacOSX10.6.sdk
# change this to msvc for MS Visual Studio compiler
bullet.windows.compiler=g++
bullet.linux.compiler=g++
bullet.solaris.compiler=g++
# native header include directories
bullet.java.include=${java.home}/../include
# OSX has no JRE, only JDK
bullet.osx.java.include=/System/Library/Frameworks/JavaVM.framework/Headers
# location of Android NDK
ndk.dir=/opt/android-ndk-r7
# dont change these..
bullet.bullet.include=${bullet.folder}/src
bullet.build.dir=build/bullet/
bullet.source.dir=src/bullet/native
bullet.output.base=lib/bullet
bullet.output.dir=${bullet.output.base}/jarcontent/native
bullet.jme.dir=dist
bullet.lib.dir=dist/lib

@ -1,450 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "com_jme3_bullet_PhysicsSpace.h"
#include "jmePhysicsSpace.h"
#include "jmeBulletUtil.h"
/**
* Author: Normen Hansen
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: createPhysicsSpace
* Signature: (FFFFFFI)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_PhysicsSpace_createPhysicsSpace
(JNIEnv * env, jobject object, jfloat minX, jfloat minY, jfloat minZ, jfloat maxX, jfloat maxY, jfloat maxZ, jint broadphase, jboolean threading) {
jmeClasses::initJavaClasses(env);
jmePhysicsSpace* space = new jmePhysicsSpace(env, object);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space has not been created.");
return 0;
}
space->createPhysicsSpace(minX, minY, minZ, maxX, maxY, maxZ, broadphase, threading);
return reinterpret_cast<jlong>(space);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: stepSimulation
* Signature: (JFIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_stepSimulation
(JNIEnv * env, jobject object, jlong spaceId, jfloat tpf, jint maxSteps, jfloat accuracy) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
space->stepSimulation(tpf, maxSteps, accuracy);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addCollisionObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addCollisionObject
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = space;
space->getDynamicsWorld()->addCollisionObject(collisionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeCollisionObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeCollisionObject
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
space->getDynamicsWorld()->removeCollisionObject(collisionObject);
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = NULL;
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addRigidBody
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addRigidBody
(JNIEnv * env, jobject object, jlong spaceId, jlong rigidBodyId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btRigidBody* collisionObject = reinterpret_cast<btRigidBody*>(rigidBodyId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = space;
space->getDynamicsWorld()->addRigidBody(collisionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeRigidBody
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeRigidBody
(JNIEnv * env, jobject object, jlong spaceId, jlong rigidBodyId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btRigidBody* collisionObject = reinterpret_cast<btRigidBody*>(rigidBodyId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = NULL;
space->getDynamicsWorld()->removeRigidBody(collisionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addCharacterObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addCharacterObject
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = space;
space->getDynamicsWorld()->addCollisionObject(collisionObject,
btBroadphaseProxy::CharacterFilter,
btBroadphaseProxy::StaticFilter | btBroadphaseProxy::DefaultFilter
);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeCharacterObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeCharacterObject
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
userPointer -> space = NULL;
space->getDynamicsWorld()->removeCollisionObject(collisionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addAction
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addAction
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btActionInterface* actionObject = reinterpret_cast<btActionInterface*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (actionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The action object does not exist.");
return;
}
space->getDynamicsWorld()->addAction(actionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeAction
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeAction
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btActionInterface* actionObject = reinterpret_cast<btActionInterface*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (actionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The action object does not exist.");
return;
}
space->getDynamicsWorld()->removeAction(actionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addVehicle
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addVehicle
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btActionInterface* actionObject = reinterpret_cast<btActionInterface*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (actionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The vehicle object does not exist.");
return;
}
space->getDynamicsWorld()->addVehicle(actionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeVehicle
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeVehicle
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btActionInterface* actionObject = reinterpret_cast<btActionInterface*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (actionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The action object does not exist.");
return;
}
space->getDynamicsWorld()->removeVehicle(actionObject);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addConstraint
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addConstraint
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btTypedConstraint* constraint = reinterpret_cast<btTypedConstraint*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (constraint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The constraint object does not exist.");
return;
}
space->getDynamicsWorld()->addConstraint(constraint);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeConstraint
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeConstraint
(JNIEnv * env, jobject object, jlong spaceId, jlong objectId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
btTypedConstraint* constraint = reinterpret_cast<btTypedConstraint*>(objectId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
if (constraint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The constraint object does not exist.");
return;
}
space->getDynamicsWorld()->removeConstraint(constraint);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: setGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_setGravity
(JNIEnv * env, jobject object, jlong spaceId, jobject vector) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
btVector3 gravity = btVector3();
jmeBulletUtil::convert(env, vector, &gravity);
space->getDynamicsWorld()->setGravity(gravity);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: initNativePhysics
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_initNativePhysics
(JNIEnv * env, jclass clazz) {
jmeClasses::initJavaClasses(env);
}
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
(JNIEnv * env, jobject object, jlong spaceId) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
if (space == NULL) {
return;
}
delete(space);
}
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_rayTest_1native
(JNIEnv * env, jobject object, jobject to, jobject from, jlong spaceId, jobject resultlist) {
jmePhysicsSpace* space = reinterpret_cast<jmePhysicsSpace*> (spaceId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The physics space does not exist.");
return;
}
struct AllRayResultCallback : public btCollisionWorld::RayResultCallback {
AllRayResultCallback(const btVector3& rayFromWorld, const btVector3 & rayToWorld) : m_rayFromWorld(rayFromWorld), m_rayToWorld(rayToWorld) {
}
jobject resultlist;
JNIEnv* env;
btVector3 m_rayFromWorld; //used to calculate hitPointWorld from hitFraction
btVector3 m_rayToWorld;
btVector3 m_hitNormalWorld;
btVector3 m_hitPointWorld;
virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace) {
if (normalInWorldSpace) {
m_hitNormalWorld = rayResult.m_hitNormalLocal;
} else {
m_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis() * rayResult.m_hitNormalLocal;
}
m_hitPointWorld.setInterpolate3(m_rayFromWorld, m_rayToWorld, rayResult.m_hitFraction);
jmeBulletUtil::addResult(env, resultlist, m_hitNormalWorld, m_hitPointWorld, rayResult.m_hitFraction, rayResult.m_collisionObject);
return 1.f;
}
};
btVector3 native_to = btVector3();
jmeBulletUtil::convert(env, to, &native_to);
btVector3 native_from = btVector3();
jmeBulletUtil::convert(env, from, &native_from);
AllRayResultCallback resultCallback(native_from, native_to);
resultCallback.env = env;
resultCallback.resultlist = resultlist;
space->getDynamicsWorld()->rayTest(native_from, native_to, resultCallback);
return;
}
#ifdef __cplusplus
}
#endif

@ -1,165 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_PhysicsSpace */
#ifndef _Included_com_jme3_bullet_PhysicsSpace
#define _Included_com_jme3_bullet_PhysicsSpace
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_PhysicsSpace_AXIS_X
#define com_jme3_bullet_PhysicsSpace_AXIS_X 0L
#undef com_jme3_bullet_PhysicsSpace_AXIS_Y
#define com_jme3_bullet_PhysicsSpace_AXIS_Y 1L
#undef com_jme3_bullet_PhysicsSpace_AXIS_Z
#define com_jme3_bullet_PhysicsSpace_AXIS_Z 2L
/* Inaccessible static: pQueueTL */
/* Inaccessible static: physicsSpaceTL */
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: createPhysicsSpace
* Signature: (FFFFFFIZ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_PhysicsSpace_createPhysicsSpace
(JNIEnv *, jobject, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jint, jboolean);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: stepSimulation
* Signature: (JFIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_stepSimulation
(JNIEnv *, jobject, jlong, jfloat, jint, jfloat);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addCollisionObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addCollisionObject
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeCollisionObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeCollisionObject
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addRigidBody
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addRigidBody
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeRigidBody
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeRigidBody
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addCharacterObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addCharacterObject
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeCharacterObject
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeCharacterObject
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addAction
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addAction
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeAction
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeAction
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addVehicle
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addVehicle
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeVehicle
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeVehicle
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: addConstraint
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_addConstraint
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: removeConstraint
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_removeConstraint
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: setGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_setGravity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: rayTest_native
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;JLjava/util/List;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_rayTest_1native
(JNIEnv *, jobject, jobject, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: initNativePhysics
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_initNativePhysics
(JNIEnv *, jclass);
/*
* Class: com_jme3_bullet_PhysicsSpace
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_PhysicsSpace_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,308 +0,0 @@
#include "jmeBulletUtil.h"
#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h"
#include "com_jme3_bullet_collision_PhysicsCollisionEvent.h"
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulse
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_appliedImpulse;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulseLateral1
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulseLateral1
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_appliedImpulseLateral1;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulseLateral2
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulseLateral2
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_appliedImpulseLateral2;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getCombinedFriction
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getCombinedFriction
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_combinedFriction;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getCombinedRestitution
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getCombinedRestitution
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_combinedRestitution;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getDistance1
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getDistance1
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_distance1;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getIndex0
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getIndex0
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_index0;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getIndex1
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getIndex1
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_index1;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLateralFrictionDir1
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLateralFrictionDir1
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject lateralFrictionDir1) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_lateralFrictionDir1, lateralFrictionDir1);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLateralFrictionDir2
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLateralFrictionDir2
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject lateralFrictionDir2) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_lateralFrictionDir2, lateralFrictionDir2);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: isLateralFrictionInitialized
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_isLateralFrictionInitialized
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_lateralFrictionInitialized;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLifeTime
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLifeTime
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_lifeTime;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLocalPointA
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLocalPointA
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject localPointA) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_localPointA, localPointA);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLocalPointB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLocalPointB
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject localPointB) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_localPointB, localPointB);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getNormalWorldOnB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getNormalWorldOnB
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject normalWorldOnB) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_normalWorldOnB, normalWorldOnB);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPartId0
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPartId0
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_partId0;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPartId1
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPartId1
(JNIEnv * env, jobject object, jlong manifoldPointObjectId) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return 0;
}
return mp -> m_partId1;
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPositionWorldOnA
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPositionWorldOnA
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject positionWorldOnA) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_positionWorldOnA, positionWorldOnA);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPositionWorldOnB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPositionWorldOnB
(JNIEnv * env, jobject object, jlong manifoldPointObjectId, jobject positionWorldOnB) {
btManifoldPoint* mp = reinterpret_cast<btManifoldPoint*>(manifoldPointObjectId);
if (mp == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The manifoldPoint does not exist.");
return;
}
jmeBulletUtil::convert(env, &mp -> m_positionWorldOnB, positionWorldOnB);
}

@ -1,173 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_PhysicsCollisionEvent */
#ifndef _Included_com_jme3_bullet_collision_PhysicsCollisionEvent
#define _Included_com_jme3_bullet_collision_PhysicsCollisionEvent
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_collision_PhysicsCollisionEvent_serialVersionUID
#define com_jme3_bullet_collision_PhysicsCollisionEvent_serialVersionUID 5516075349620653480LL
#undef com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_ADDED
#define com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_ADDED 0L
#undef com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_PROCESSED
#define com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_PROCESSED 1L
#undef com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_DESTROYED
#define com_jme3_bullet_collision_PhysicsCollisionEvent_TYPE_DESTROYED 2L
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulse
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulseLateral1
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulseLateral1
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getAppliedImpulseLateral2
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getAppliedImpulseLateral2
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getCombinedFriction
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getCombinedFriction
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getCombinedRestitution
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getCombinedRestitution
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getDistance1
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getDistance1
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getIndex0
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getIndex0
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getIndex1
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getIndex1
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLateralFrictionDir1
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLateralFrictionDir1
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLateralFrictionDir2
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLateralFrictionDir2
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: isLateralFrictionInitialized
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_isLateralFrictionInitialized
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLifeTime
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLifeTime
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLocalPointA
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLocalPointA
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getLocalPointB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getLocalPointB
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getNormalWorldOnB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getNormalWorldOnB
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPartId0
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPartId0
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPartId1
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPartId1
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPositionWorldOnA
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPositionWorldOnA
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionEvent
* Method: getPositionWorldOnB
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionEvent_getPositionWorldOnB
(JNIEnv *, jobject, jlong, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,148 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_PhysicsCollisionObject.h"
#include "jmeBulletUtil.h"
#include "jmePhysicsSpace.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: attachCollisionShape
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_attachCollisionShape
(JNIEnv * env, jobject object, jlong objectId, jlong shapeId) {
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/IllegalStateException");
env->ThrowNew(newExc, "The collision object does not exist.");
return;
}
btCollisionShape* collisionShape = reinterpret_cast<btCollisionShape*>(shapeId);
if (collisionShape == NULL) {
jclass newExc = env->FindClass("java/lang/IllegalStateException");
env->ThrowNew(newExc, "The collision shape does not exist.");
return;
}
collisionObject->setCollisionShape(collisionShape);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_finalizeNative
(JNIEnv * env, jobject object, jlong objectId) {
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
if (collisionObject -> getUserPointer() != NULL){
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
delete(userPointer);
}
delete(collisionObject);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: initUserPointer
* Signature: (JII)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_initUserPointer
(JNIEnv *env, jobject object, jlong objectId, jint group, jint groups) {
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
if (userPointer != NULL) {
// delete(userPointer);
}
userPointer = new jmeUserPointer();
userPointer -> javaCollisionObject = env->NewWeakGlobalRef(object);
userPointer -> group = group;
userPointer -> groups = groups;
userPointer -> space = NULL;
collisionObject -> setUserPointer(userPointer);
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: setCollisionGroup
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_setCollisionGroup
(JNIEnv *env, jobject object, jlong objectId, jint group) {
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
if (userPointer != NULL){
userPointer -> group = group;
}
}
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: setCollideWithGroups
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_setCollideWithGroups
(JNIEnv *env, jobject object, jlong objectId, jint groups) {
btCollisionObject* collisionObject = reinterpret_cast<btCollisionObject*>(objectId);
if (collisionObject == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeUserPointer *userPointer = (jmeUserPointer*)collisionObject->getUserPointer();
if (userPointer != NULL){
userPointer -> groups = groups;
}
}
#ifdef __cplusplus
}
#endif

@ -1,87 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_PhysicsCollisionObject */
#ifndef _Included_com_jme3_bullet_collision_PhysicsCollisionObject
#define _Included_com_jme3_bullet_collision_PhysicsCollisionObject
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_NONE
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_NONE 0L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_01
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_01 1L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_02
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_02 2L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_03
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_03 4L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_04
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_04 8L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_05
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_05 16L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_06
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_06 32L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_07
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_07 64L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_08
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_08 128L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_09
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_09 256L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_10
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_10 512L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_11
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_11 1024L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_12
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_12 2048L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_13
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_13 4096L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_14
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_14 8192L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_15
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_15 16384L
#undef com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_16
#define com_jme3_bullet_collision_PhysicsCollisionObject_COLLISION_GROUP_16 32768L
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: initUserPointer
* Signature: (JII)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_initUserPointer
(JNIEnv *, jobject, jlong, jint, jint);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: attachCollisionShape
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_attachCollisionShape
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: setCollisionGroup
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_setCollisionGroup
(JNIEnv *, jobject, jlong, jint);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: setCollideWithGroups
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_setCollideWithGroups
(JNIEnv *, jobject, jlong, jint);
/*
* Class: com_jme3_bullet_collision_PhysicsCollisionObject
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_PhysicsCollisionObject_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,59 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_BoxCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_BoxCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_BoxCollisionShape_createShape
(JNIEnv *env, jobject object, jobject halfExtents) {
jmeClasses::initJavaClasses(env);
btVector3 extents = btVector3();
jmeBulletUtil::convert(env, halfExtents, &extents);
btBoxShape* shape = new btBoxShape(extents);
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_BoxCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_BoxCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_BoxCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_BoxCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_BoxCollisionShape_createShape
(JNIEnv *, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,68 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_CapsuleCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CapsuleCollisionShape
* Method: createShape
* Signature: (IFF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CapsuleCollisionShape_createShape
(JNIEnv * env, jobject object, jint axis, jfloat radius, jfloat height) {
jmeClasses::initJavaClasses(env);
btCollisionShape* shape;
switch(axis){
case 0:
shape = new btCapsuleShapeX(radius, height);
break;
case 1:
shape = new btCapsuleShape(radius, height);
break;
case 2:
shape = new btCapsuleShapeZ(radius, height);
break;
}
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_CapsuleCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_CapsuleCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_CapsuleCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CapsuleCollisionShape
* Method: createShape
* Signature: (IFF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CapsuleCollisionShape_createShape
(JNIEnv *, jobject, jint, jfloat, jfloat);
#ifdef __cplusplus
}
#endif
#endif

@ -1,110 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_CollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: getMargin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_getMargin
(JNIEnv * env, jobject object, jlong shapeId) {
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return shape->getMargin();
}
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: setLocalScaling
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_setLocalScaling
(JNIEnv * env, jobject object, jlong shapeId, jobject scale) {
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 scl = btVector3();
jmeBulletUtil::convert(env, scale, &scl);
shape->setLocalScaling(scl);
}
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: setMargin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_setMargin
(JNIEnv * env, jobject object, jlong shapeId, jfloat newMargin) {
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
shape->setMargin(newMargin);
}
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_finalizeNative
(JNIEnv * env, jobject object, jlong shapeId) {
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,45 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_CollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_CollisionShape
#define _Included_com_jme3_bullet_collision_shapes_CollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: getMargin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_getMargin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: setLocalScaling
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_setLocalScaling
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: setMargin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_setMargin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_collision_shapes_CollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_CollisionShape_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,107 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_CompoundCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: createShape
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_createShape
(JNIEnv *env, jobject object) {
jmeClasses::initJavaClasses(env);
btCompoundShape* shape = new btCompoundShape();
return reinterpret_cast<jlong>(shape);
}
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: addChildShape
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_addChildShape
(JNIEnv *env, jobject object, jlong compoundId, jlong childId, jobject childLocation, jobject childRotation) {
btCompoundShape* shape = reinterpret_cast<btCompoundShape*>(compoundId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btCollisionShape* child = reinterpret_cast<btCollisionShape*>(childId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btMatrix3x3 mtx = btMatrix3x3();
btTransform trans = btTransform(mtx);
jmeBulletUtil::convert(env, childLocation, &trans.getOrigin());
jmeBulletUtil::convert(env, childRotation, &trans.getBasis());
shape->addChildShape(trans, child);
return 0;
}
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: removeChildShape
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_removeChildShape
(JNIEnv * env, jobject object, jlong compoundId, jlong childId) {
btCompoundShape* shape = reinterpret_cast<btCompoundShape*>(compoundId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btCollisionShape* child = reinterpret_cast<btCollisionShape*>(childId);
if (shape == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
shape->removeChildShape(child);
return 0;
}
#ifdef __cplusplus
}
#endif

@ -1,37 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_CompoundCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_CompoundCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_CompoundCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: createShape
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_createShape
(JNIEnv *, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: addChildShape
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_addChildShape
(JNIEnv *, jobject, jlong, jlong, jobject, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_CompoundCollisionShape
* Method: removeChildShape
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CompoundCollisionShape_removeChildShape
(JNIEnv *, jobject, jlong, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,68 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_ConeCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_ConeCollisionShape
* Method: createShape
* Signature: (IFF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_ConeCollisionShape_createShape
(JNIEnv * env, jobject object, jint axis, jfloat radius, jfloat height) {
jmeClasses::initJavaClasses(env);
btCollisionShape* shape;
switch (axis) {
case 0:
shape = new btConeShapeX(radius, height);
break;
case 1:
shape = new btConeShape(radius, height);
break;
case 2:
shape = new btConeShapeZ(radius, height);
break;
}
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_ConeCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_ConeCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_ConeCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_ConeCollisionShape
* Method: createShape
* Signature: (IFF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_ConeCollisionShape_createShape
(JNIEnv *, jobject, jint, jfloat, jfloat);
#ifdef __cplusplus
}
#endif
#endif

@ -1,70 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_CylinderCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CylinderCollisionShape
* Method: createShape
* Signature: (ILcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CylinderCollisionShape_createShape
(JNIEnv * env, jobject object, jint axis, jobject halfExtents) {
jmeClasses::initJavaClasses(env);
btVector3 extents = btVector3();
jmeBulletUtil::convert(env, halfExtents, &extents);
btCollisionShape* shape;
switch (axis) {
case 0:
shape = new btCylinderShapeX(extents);
break;
case 1:
shape = new btCylinderShape(extents);
break;
case 2:
shape = new btCylinderShapeZ(extents);
break;
}
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_CylinderCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_CylinderCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_CylinderCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_CylinderCollisionShape
* Method: createShape
* Signature: (ILcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_CylinderCollisionShape_createShape
(JNIEnv *, jobject, jint, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,70 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_GImpactCollisionShape.h"
#include "jmeBulletUtil.h"
#include <BulletCollision/Gimpact/btGImpactShape.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_GImpactCollisionShape
* Method: createShape
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_GImpactCollisionShape_createShape
(JNIEnv * env, jobject object, jlong meshId) {
jmeClasses::initJavaClasses(env);
btTriangleIndexVertexArray* array = reinterpret_cast<btTriangleIndexVertexArray*>(meshId);
btGImpactMeshShape* shape = new btGImpactMeshShape(array);
return reinterpret_cast<jlong>(shape);
}
/*
* Class: com_jme3_bullet_collision_shapes_GImpactCollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_GImpactCollisionShape_finalizeNative
(JNIEnv * env, jobject object, jlong meshId) {
btTriangleIndexVertexArray* array = reinterpret_cast<btTriangleIndexVertexArray*> (meshId);
delete(array);
}
#ifdef __cplusplus
}
#endif

@ -1,29 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_GImpactCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_GImpactCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_GImpactCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_GImpactCollisionShape
* Method: createShape
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_GImpactCollisionShape_createShape
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_shapes_GImpactCollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_GImpactCollisionShape_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,59 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_HeightfieldCollisionShape.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_HeightfieldCollisionShape
* Method: createShape
* Signature: (II[FFFFIZ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_HeightfieldCollisionShape_createShape
(JNIEnv * env, jobject object, jint heightStickWidth, jint heightStickLength, jobject heightfieldData, jfloat heightScale, jfloat minHeight, jfloat maxHeight, jint upAxis, jboolean flipQuadEdges) {
jmeClasses::initJavaClasses(env);
void* data = env->GetDirectBufferAddress(heightfieldData);
btHeightfieldTerrainShape* shape=new btHeightfieldTerrainShape(heightStickWidth, heightStickLength, data, heightScale, minHeight, maxHeight, upAxis, PHY_FLOAT, flipQuadEdges);
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_HeightfieldCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_HeightfieldCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_HeightfieldCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_HeightfieldCollisionShape
* Method: createShape
* Signature: (IILjava/nio/ByteBuffer;FFFIZ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_HeightfieldCollisionShape_createShape
(JNIEnv *, jobject, jint, jint, jobject, jfloat, jfloat, jfloat, jint, jboolean);
#ifdef __cplusplus
}
#endif
#endif

@ -1,69 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_HullCollisionShape.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionShapes/btConvexHullShape.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_HullCollisionShape
* Method: createShape
* Signature: ([F)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_HullCollisionShape_createShape
(JNIEnv *env, jobject object, jobject array) {
jmeClasses::initJavaClasses(env);
float* data = (float*) env->GetDirectBufferAddress(array);
//TODO: capacity will not always be length!
int length = env->GetDirectBufferCapacity(array)/4;
btConvexHullShape* shape = new btConvexHullShape();
for (int i = 0; i < length; i+=3) {
btVector3 vect = btVector3(data[i],
data[i + 1],
data[i + 2]);
shape->addPoint(vect);
}
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_HullCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_HullCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_HullCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_HullCollisionShape
* Method: createShape
* Signature: (Ljava/nio/ByteBuffer;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_HullCollisionShape_createShape
(JNIEnv *, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,70 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_MeshCollisionShape.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_MeshCollisionShape
* Method: createShape
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_MeshCollisionShape_createShape
(JNIEnv * env, jobject object, jlong arrayId) {
jmeClasses::initJavaClasses(env);
btTriangleIndexVertexArray* array = reinterpret_cast<btTriangleIndexVertexArray*>(arrayId);
btBvhTriangleMeshShape* shape = new btBvhTriangleMeshShape(array, true, true);
return reinterpret_cast<jlong>(shape);
}
/*
* Class: com_jme3_bullet_collision_shapes_MeshCollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_MeshCollisionShape_finalizeNative
(JNIEnv * env, jobject object, jlong arrayId){
btTriangleIndexVertexArray* array = reinterpret_cast<btTriangleIndexVertexArray*>(arrayId);
delete(array);
}
#ifdef __cplusplus
}
#endif

@ -1,29 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_MeshCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_MeshCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_MeshCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_MeshCollisionShape
* Method: createShape
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_MeshCollisionShape_createShape
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_collision_shapes_MeshCollisionShape
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_collision_shapes_MeshCollisionShape_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,60 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_PlaneCollisionShape.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_PlaneCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;F)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_PlaneCollisionShape_createShape
(JNIEnv * env, jobject object, jobject normal, jfloat constant) {
jmeClasses::initJavaClasses(env);
btVector3 norm = btVector3();
jmeBulletUtil::convert(env, normal, &norm);
btStaticPlaneShape* shape = new btStaticPlaneShape(norm, constant);
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_PlaneCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_PlaneCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_PlaneCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_PlaneCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;F)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_PlaneCollisionShape_createShape
(JNIEnv *, jobject, jobject, jfloat);
#ifdef __cplusplus
}
#endif
#endif

@ -1,110 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_SimplexCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2
(JNIEnv *env, jobject object, jobject vector1) {
jmeClasses::initJavaClasses(env);
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, vector1, &vec1);
btBU_Simplex1to4* simplexShape = new btBU_Simplex1to4(vec1);
return reinterpret_cast<jlong>(simplexShape);
}
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv *env, jobject object, jobject vector1, jobject vector2) {
jmeClasses::initJavaClasses(env);
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, vector1, &vec1);
btVector3 vec2 = btVector3();
jmeBulletUtil::convert(env, vector2, &vec2);
btBU_Simplex1to4* simplexShape = new btBU_Simplex1to4(vec1, vec2);
return reinterpret_cast<jlong>(simplexShape);
}
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv * env, jobject object, jobject vector1, jobject vector2, jobject vector3) {
jmeClasses::initJavaClasses(env);
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, vector1, &vec1);
btVector3 vec2 = btVector3();
jmeBulletUtil::convert(env, vector2, &vec2);
btVector3 vec3 = btVector3();
jmeBulletUtil::convert(env, vector3, &vec3);
btBU_Simplex1to4* simplexShape = new btBU_Simplex1to4(vec1, vec2, vec3);
return reinterpret_cast<jlong>(simplexShape);
}
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv * env, jobject object, jobject vector1, jobject vector2, jobject vector3, jobject vector4) {
jmeClasses::initJavaClasses(env);
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, vector1, &vec1);
btVector3 vec2 = btVector3();
jmeBulletUtil::convert(env, vector2, &vec2);
btVector3 vec3 = btVector3();
jmeBulletUtil::convert(env, vector3, &vec3);
btVector3 vec4 = btVector3();
jmeBulletUtil::convert(env, vector4, &vec4);
btBU_Simplex1to4* simplexShape = new btBU_Simplex1to4(vec1, vec2, vec3, vec4);
return reinterpret_cast<jlong>(simplexShape);
}
#ifdef __cplusplus
}
#endif

@ -1,45 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_SimplexCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_SimplexCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_SimplexCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2
(JNIEnv *, jobject, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv *, jobject, jobject, jobject, jobject);
/*
* Class: com_jme3_bullet_collision_shapes_SimplexCollisionShape
* Method: createShape
* Signature: (Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SimplexCollisionShape_createShape__Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2Lcom_jme3_math_Vector3f_2
(JNIEnv *, jobject, jobject, jobject, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,57 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_collision_shapes_SphereCollisionShape.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_SphereCollisionShape
* Method: createShape
* Signature: (F)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SphereCollisionShape_createShape
(JNIEnv *env, jobject object, jfloat radius) {
jmeClasses::initJavaClasses(env);
btSphereShape* shape=new btSphereShape(radius);
return reinterpret_cast<jlong>(shape);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_collision_shapes_SphereCollisionShape */
#ifndef _Included_com_jme3_bullet_collision_shapes_SphereCollisionShape
#define _Included_com_jme3_bullet_collision_shapes_SphereCollisionShape
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_collision_shapes_SphereCollisionShape
* Method: createShape
* Signature: (F)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_collision_shapes_SphereCollisionShape_createShape
(JNIEnv *, jobject, jfloat);
#ifdef __cplusplus
}
#endif
#endif

@ -1,100 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_ConeJoint.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: setLimit
* Signature: (JFFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_ConeJoint_setLimit
(JNIEnv * env, jobject object, jlong jointId, jfloat swingSpan1, jfloat swingSpan2, jfloat twistSpan) {
btConeTwistConstraint* joint = reinterpret_cast<btConeTwistConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
//TODO: extended setLimit!
joint->setLimit(swingSpan1, swingSpan2, twistSpan);
}
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: setAngularOnly
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_ConeJoint_setAngularOnly
(JNIEnv * env, jobject object, jlong jointId, jboolean angularOnly) {
btConeTwistConstraint* joint = reinterpret_cast<btConeTwistConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setAngularOnly(angularOnly);
}
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: createJoint
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_ConeJoint_createJoint
(JNIEnv * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject rotA, jobject pivotB, jobject rotB) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
btMatrix3x3 mtx1 = btMatrix3x3();
btMatrix3x3 mtx2 = btMatrix3x3();
btTransform transA = btTransform(mtx1);
jmeBulletUtil::convert(env, pivotA, &transA.getOrigin());
jmeBulletUtil::convert(env, rotA, &transA.getBasis());
btTransform transB = btTransform(mtx2);
jmeBulletUtil::convert(env, pivotB, &transB.getOrigin());
jmeBulletUtil::convert(env, rotB, &transB.getBasis());
btConeTwistConstraint* joint = new btConeTwistConstraint(*bodyA, *bodyB, transA, transB);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,37 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_ConeJoint */
#ifndef _Included_com_jme3_bullet_joints_ConeJoint
#define _Included_com_jme3_bullet_joints_ConeJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: setLimit
* Signature: (JFFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_ConeJoint_setLimit
(JNIEnv *, jobject, jlong, jfloat, jfloat, jfloat);
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: setAngularOnly
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_ConeJoint_setAngularOnly
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_joints_ConeJoint
* Method: createJoint
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Matrix3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_ConeJoint_createJoint
(JNIEnv *, jobject, jlong, jlong, jobject, jobject, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,226 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_HingeJoint.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: enableMotor
* Signature: (JZFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_enableMotor
(JNIEnv * env, jobject object, jlong jointId, jboolean enable, jfloat targetVelocity, jfloat maxMotorImpulse) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->enableAngularMotor(enable, targetVelocity, maxMotorImpulse);
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getEnableAngularMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_HingeJoint_getEnableAngularMotor
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return joint->getEnableAngularMotor();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getMotorTargetVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getMotorTargetVelocity
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getMotorTargetVelosity();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getMaxMotorImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getMaxMotorImpulse
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getMaxMotorImpulse();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setLimit
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setLimit__JFF
(JNIEnv * env, jobject object, jlong jointId, jfloat low, jfloat high) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
return joint->setLimit(low, high);
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setLimit
* Signature: (JFFFFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setLimit__JFFFFF
(JNIEnv * env, jobject object, jlong jointId, jfloat low, jfloat high, jfloat softness, jfloat biasFactor, jfloat relaxationFactor) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
return joint->setLimit(low, high, softness, biasFactor, relaxationFactor);
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getUpperLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getUpperLimit
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getUpperLimit();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getLowerLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getLowerLimit
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getLowerLimit();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setAngularOnly
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setAngularOnly
(JNIEnv * env, jobject object, jlong jointId, jboolean angular) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setAngularOnly(angular);
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getHingeAngle
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getHingeAngle
(JNIEnv * env, jobject object, jlong jointId) {
btHingeConstraint* joint = reinterpret_cast<btHingeConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getHingeAngle();
}
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: createJoint
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_HingeJoint_createJoint
(JNIEnv * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject axisA, jobject pivotB, jobject axisB) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
btVector3 vec1 = btVector3();
btVector3 vec2 = btVector3();
btVector3 vec3 = btVector3();
btVector3 vec4 = btVector3();
jmeBulletUtil::convert(env, pivotA, &vec1);
jmeBulletUtil::convert(env, pivotB, &vec2);
jmeBulletUtil::convert(env, axisA, &vec3);
jmeBulletUtil::convert(env, axisB, &vec4);
btHingeConstraint* joint = new btHingeConstraint(*bodyA, *bodyB, vec1, vec2, vec3, vec4);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,101 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_HingeJoint */
#ifndef _Included_com_jme3_bullet_joints_HingeJoint
#define _Included_com_jme3_bullet_joints_HingeJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: enableMotor
* Signature: (JZFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_enableMotor
(JNIEnv *, jobject, jlong, jboolean, jfloat, jfloat);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getEnableAngularMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_HingeJoint_getEnableAngularMotor
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getMotorTargetVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getMotorTargetVelocity
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getMaxMotorImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getMaxMotorImpulse
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setLimit
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setLimit__JFF
(JNIEnv *, jobject, jlong, jfloat, jfloat);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setLimit
* Signature: (JFFFFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setLimit__JFFFFF
(JNIEnv *, jobject, jlong, jfloat, jfloat, jfloat, jfloat, jfloat);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getUpperLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getUpperLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getLowerLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getLowerLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: setAngularOnly
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_HingeJoint_setAngularOnly
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: getHingeAngle
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_HingeJoint_getHingeAngle
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_HingeJoint
* Method: createJoint
* Signature: (JJLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_HingeJoint_createJoint
(JNIEnv *, jobject, jlong, jlong, jobject, jobject, jobject, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,61 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_PhysicsJoint.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_PhysicsJoint
* Method: getAppliedImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_PhysicsJoint_getAppliedImpulse
(JNIEnv * env, jobject object, jlong jointId) {
btTypedConstraint* joint = reinterpret_cast<btTypedConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getAppliedImpulse();
}
#ifdef __cplusplus
}
#endif

@ -1,29 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_PhysicsJoint */
#ifndef _Included_com_jme3_bullet_joints_PhysicsJoint
#define _Included_com_jme3_bullet_joints_PhysicsJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_PhysicsJoint
* Method: getAppliedImpulse
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_PhysicsJoint_getAppliedImpulse
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_PhysicsJoint
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_PhysicsJoint_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,162 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_Point2PointJoint.h"
#include "jmeBulletUtil.h"
#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 * env, jobject object, jlong jointId, jfloat damping) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->m_setting.m_damping = damping;
}
/*
* Class: com_jme3_bullet_joints_Point2PointJoint
* Method: setImpulseClamp
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_setImpulseClamp
(JNIEnv * env, jobject object, jlong jointId, jfloat clamp) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->m_setting.m_impulseClamp = clamp;
}
/*
* Class: com_jme3_bullet_joints_Point2PointJoint
* Method: setTau
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_setTau
(JNIEnv * env, jobject object, jlong jointId, jfloat tau) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->m_setting.m_tau = tau;
}
/*
* Class: com_jme3_bullet_joints_Point2PointJoint
* Method: getDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_getDamping
(JNIEnv * env, jobject object, jlong jointId) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->m_setting.m_damping;
}
/*
* Class: com_jme3_bullet_joints_Point2PointJoint
* Method: getImpulseClamp
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_getImpulseClamp
(JNIEnv * env, jobject object, jlong jointId) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->m_setting.m_damping;
}
/*
* Class: com_jme3_bullet_joints_Point2PointJoint
* Method: getTau
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_Point2PointJoint_getTau
(JNIEnv * env, jobject object, jlong jointId) {
btPoint2PointConstraint* joint = reinterpret_cast<btPoint2PointConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->m_setting.m_damping;
}
/*
* 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 * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject pivotB) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
//TODO: matrix not needed?
btMatrix3x3 mtx1 = btMatrix3x3();
btMatrix3x3 mtx2 = btMatrix3x3();
btTransform transA = btTransform(mtx1);
jmeBulletUtil::convert(env, pivotA, &transA.getOrigin());
btTransform transB = btTransform(mtx2);
jmeBulletUtil::convert(env, pivotB, &transB.getOrigin());
btHingeConstraint* joint = new btHingeConstraint(*bodyA, *bodyB, transA, transB);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,69 +0,0 @@
/* 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

@ -1,170 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_SixDofJoint.h"
#include "jmeBulletUtil.h"
#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 * env, jobject object, jlong jointId, jint index) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return reinterpret_cast<jlong>(joint->getRotationalLimitMotor(index));
}
/*
* Class: com_jme3_bullet_joints_SixDofJoint
* Method: getTranslationalLimitMotor
* Signature: (J)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_joints_SixDofJoint_getTranslationalLimitMotor
(JNIEnv * env, jobject object, jlong jointId) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return reinterpret_cast<jlong>(joint->getTranslationalLimitMotor());
}
/*
* 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 * env, jobject object, jlong jointId, jobject vector) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
joint->setLinearUpperLimit(vec);
}
/*
* 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 * env, jobject object, jlong jointId, jobject vector) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
joint->setLinearLowerLimit(vec);
}
/*
* 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 * env, jobject object, jlong jointId, jobject vector) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
joint->setAngularUpperLimit(vec);
}
/*
* 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 * env, jobject object, jlong jointId, jobject vector) {
btGeneric6DofConstraint* joint = reinterpret_cast<btGeneric6DofConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
joint->setAngularLowerLimit(vec);
}
/*
* 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 * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject rotA, jobject pivotB, jobject rotB, jboolean useLinearReferenceFrameA) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
btMatrix3x3 mtx1 = btMatrix3x3();
btMatrix3x3 mtx2 = btMatrix3x3();
btTransform transA = btTransform(mtx1);
jmeBulletUtil::convert(env, pivotA, &transA.getOrigin());
jmeBulletUtil::convert(env, rotA, &transA.getBasis());
btTransform transB = btTransform(mtx2);
jmeBulletUtil::convert(env, pivotB, &transB.getOrigin());
jmeBulletUtil::convert(env, rotB, &transB.getBasis());
btGeneric6DofConstraint* joint = new btGeneric6DofConstraint(*bodyA, *bodyB, transA, transB, useLinearReferenceFrameA);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,69 +0,0 @@
/* 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

@ -1,94 +0,0 @@
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_SixDofSpringJoint.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: enableString
* Signature: (JIZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_enableSpring
(JNIEnv *env, jobject object, jlong jointId, jint index, jboolean onOff) {
btGeneric6DofSpringConstraint* joint = reinterpret_cast<btGeneric6DofSpringConstraint*>(jointId);
joint -> enableSpring(index, onOff);
}
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setStiffness
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setStiffness
(JNIEnv *env, jobject object, jlong jointId, jint index, jfloat stiffness) {
btGeneric6DofSpringConstraint* joint = reinterpret_cast<btGeneric6DofSpringConstraint*>(jointId);
joint -> setStiffness(index, stiffness);
}
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setDamping
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setDamping
(JNIEnv *env, jobject object, jlong jointId, jint index, jfloat damping) {
btGeneric6DofSpringConstraint* joint = reinterpret_cast<btGeneric6DofSpringConstraint*>(jointId);
joint -> setDamping(index, damping);
}
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setEquilibriumPoint
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setEquilibriumPoint__J
(JNIEnv *env, jobject object, jlong jointId) {
btGeneric6DofSpringConstraint* joint = reinterpret_cast<btGeneric6DofSpringConstraint*>(jointId);
joint -> setEquilibriumPoint();
}
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setEquilibriumPoint
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setEquilibriumPoint__JI
(JNIEnv *env, jobject object, jlong jointId, jint index) {
btGeneric6DofSpringConstraint* joint = reinterpret_cast<btGeneric6DofSpringConstraint*>(jointId);
joint -> setEquilibriumPoint(index);
}
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* 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_SixDofSpringJoint_createJoint
(JNIEnv * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject rotA, jobject pivotB, jobject rotB, jboolean useLinearReferenceFrameA) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
btTransform transA;
jmeBulletUtil::convert(env, pivotA, &transA.getOrigin());
jmeBulletUtil::convert(env, rotA, &transA.getBasis());
btTransform transB;
jmeBulletUtil::convert(env, pivotB, &transB.getOrigin());
jmeBulletUtil::convert(env, rotB, &transB.getBasis());
btGeneric6DofSpringConstraint* joint = new btGeneric6DofSpringConstraint(*bodyA, *bodyB, transA, transB, useLinearReferenceFrameA);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,61 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_SixDofSpringJoint */
#ifndef _Included_com_jme3_bullet_joints_SixDofSpringJoint
#define _Included_com_jme3_bullet_joints_SixDofSpringJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: enableSpring
* Signature: (JIZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_enableSpring
(JNIEnv *, jobject, jlong, jint, jboolean);
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setStiffness
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setStiffness
(JNIEnv *, jobject, jlong, jint, jfloat);
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setDamping
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setDamping
(JNIEnv *, jobject, jlong, jint, jfloat);
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setEquilibriumPoint
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setEquilibriumPoint__J
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* Method: setEquilibriumPoint
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SixDofSpringJoint_setEquilibriumPoint__JI
(JNIEnv *, jobject, jlong, jint);
/*
* Class: com_jme3_bullet_joints_SixDofSpringJoint
* 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_SixDofSpringJoint_createJoint
(JNIEnv *, jobject, jlong, jlong, jobject, jobject, jobject, jobject, jboolean);
#ifdef __cplusplus
}
#endif
#endif

@ -1,963 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_SliderJoint.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getLowerLinLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getLowerLinLimit
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getLowerLinLimit();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setLowerLinLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setLowerLinLimit
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setLowerLinLimit(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getUpperLinLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getUpperLinLimit
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getUpperLinLimit();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setUpperLinLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setUpperLinLimit
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setUpperLinLimit(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getLowerAngLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getLowerAngLimit
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getLowerAngLimit();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setLowerAngLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setLowerAngLimit
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setLowerAngLimit(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getUpperAngLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getUpperAngLimit
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getUpperAngLimit();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setUpperAngLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setUpperAngLimit
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setUpperAngLimit(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessDirLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessDirLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessDirLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessDirLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionDirLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionDirLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionDirLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionDirLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingDirLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingDirLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingDirLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingDirLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessDirAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessDirAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessDirAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessDirAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionDirAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionDirAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionDirAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionDirAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingDirAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingDirAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingDirAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingDirAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessLimLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessLimLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessLimLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessLimLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionLimLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionLimLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionLimLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionLimLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingLimLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingLimLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingLimLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingLimLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessLimAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessLimAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessLimAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessLimAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionLimAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionLimAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionLimAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionLimAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingLimAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingLimAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingLimAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingLimAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessOrthoLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessOrthoLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessOrthoLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessOrthoLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionOrthoLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionOrthoLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionOrthoLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionOrthoLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingOrthoLin
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingOrthoLin();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingOrthoLin
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingOrthoLin(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessOrthoAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getSoftnessOrthoAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessOrthoAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setSoftnessOrthoAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionOrthoAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getRestitutionOrthoAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionOrthoAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setRestitutionOrthoAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingOrthoAng
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getDampingOrthoAng();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingOrthoAng
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setDampingOrthoAng(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: isPoweredLinMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_SliderJoint_isPoweredLinMotor
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return joint->getPoweredLinMotor();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setPoweredLinMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setPoweredLinMotor
(JNIEnv * env, jobject object, jlong jointId, jboolean value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setPoweredLinMotor(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getTargetLinMotorVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getTargetLinMotorVelocity
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getTargetLinMotorVelocity();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setTargetLinMotorVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setTargetLinMotorVelocity
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setTargetLinMotorVelocity(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getMaxLinMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getMaxLinMotorForce
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getMaxLinMotorForce();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setMaxLinMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setMaxLinMotorForce
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setMaxLinMotorForce(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: isPoweredAngMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_SliderJoint_isPoweredAngMotor
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return joint->getPoweredAngMotor();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setPoweredAngMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setPoweredAngMotor
(JNIEnv * env, jobject object, jlong jointId, jboolean value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setPoweredAngMotor(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getTargetAngMotorVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getTargetAngMotorVelocity
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getTargetAngMotorVelocity();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setTargetAngMotorVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setTargetAngMotorVelocity
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setTargetAngMotorVelocity(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getMaxAngMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getMaxAngMotorForce
(JNIEnv * env, jobject object, jlong jointId) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return joint->getMaxAngMotorForce();
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setMaxAngMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setMaxAngMotorForce
(JNIEnv * env, jobject object, jlong jointId, jfloat value) {
btSliderConstraint* joint = reinterpret_cast<btSliderConstraint*>(jointId);
if (joint == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
joint->setMaxAngMotorForce(value);
}
/*
* Class: com_jme3_bullet_joints_SliderJoint
* 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_SliderJoint_createJoint
(JNIEnv * env, jobject object, jlong bodyIdA, jlong bodyIdB, jobject pivotA, jobject rotA, jobject pivotB, jobject rotB, jboolean useLinearReferenceFrameA) {
jmeClasses::initJavaClasses(env);
btRigidBody* bodyA = reinterpret_cast<btRigidBody*>(bodyIdA);
btRigidBody* bodyB = reinterpret_cast<btRigidBody*>(bodyIdB);
btMatrix3x3 mtx1 = btMatrix3x3();
btMatrix3x3 mtx2 = btMatrix3x3();
btTransform transA = btTransform(mtx1);
jmeBulletUtil::convert(env, pivotA, &transA.getOrigin());
jmeBulletUtil::convert(env, rotA, &transA.getBasis());
btTransform transB = btTransform(mtx2);
jmeBulletUtil::convert(env, pivotB, &transB.getOrigin());
jmeBulletUtil::convert(env, rotB, &transB.getBasis());
btSliderConstraint* joint = new btSliderConstraint(*bodyA, *bodyB, transA, transB, useLinearReferenceFrameA);
return reinterpret_cast<jlong>(joint);
}
#ifdef __cplusplus
}
#endif

@ -1,469 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_SliderJoint */
#ifndef _Included_com_jme3_bullet_joints_SliderJoint
#define _Included_com_jme3_bullet_joints_SliderJoint
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getLowerLinLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getLowerLinLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setLowerLinLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setLowerLinLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getUpperLinLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getUpperLinLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setUpperLinLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setUpperLinLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getLowerAngLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getLowerAngLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setLowerAngLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setLowerAngLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getUpperAngLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getUpperAngLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setUpperAngLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setUpperAngLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessDirLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessDirLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionDirLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionDirLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingDirLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingDirLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingDirLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingDirLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessDirAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessDirAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionDirAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionDirAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingDirAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingDirAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingDirAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingDirAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessLimLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessLimLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionLimLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionLimLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingLimLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingLimLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingLimLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingLimLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessLimAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessLimAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionLimAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionLimAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingLimAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingLimAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingLimAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingLimAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessOrthoLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessOrthoLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionOrthoLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionOrthoLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingOrthoLin
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingOrthoLin
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingOrthoLin
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingOrthoLin
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getSoftnessOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getSoftnessOrthoAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setSoftnessOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setSoftnessOrthoAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getRestitutionOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getRestitutionOrthoAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setRestitutionOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setRestitutionOrthoAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getDampingOrthoAng
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getDampingOrthoAng
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setDampingOrthoAng
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setDampingOrthoAng
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: isPoweredLinMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_SliderJoint_isPoweredLinMotor
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setPoweredLinMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setPoweredLinMotor
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getTargetLinMotorVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getTargetLinMotorVelocity
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setTargetLinMotorVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setTargetLinMotorVelocity
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getMaxLinMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getMaxLinMotorForce
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setMaxLinMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setMaxLinMotorForce
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: isPoweredAngMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_SliderJoint_isPoweredAngMotor
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setPoweredAngMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setPoweredAngMotor
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getTargetAngMotorVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getTargetAngMotorVelocity
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setTargetAngMotorVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setTargetAngMotorVelocity
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: getMaxAngMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_SliderJoint_getMaxAngMotorForce
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* Method: setMaxAngMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_SliderJoint_setMaxAngMotorForce
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_SliderJoint
* 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_SliderJoint_createJoint
(JNIEnv *, jobject, jlong, jlong, jobject, jobject, jobject, jobject, jboolean);
#ifdef __cplusplus
}
#endif
#endif

@ -1,365 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_motors_RotationalLimitMotor.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getLoLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getLoLimit
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_loLimit;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setLoLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setLoLimit
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_loLimit = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getHiLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getHiLimit
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_hiLimit;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setHiLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setHiLimit
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_hiLimit = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getTargetVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getTargetVelocity
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_targetVelocity;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setTargetVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setTargetVelocity
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_targetVelocity = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getMaxMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getMaxMotorForce
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_maxMotorForce;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setMaxMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setMaxMotorForce
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_maxMotorForce = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getMaxLimitForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getMaxLimitForce
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_maxLimitForce;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setMaxLimitForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setMaxLimitForce
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_maxLimitForce = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getDamping
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_damping;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setDamping
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setDamping
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_damping = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getLimitSoftness
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getLimitSoftness
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_limitSoftness;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setLimitSoftness
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setLimitSoftness
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_limitSoftness = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getERP
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getERP
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_stopERP;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setERP
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setERP
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_stopERP = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getBounce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getBounce
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_bounce;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setBounce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setBounce
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_bounce = value;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: isEnableMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_isEnableMotor
(JNIEnv *env, jobject object, jlong motorId) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return motor->m_enableMotor;
}
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setEnableMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setEnableMotor
(JNIEnv *env, jobject object, jlong motorId, jboolean value) {
btRotationalLimitMotor* motor = reinterpret_cast<btRotationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_enableMotor = value;
}
#ifdef __cplusplus
}
#endif

@ -1,173 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_joints_motors_RotationalLimitMotor */
#ifndef _Included_com_jme3_bullet_joints_motors_RotationalLimitMotor
#define _Included_com_jme3_bullet_joints_motors_RotationalLimitMotor
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getLoLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getLoLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setLoLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setLoLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getHiLimit
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getHiLimit
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setHiLimit
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setHiLimit
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getTargetVelocity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getTargetVelocity
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setTargetVelocity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setTargetVelocity
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getMaxMotorForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getMaxMotorForce
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setMaxMotorForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setMaxMotorForce
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getMaxLimitForce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getMaxLimitForce
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setMaxLimitForce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setMaxLimitForce
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getDamping
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setDamping
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setDamping
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getLimitSoftness
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getLimitSoftness
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setLimitSoftness
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setLimitSoftness
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getERP
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getERP
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setERP
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setERP
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: getBounce
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_getBounce
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setBounce
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setBounce
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: isEnableMotor
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_isEnableMotor
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_joints_motors_RotationalLimitMotor
* Method: setEnableMotor
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_RotationalLimitMotor_setEnableMotor
(JNIEnv *, jobject, jlong, jboolean);
#ifdef __cplusplus
}
#endif
#endif

@ -1,237 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_joints_motors_TranslationalLimitMotor.h"
#include "jmeBulletUtil.h"
#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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &motor->m_lowerLimit, vector);
}
/*
* 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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, vector, &motor->m_lowerLimit);
}
/*
* 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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &motor->m_upperLimit, vector);
}
/*
* 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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, vector, &motor->m_upperLimit);
}
/*
* 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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &motor->m_accumulatedImpulse, vector);
}
/*
* 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 *env, jobject object, jlong motorId, jobject vector) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, vector, &motor->m_accumulatedImpulse);
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: getLimitSoftness
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getLetLimitSoftness
(JNIEnv *env, jobject object, jlong motorId) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_limitSoftness;
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: setLimitSoftness
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setLimitSoftness
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_limitSoftness = value;
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: getDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getDamping
(JNIEnv *env, jobject object, jlong motorId) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_damping;
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: setDamping
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setDamping
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_damping = value;
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: getRestitution
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_getRestitution
(JNIEnv *env, jobject object, jlong motorId) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return motor->m_restitution;
}
/*
* Class: com_jme3_bullet_joints_motors_TranslationalLimitMotor
* Method: setRestitution
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_joints_motors_TranslationalLimitMotor_setRestitution
(JNIEnv *env, jobject object, jlong motorId, jfloat value) {
btTranslationalLimitMotor* motor = reinterpret_cast<btTranslationalLimitMotor*>(motorId);
if (motor == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
motor->m_restitution = value;
}
#ifdef __cplusplus
}
#endif

@ -1,109 +0,0 @@
/* 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

@ -1,388 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_objects_PhysicsCharacter.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionDispatch/btGhostObject.h"
#include "BulletDynamics/Character/btKinematicCharacterController.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: createGhostObject
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_createGhostObject
(JNIEnv * env, jobject object) {
jmeClasses::initJavaClasses(env);
btPairCachingGhostObject* ghost = new btPairCachingGhostObject();
return reinterpret_cast<jlong>(ghost);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCharacterFlags
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCharacterFlags
(JNIEnv *env, jobject object, jlong ghostId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(ghostId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCollisionFlags(/*ghost->getCollisionFlags() |*/ btCollisionObject::CF_CHARACTER_OBJECT);
ghost->setCollisionFlags(ghost->getCollisionFlags() & ~btCollisionObject::CF_NO_CONTACT_RESPONSE);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: createCharacterObject
* Signature: (JJF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_createCharacterObject
(JNIEnv *env, jobject object, jlong objectId, jlong shapeId, jfloat stepHeight) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
//TODO: check convexshape!
btConvexShape* shape = reinterpret_cast<btConvexShape*>(shapeId);
btKinematicCharacterController* character = new btKinematicCharacterController(ghost, shape, stepHeight);
return reinterpret_cast<jlong>(character);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: warp
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_warp
(JNIEnv *env, jobject object, jlong objectId, jobject vector) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
character->warp(vec);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setWalkDirection
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setWalkDirection
(JNIEnv *env, jobject object, jlong objectId, jobject vector) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, vector, &vec);
character->setWalkDirection(vec);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setUpAxis
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setUpAxis
(JNIEnv *env, jobject object, jlong objectId, jint value) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->setUpAxis(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setFallSpeed
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setFallSpeed
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->setFallSpeed(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setJumpSpeed
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setJumpSpeed
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->setJumpSpeed(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setGravity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setGravity
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->setGravity(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getGravity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getGravity
(JNIEnv *env, jobject object, jlong objectId) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return character->getGravity();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setMaxSlope
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setMaxSlope
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->setMaxSlope(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getMaxSlope
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getMaxSlope
(JNIEnv *env, jobject object, jlong objectId) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return character->getMaxSlope();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: onGround
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_onGround
(JNIEnv *env, jobject object, jlong objectId) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return character->onGround();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: jump
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_jump
(JNIEnv *env, jobject object, jlong objectId) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
character->jump();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getPhysicsLocation
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &ghost->getWorldTransform().getOrigin(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCcdSweptSphereRadius(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCcdMotionThreshold
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCcdMotionThreshold(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong objectId) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdSweptSphereRadius();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdMotionThreshold
(JNIEnv *env, jobject object, jlong objectId) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdMotionThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdSquareMotionThreshold
(JNIEnv *env, jobject object, jlong objectId) {
btGhostObject* ghost = reinterpret_cast<btGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdSquareMotionThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: finalizeNativeCharacter
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_finalizeNativeCharacter
(JNIEnv *env, jobject object, jlong objectId) {
btKinematicCharacterController* character = reinterpret_cast<btKinematicCharacterController*>(objectId);
if (character == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(character);
}
#ifdef __cplusplus
}
#endif

@ -1,215 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_PhysicsCharacter */
#ifndef _Included_com_jme3_bullet_objects_PhysicsCharacter
#define _Included_com_jme3_bullet_objects_PhysicsCharacter
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_NONE
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_NONE 0L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_01
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_01 1L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_02
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_02 2L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_03
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_03 4L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_04
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_04 8L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_05
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_05 16L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_06
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_06 32L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_07
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_07 64L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_08
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_08 128L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_09
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_09 256L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_10
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_10 512L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_11
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_11 1024L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_12
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_12 2048L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_13
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_13 4096L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_14
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_14 8192L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_15
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_15 16384L
#undef com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_16
#define com_jme3_bullet_objects_PhysicsCharacter_COLLISION_GROUP_16 32768L
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: createGhostObject
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_createGhostObject
(JNIEnv *, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCharacterFlags
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCharacterFlags
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: createCharacterObject
* Signature: (JJF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_createCharacterObject
(JNIEnv *, jobject, jlong, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: warp
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_warp
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setWalkDirection
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setWalkDirection
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setUpAxis
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setUpAxis
(JNIEnv *, jobject, jlong, jint);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setFallSpeed
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setFallSpeed
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setJumpSpeed
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setJumpSpeed
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setGravity
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setGravity
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getGravity
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getGravity
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setMaxSlope
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setMaxSlope
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getMaxSlope
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getMaxSlope
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: onGround
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_onGround
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: jump
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_jump
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getPhysicsLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCcdSweptSphereRadius
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_setCcdMotionThreshold
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdSweptSphereRadius
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdMotionThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_getCcdSquareMotionThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsCharacter
* Method: finalizeNativeCharacter
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsCharacter_finalizeNativeCharacter
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,313 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include <BulletCollision/CollisionDispatch/btGhostObject.h>
#include "com_jme3_bullet_objects_PhysicsGhostObject.h"
#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"
#include "jmeBulletUtil.h"
#include "jmePhysicsSpace.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: createGhostObject
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_createGhostObject
(JNIEnv * env, jobject object) {
jmeClasses::initJavaClasses(env);
btPairCachingGhostObject* ghost = new btPairCachingGhostObject();
return reinterpret_cast<jlong>(ghost);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setGhostFlags
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setGhostFlags
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCollisionFlags(ghost->getCollisionFlags() | btCollisionObject::CF_NO_CONTACT_RESPONSE);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsLocation
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, value, &ghost->getWorldTransform().getOrigin());
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsRotation__JLcom_jme3_math_Matrix3f_2
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, value, &ghost->getWorldTransform().getBasis());
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsRotation__JLcom_jme3_math_Quaternion_2
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convertQuat(env, value, &ghost->getWorldTransform().getBasis());
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsLocation
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &ghost->getWorldTransform().getOrigin(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsRotation
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convertQuat(env, &ghost->getWorldTransform().getBasis(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsRotationMatrix
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsRotationMatrix
(JNIEnv *env, jobject object, jlong objectId, jobject value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &ghost->getWorldTransform().getBasis(), value);
}
class jmeGhostOverlapCallback : public btOverlapCallback {
JNIEnv* m_env;
jobject m_object;
public:
jmeGhostOverlapCallback(JNIEnv *env, jobject object)
:m_env(env),
m_object(object)
{
}
virtual ~jmeGhostOverlapCallback() {}
virtual bool processOverlap(btBroadphasePair& pair)
{
btCollisionObject *co1 = (btCollisionObject *)pair.m_pProxy0->m_clientObject;
jmeUserPointer *up1 = (jmeUserPointer*)co1 -> getUserPointer();
jobject javaCollisionObject1 = m_env->NewLocalRef(up1->javaCollisionObject);
m_env->CallVoidMethod(m_object, jmeClasses::PhysicsGhostObject_addOverlappingObject, javaCollisionObject1);
m_env->DeleteLocalRef(javaCollisionObject1);
if (m_env->ExceptionCheck()) {
m_env->Throw(m_env->ExceptionOccurred());
return false;
}
return false;
}
};
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getOverlappingObjects
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getOverlappingObjects
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btHashedOverlappingPairCache * pc = ghost->getOverlappingPairCache();
jmeGhostOverlapCallback cb(env, object);
pc -> processAllOverlappingPairs(&cb, NULL);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getOverlappingCount
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getOverlappingCount
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getNumOverlappingObjects();
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCcdSweptSphereRadius(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setCcdMotionThreshold
(JNIEnv *env, jobject object, jlong objectId, jfloat value) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
ghost->setCcdMotionThreshold(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdSweptSphereRadius();
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdMotionThreshold
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdMotionThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdSquareMotionThreshold
(JNIEnv *env, jobject object, jlong objectId) {
btPairCachingGhostObject* ghost = reinterpret_cast<btPairCachingGhostObject*>(objectId);
if (ghost == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return ghost->getCcdSquareMotionThreshold();
}
#ifdef __cplusplus
}
#endif

@ -1,167 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_PhysicsGhostObject */
#ifndef _Included_com_jme3_bullet_objects_PhysicsGhostObject
#define _Included_com_jme3_bullet_objects_PhysicsGhostObject
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_NONE
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_NONE 0L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_01
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_01 1L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_02
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_02 2L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_03
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_03 4L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_04
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_04 8L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_05
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_05 16L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_06
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_06 32L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_07
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_07 64L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_08
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_08 128L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_09
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_09 256L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_10
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_10 512L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_11
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_11 1024L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_12
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_12 2048L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_13
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_13 4096L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_14
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_14 8192L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_15
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_15 16384L
#undef com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_16
#define com_jme3_bullet_objects_PhysicsGhostObject_COLLISION_GROUP_16 32768L
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: createGhostObject
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_createGhostObject
(JNIEnv *, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setGhostFlags
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setGhostFlags
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsRotation__JLcom_jme3_math_Matrix3f_2
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setPhysicsRotation__JLcom_jme3_math_Quaternion_2
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsRotation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getPhysicsRotationMatrix
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getPhysicsRotationMatrix
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getOverlappingObjects
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getOverlappingObjects
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getOverlappingCount
* Signature: (J)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getOverlappingCount
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setCcdSweptSphereRadius
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_setCcdMotionThreshold
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdSweptSphereRadius
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdMotionThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsGhostObject
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsGhostObject_getCcdSquareMotionThreshold
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,849 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_objects_PhysicsRigidBody.h"
#include "jmeBulletUtil.h"
#include "jmeMotionState.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: createRigidBody
* Signature: (FJJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_createRigidBody
(JNIEnv *env, jobject object, jfloat mass, jlong motionstatId, jlong shapeId) {
jmeClasses::initJavaClasses(env);
btMotionState* motionState = reinterpret_cast<btMotionState*>(motionstatId);
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
btVector3 localInertia = btVector3();
shape->calculateLocalInertia(mass, localInertia);
btRigidBody* body = new btRigidBody(mass, motionState, shape, localInertia);
body->setUserPointer(NULL);
return reinterpret_cast<jlong>(body);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: isInWorld
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_isInWorld
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return body->isInWorld();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsLocation
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
// if (body->isStaticOrKinematicObject() || !body->isInWorld())
((jmeMotionState*) body->getMotionState())->setKinematicLocation(env, value);
body->setCenterOfMassTransform(((jmeMotionState*) body->getMotionState())->worldTransform);
// else{
// btMatrix3x3* mtx = &btMatrix3x3();
// btTransform* trans = &btTransform(*mtx);
// trans->setBasis(body->getCenterOfMassTransform().getBasis());
// jmeBulletUtil::convert(env, value, &trans->getOrigin());
// body->setCenterOfMassTransform(*trans);
// }
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsRotation__JLcom_jme3_math_Matrix3f_2
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
// if (body->isStaticOrKinematicObject() || !body->isInWorld())
((jmeMotionState*) body->getMotionState())->setKinematicRotation(env, value);
body->setCenterOfMassTransform(((jmeMotionState*) body->getMotionState())->worldTransform);
// else{
// btMatrix3x3* mtx = &btMatrix3x3();
// btTransform* trans = &btTransform(*mtx);
// trans->setOrigin(body->getCenterOfMassTransform().getOrigin());
// jmeBulletUtil::convert(env, value, &trans->getBasis());
// body->setCenterOfMassTransform(*trans);
// }
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsRotation__JLcom_jme3_math_Quaternion_2
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
// if (body->isStaticOrKinematicObject() || !body->isInWorld())
((jmeMotionState*) body->getMotionState())->setKinematicRotationQuat(env, value);
body->setCenterOfMassTransform(((jmeMotionState*) body->getMotionState())->worldTransform);
// else{
// btMatrix3x3* mtx = &btMatrix3x3();
// btTransform* trans = &btTransform(*mtx);
// trans->setOrigin(body->getCenterOfMassTransform().getOrigin());
// jmeBulletUtil::convertQuat(env, value, &trans->getBasis());
// body->setCenterOfMassTransform(*trans);
// }
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsLocation
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &body->getWorldTransform().getOrigin(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsRotation
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convertQuat(env, &body->getWorldTransform().getBasis(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsRotationMatrix
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsRotationMatrix
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &body->getWorldTransform().getBasis(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setKinematic
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setKinematic
(JNIEnv *env, jobject object, jlong bodyId, jboolean value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
if (value) {
body->setCollisionFlags(body->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
body->setActivationState(DISABLE_DEACTIVATION);
} else {
body->setCollisionFlags(body->getCollisionFlags() & ~btCollisionObject::CF_KINEMATIC_OBJECT);
body->setActivationState(ACTIVE_TAG);
}
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setCcdSweptSphereRadius(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCcdMotionThreshold
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setCcdMotionThreshold(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdSweptSphereRadius
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getCcdSweptSphereRadius();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdMotionThreshold
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getCcdMotionThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdSquareMotionThreshold
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getCcdSquareMotionThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setStatic
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setStatic
(JNIEnv *env, jobject object, jlong bodyId, jboolean value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
if (value) {
body->setCollisionFlags(body->getCollisionFlags() | btCollisionObject::CF_STATIC_OBJECT);
} else {
body->setCollisionFlags(body->getCollisionFlags() & ~btCollisionObject::CF_STATIC_OBJECT);
}
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: updateMassProps
* Signature: (JJF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_updateMassProps
(JNIEnv *env, jobject object, jlong bodyId, jlong shapeId, jfloat mass) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
btVector3 localInertia = btVector3();
shape->calculateLocalInertia(mass, localInertia);
body->setMassProps(mass, localInertia);
return reinterpret_cast<jlong>(body);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getGravity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &body->getGravity(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setGravity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, value, &vec);
body->setGravity(vec);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getFriction
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getFriction
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getFriction();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setFriction
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setFriction
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setFriction(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setDamping
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setDamping
(JNIEnv *env, jobject object, jlong bodyId, jfloat value1, jfloat value2) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setDamping(value1, value2);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularDamping
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularDamping
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setDamping(body->getAngularDamping(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearDamping
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getLinearDamping();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularDamping
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getAngularDamping();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getRestitution
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getRestitution
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getRestitution();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setRestitution
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setRestitution
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setRestitution(value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularVelocity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &body->getAngularVelocity(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularVelocity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, value, &vec);
body->setAngularVelocity(vec);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearVelocity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &body->getLinearVelocity(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setLinearVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setLinearVelocity
(JNIEnv *env, jobject object, jlong bodyId, jobject value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec = btVector3();
jmeBulletUtil::convert(env, value, &vec);
body->setLinearVelocity(vec);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyForce
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyForce
(JNIEnv *env, jobject object, jlong bodyId, jobject force, jobject location) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
btVector3 vec2 = btVector3();
jmeBulletUtil::convert(env, force, &vec1);
jmeBulletUtil::convert(env, location, &vec2);
body->applyForce(vec1, vec2);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyCentralForce
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyCentralForce
(JNIEnv *env, jobject object, jlong bodyId, jobject force) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, force, &vec1);
body->applyCentralForce(vec1);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyTorque
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyTorque
(JNIEnv *env, jobject object, jlong bodyId, jobject force) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, force, &vec1);
body->applyTorque(vec1);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyImpulse
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyImpulse
(JNIEnv *env, jobject object, jlong bodyId, jobject force, jobject location) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
btVector3 vec2 = btVector3();
jmeBulletUtil::convert(env, force, &vec1);
jmeBulletUtil::convert(env, location, &vec2);
body->applyImpulse(vec1, vec2);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyTorqueImpulse
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyTorqueImpulse
(JNIEnv *env, jobject object, jlong bodyId, jobject force) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
jmeBulletUtil::convert(env, force, &vec1);
body->applyTorqueImpulse(vec1);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: clearForces
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_clearForces
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->clearForces();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCollisionShape
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCollisionShape
(JNIEnv *env, jobject object, jlong bodyId, jlong shapeId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
body->setCollisionShape(shape);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: activate
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_activate
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->activate(false);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: isActive
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_isActive
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return body->isActive();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setSleepingThresholds
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setSleepingThresholds
(JNIEnv *env, jobject object, jlong bodyId, jfloat linear, jfloat angular) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setSleepingThresholds(linear, angular);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setLinearSleepingThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setLinearSleepingThreshold
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setSleepingThresholds(value, body->getLinearSleepingThreshold());
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularSleepingThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularSleepingThreshold
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
body->setSleepingThresholds(body->getAngularSleepingThreshold(), value);
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearSleepingThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearSleepingThreshold
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getLinearSleepingThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularSleepingThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularSleepingThreshold
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getAngularSleepingThreshold();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularFactor
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularFactor
(JNIEnv *env, jobject object, jlong bodyId) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return body->getAngularFactor().getX();
}
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularFactor
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularFactor
(JNIEnv *env, jobject object, jlong bodyId, jfloat value) {
btRigidBody* body = reinterpret_cast<btRigidBody*>(bodyId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 vec1 = btVector3();
vec1.setX(value);
vec1.setY(value);
vec1.setZ(value);
body->setAngularFactor(vec1);
}
#ifdef __cplusplus
}
#endif

@ -1,415 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_PhysicsRigidBody */
#ifndef _Included_com_jme3_bullet_objects_PhysicsRigidBody
#define _Included_com_jme3_bullet_objects_PhysicsRigidBody
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_NONE
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_NONE 0L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_01
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_01 1L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_02
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_02 2L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_03
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_03 4L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_04
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_04 8L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_05
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_05 16L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_06
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_06 32L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_07
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_07 64L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_08
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_08 128L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_09
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_09 256L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_10
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_10 512L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_11
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_11 1024L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_12
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_12 2048L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_13
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_13 4096L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_14
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_14 8192L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_15
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_15 16384L
#undef com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_16
#define com_jme3_bullet_objects_PhysicsRigidBody_COLLISION_GROUP_16 32768L
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: createRigidBody
* Signature: (FJJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_createRigidBody
(JNIEnv *, jobject, jfloat, jlong, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: isInWorld
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_isInWorld
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsRotation__JLcom_jme3_math_Matrix3f_2
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setPhysicsRotation__JLcom_jme3_math_Quaternion_2
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsRotation
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsRotation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getPhysicsRotationMatrix
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getPhysicsRotationMatrix
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setKinematic
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setKinematic
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCcdSweptSphereRadius
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCcdSweptSphereRadius
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCcdMotionThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCcdMotionThreshold
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdSweptSphereRadius
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdSweptSphereRadius
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdMotionThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getCcdSquareMotionThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getCcdSquareMotionThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setStatic
* Signature: (JZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setStatic
(JNIEnv *, jobject, jlong, jboolean);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: updateMassProps
* Signature: (JJF)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_updateMassProps
(JNIEnv *, jobject, jlong, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getGravity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setGravity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setGravity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getFriction
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getFriction
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setFriction
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setFriction
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setDamping
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setDamping
(JNIEnv *, jobject, jlong, jfloat, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularDamping
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularDamping
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearDamping
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularDamping
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularDamping
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getRestitution
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getRestitution
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setRestitution
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setRestitution
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularVelocity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularVelocity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearVelocity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setLinearVelocity
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setLinearVelocity
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyForce
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyForce
(JNIEnv *, jobject, jlong, jobject, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyCentralForce
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyCentralForce
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyTorque
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyTorque
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyImpulse
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyImpulse
(JNIEnv *, jobject, jlong, jobject, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: applyTorqueImpulse
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_applyTorqueImpulse
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: clearForces
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_clearForces
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setCollisionShape
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setCollisionShape
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: activate
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_activate
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: isActive
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_isActive
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setSleepingThresholds
* Signature: (JFF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setSleepingThresholds
(JNIEnv *, jobject, jlong, jfloat, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setLinearSleepingThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setLinearSleepingThreshold
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularSleepingThreshold
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularSleepingThreshold
(JNIEnv *, jobject, jlong, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getLinearSleepingThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getLinearSleepingThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularSleepingThreshold
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularSleepingThreshold
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: getAngularFactor
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_getAngularFactor
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsRigidBody
* Method: setAngularFactor
* Signature: (JF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsRigidBody_setAngularFactor
(JNIEnv *, jobject, jlong, jfloat);
#ifdef __cplusplus
}
#endif
#endif

@ -1,272 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_objects_PhysicsVehicle.h"
#include "jmeBulletUtil.h"
#include "jmePhysicsSpace.h"
#include "BulletDynamics/Vehicle/btRaycastVehicle.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: updateWheelTransform
* Signature: (JIZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_updateWheelTransform
(JNIEnv *env, jobject object, jlong vehicleId, jint wheel, jboolean interpolated) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->updateWheelTransform(wheel, interpolated);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: createVehicleRaycaster
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
(JNIEnv *env, jobject object, jlong bodyId, jlong spaceId) {
//btRigidBody* body = reinterpret_cast<btRigidBody*> bodyId;
jmeClasses::initJavaClasses(env);
jmePhysicsSpace *space = reinterpret_cast<jmePhysicsSpace*>(spaceId);
if (space == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btDefaultVehicleRaycaster* caster = new btDefaultVehicleRaycaster(space->getDynamicsWorld());
return reinterpret_cast<jlong>(caster);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: createRaycastVehicle
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
(JNIEnv *env, jobject object, jlong objectId, jlong casterId) {
jmeClasses::initJavaClasses(env);
btRigidBody* body = reinterpret_cast<btRigidBody*>(objectId);
if (body == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
body->setActivationState(DISABLE_DEACTIVATION);
btVehicleRaycaster* caster = reinterpret_cast<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* vehicle = new btRaycastVehicle(tuning, body, caster);
return reinterpret_cast<jlong>(vehicle);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: setCoordinateSystem
* Signature: (JIII)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_setCoordinateSystem
(JNIEnv *env, jobject object, jlong vehicleId, jint right, jint up, jint forward) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->setCoordinateSystem(right, up, forward);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: addWheel
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;FFLcom/jme3/bullet/objects/infos/VehicleTuning;Z)J
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_addWheel
(JNIEnv *env, jobject object, jlong vehicleId, jobject location, jobject direction, jobject axle, jfloat restLength, jfloat radius, jobject tuning, jboolean frontWheel) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
btVector3 vec1 = btVector3();
btVector3 vec2 = btVector3();
btVector3 vec3 = btVector3();
jmeBulletUtil::convert(env, location, &vec1);
jmeBulletUtil::convert(env, direction, &vec2);
jmeBulletUtil::convert(env, axle, &vec3);
btRaycastVehicle::btVehicleTuning tune;
btWheelInfo* info = &vehicle->addWheel(vec1, vec2, vec3, restLength, radius, tune, frontWheel);
int idx = vehicle->getNumWheels();
return idx-1;
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: resetSuspension
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_resetSuspension
(JNIEnv *env, jobject object, jlong vehicleId) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->resetSuspension();
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: applyEngineForce
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_applyEngineForce
(JNIEnv *env, jobject object, jlong vehicleId, jint wheel, jfloat force) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->applyEngineForce(force, wheel);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: steer
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_steer
(JNIEnv *env, jobject object, jlong vehicleId, jint wheel, jfloat value) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->setSteeringValue(value, wheel);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: brake
* Signature: (JIF)F
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_brake
(JNIEnv *env, jobject object, jlong vehicleId, jint wheel, jfloat value) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
vehicle->setBrake(value, wheel);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: getCurrentVehicleSpeedKmHour
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_getCurrentVehicleSpeedKmHour
(JNIEnv *env, jobject object, jlong vehicleId) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return vehicle->getCurrentSpeedKmHour();
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: getForwardVector
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_getForwardVector
(JNIEnv *env, jobject object, jlong vehicleId, jobject out) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
btVector3 forwardVector = vehicle->getForwardVector();
jmeBulletUtil::convert(env, &forwardVector, out);
}
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: finalizeNative
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_finalizeNative
(JNIEnv *env, jobject object, jlong casterId, jlong vehicleId) {
btVehicleRaycaster* rayCaster = reinterpret_cast<btVehicleRaycaster*>(casterId);
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(vehicle);
if (rayCaster == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(rayCaster);
}
#ifdef __cplusplus
}
#endif

@ -1,143 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_PhysicsVehicle */
#ifndef _Included_com_jme3_bullet_objects_PhysicsVehicle
#define _Included_com_jme3_bullet_objects_PhysicsVehicle
#ifdef __cplusplus
extern "C" {
#endif
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_NONE
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_NONE 0L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_01
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_01 1L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_02
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_02 2L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_03
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_03 4L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_04
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_04 8L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_05
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_05 16L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_06
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_06 32L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_07
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_07 64L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_08
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_08 128L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_09
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_09 256L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_10
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_10 512L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_11
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_11 1024L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_12
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_12 2048L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_13
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_13 4096L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_14
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_14 8192L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_15
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_15 16384L
#undef com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_16
#define com_jme3_bullet_objects_PhysicsVehicle_COLLISION_GROUP_16 32768L
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: updateWheelTransform
* Signature: (JIZ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_updateWheelTransform
(JNIEnv *, jobject, jlong, jint, jboolean);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: createVehicleRaycaster
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createVehicleRaycaster
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: createRaycastVehicle
* Signature: (JJ)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_createRaycastVehicle
(JNIEnv *, jobject, jlong, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: setCoordinateSystem
* Signature: (JIII)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_setCoordinateSystem
(JNIEnv *, jobject, jlong, jint, jint, jint);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: addWheel
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;Lcom/jme3/math/Vector3f;FFLcom/jme3/bullet/objects/infos/VehicleTuning;Z)I
*/
JNIEXPORT jint JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_addWheel
(JNIEnv *, jobject, jlong, jobject, jobject, jobject, jfloat, jfloat, jobject, jboolean);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: resetSuspension
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_resetSuspension
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: applyEngineForce
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_applyEngineForce
(JNIEnv *, jobject, jlong, jint, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: steer
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_steer
(JNIEnv *, jobject, jlong, jint, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: brake
* Signature: (JIF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_brake
(JNIEnv *, jobject, jlong, jint, jfloat);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: getCurrentVehicleSpeedKmHour
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_getCurrentVehicleSpeedKmHour
(JNIEnv *, jobject, jlong);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: getForwardVector
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_getForwardVector
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_PhysicsVehicle
* Method: finalizeNative
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_PhysicsVehicle_finalizeNative
(JNIEnv *, jobject, jlong, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,147 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_objects_VehicleWheel.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getWheelLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getWheelLocation
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex, jobject out) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &vehicle->getWheelInfo(wheelIndex).m_worldTransform.getOrigin(), out);
}
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getWheelRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getWheelRotation
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex, jobject out) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &vehicle->getWheelInfo(wheelIndex).m_worldTransform.getBasis(), out);
}
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: applyInfo
* Signature: (JFFFFFFFFZF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_applyInfo
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex, jfloat suspensionStiffness, jfloat wheelsDampingRelaxation, jfloat wheelsDampingCompression, jfloat frictionSlip, jfloat rollInfluence, jfloat maxSuspensionTravelCm, jfloat maxSuspensionForce, jfloat radius, jboolean frontWheel, jfloat restLength) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
vehicle->getWheelInfo(wheelIndex).m_suspensionStiffness = suspensionStiffness;
vehicle->getWheelInfo(wheelIndex).m_wheelsDampingRelaxation = wheelsDampingRelaxation;
vehicle->getWheelInfo(wheelIndex).m_wheelsDampingCompression = wheelsDampingCompression;
vehicle->getWheelInfo(wheelIndex).m_frictionSlip = frictionSlip;
vehicle->getWheelInfo(wheelIndex).m_rollInfluence = rollInfluence;
vehicle->getWheelInfo(wheelIndex).m_maxSuspensionTravelCm = maxSuspensionTravelCm;
vehicle->getWheelInfo(wheelIndex).m_maxSuspensionForce = maxSuspensionForce;
vehicle->getWheelInfo(wheelIndex).m_wheelsRadius = radius;
vehicle->getWheelInfo(wheelIndex).m_bIsFrontWheel = frontWheel;
vehicle->getWheelInfo(wheelIndex).m_suspensionRestLength1 = restLength;
}
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getCollisionLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getCollisionLocation
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex, jobject out) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &vehicle->getWheelInfo(wheelIndex).m_raycastInfo.m_contactPointWS, out);
}
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getCollisionNormal
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getCollisionNormal
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex, jobject out) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &vehicle->getWheelInfo(wheelIndex).m_raycastInfo.m_contactNormalWS, out);
}
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getSkidInfo
* Signature: (J)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getSkidInfo
(JNIEnv *env, jobject object, jlong vehicleId, jint wheelIndex) {
btRaycastVehicle* vehicle = reinterpret_cast<btRaycastVehicle*>(vehicleId);
if (vehicle == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return 0;
}
return vehicle->getWheelInfo(wheelIndex).m_skidInfo;
}
#ifdef __cplusplus
}
#endif

@ -1,61 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_VehicleWheel */
#ifndef _Included_com_jme3_bullet_objects_VehicleWheel
#define _Included_com_jme3_bullet_objects_VehicleWheel
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getWheelLocation
* Signature: (JILcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getWheelLocation
(JNIEnv *, jobject, jlong, jint, jobject);
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getWheelRotation
* Signature: (JILcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getWheelRotation
(JNIEnv *, jobject, jlong, jint, jobject);
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: applyInfo
* Signature: (JIFFFFFFFFZF)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_applyInfo
(JNIEnv *, jobject, jlong, jint, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jboolean, jfloat);
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getCollisionLocation
* Signature: (JILcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getCollisionLocation
(JNIEnv *, jobject, jlong, jint, jobject);
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getCollisionNormal
* Signature: (JILcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getCollisionNormal
(JNIEnv *, jobject, jlong, jint, jobject);
/*
* Class: com_jme3_bullet_objects_VehicleWheel
* Method: getSkidInfo
* Signature: (JI)F
*/
JNIEXPORT jfloat JNICALL Java_com_jme3_bullet_objects_VehicleWheel_getSkidInfo
(JNIEnv *, jobject, jlong, jint);
#ifdef __cplusplus
}
#endif
#endif

@ -1,138 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_objects_infos_RigidBodyMotionState.h"
#include "jmeBulletUtil.h"
#include "jmeMotionState.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: createMotionState
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_createMotionState
(JNIEnv *env, jobject object) {
jmeClasses::initJavaClasses(env);
jmeMotionState* motionState = new jmeMotionState();
return reinterpret_cast<jlong>(motionState);
}
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: applyTransform
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Quaternion;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_applyTransform
(JNIEnv *env, jobject object, jlong stateId, jobject location, jobject rotation) {
jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId);
if (motionState == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return false;
}
return motionState->applyTransform(env, location, rotation);
}
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldLocation
(JNIEnv *env, jobject object, jlong stateId, jobject value) {
jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId);
if (motionState == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &motionState->worldTransform.getOrigin(), value);
}
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotation
(JNIEnv *env, jobject object, jlong stateId, jobject value) {
jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId);
if (motionState == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convert(env, &motionState->worldTransform.getBasis(), value);
}
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldRotationQuat
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotationQuat
(JNIEnv *env, jobject object, jlong stateId, jobject value) {
jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId);
if (motionState == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
jmeBulletUtil::convertQuat(env, &motionState->worldTransform.getBasis(), value);
}
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_finalizeNative
(JNIEnv *env, jobject object, jlong stateId) {
jmeMotionState* motionState = reinterpret_cast<jmeMotionState*>(stateId);
if (motionState == NULL) {
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "The native object does not exist.");
return;
}
delete(motionState);
}
#ifdef __cplusplus
}
#endif

@ -1,61 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_objects_infos_RigidBodyMotionState */
#ifndef _Included_com_jme3_bullet_objects_infos_RigidBodyMotionState
#define _Included_com_jme3_bullet_objects_infos_RigidBodyMotionState
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: createMotionState
* Signature: ()J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_createMotionState
(JNIEnv *, jobject);
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: applyTransform
* Signature: (JLcom/jme3/math/Vector3f;Lcom/jme3/math/Quaternion;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_applyTransform
(JNIEnv *, jobject, jlong, jobject, jobject);
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldLocation
* Signature: (JLcom/jme3/math/Vector3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldLocation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldRotation
* Signature: (JLcom/jme3/math/Matrix3f;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotation
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: getWorldRotationQuat
* Signature: (JLcom/jme3/math/Quaternion;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_getWorldRotationQuat
(JNIEnv *, jobject, jlong, jobject);
/*
* Class: com_jme3_bullet_objects_infos_RigidBodyMotionState
* Method: finalizeNative
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_objects_infos_RigidBodyMotionState_finalizeNative
(JNIEnv *, jobject, jlong);
#ifdef __cplusplus
}
#endif
#endif

@ -1,152 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen, CJ Hare
*/
#include "com_jme3_bullet_util_DebugShapeFactory.h"
#include "jmeBulletUtil.h"
#include "BulletCollision/CollisionShapes/btShapeHull.h"
class DebugCallback : public btTriangleCallback, public btInternalTriangleIndexCallback {
public:
JNIEnv* env;
jobject callback;
DebugCallback(JNIEnv* env, jobject object) {
this->env = env;
this->callback = object;
}
virtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) {
processTriangle(triangle, partId, triangleIndex);
}
virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) {
btVector3 vertexA, vertexB, vertexC;
vertexA = triangle[0];
vertexB = triangle[1];
vertexC = triangle[2];
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexA.getX(), vertexA.getY(), vertexA.getZ(), partId, triangleIndex);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
// triangle =
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexB.getX(), vertexB.getY(), vertexB.getZ(), partId, triangleIndex);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexC.getX(), vertexC.getY(), vertexC.getZ(), partId, triangleIndex);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
};
#ifdef __cplusplus
extern "C" {
#endif
/* Inaccessible static: _00024assertionsDisabled */
/*
* Class: com_jme3_bullet_util_DebugShapeFactory
* Method: getVertices
* Signature: (JLcom/jme3/bullet/util/DebugMeshCallback;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_util_DebugShapeFactory_getVertices
(JNIEnv *env, jclass clazz, jlong shapeId, jobject callback) {
btCollisionShape* shape = reinterpret_cast<btCollisionShape*>(shapeId);
if (shape->isConcave()) {
btConcaveShape* concave = reinterpret_cast<btConcaveShape*>(shape);
DebugCallback* clb = new DebugCallback(env, callback);
btVector3 min = btVector3(-1e30, -1e30, -1e30);
btVector3 max = btVector3(1e30, 1e30, 1e30);
concave->processAllTriangles(clb, min, max);
delete(clb);
} else if (shape->isConvex()) {
btConvexShape* convexShape = reinterpret_cast<btConvexShape*>(shape);
// Check there is a hull shape to render
if (convexShape->getUserPointer() == NULL) {
// create a hull approximation
btShapeHull* hull = new btShapeHull(convexShape);
float margin = convexShape->getMargin();
hull->buildHull(margin);
convexShape->setUserPointer(hull);
}
btShapeHull* hull = (btShapeHull*) convexShape->getUserPointer();
int numberOfTriangles = hull->numTriangles();
int numberOfFloats = 3 * 3 * numberOfTriangles;
int byteBufferSize = numberOfFloats * 4;
// Loop variables
const unsigned int* hullIndices = hull->getIndexPointer();
const btVector3* hullVertices = hull->getVertexPointer();
btVector3 vertexA, vertexB, vertexC;
int index = 0;
for (int i = 0; i < numberOfTriangles; i++) {
// Grab the data for this triangle from the hull
vertexA = hullVertices[hullIndices[index++]];
vertexB = hullVertices[hullIndices[index++]];
vertexC = hullVertices[hullIndices[index++]];
// Put the verticies into the vertex buffer
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexA.getX(), vertexA.getY(), vertexA.getZ());
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexB.getX(), vertexB.getY(), vertexB.getZ());
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->CallVoidMethod(callback, jmeClasses::DebugMeshCallback_addVector, vertexC.getX(), vertexC.getY(), vertexC.getZ());
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
delete hull;
convexShape->setUserPointer(NULL);
}
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_util_DebugShapeFactory */
#ifndef _Included_com_jme3_bullet_util_DebugShapeFactory
#define _Included_com_jme3_bullet_util_DebugShapeFactory
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_util_DebugShapeFactory
* Method: getVertices
* Signature: (JLcom/jme3/bullet/util/DebugMeshCallback;)V
*/
JNIEXPORT void JNICALL Java_com_jme3_bullet_util_DebugShapeFactory_getVertices
(JNIEnv *, jclass, jlong, jobject);
#ifdef __cplusplus
}
#endif
#endif

@ -1,59 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* Author: Normen Hansen
*/
#include "com_jme3_bullet_util_NativeMeshUtil.h"
#include "jmeBulletUtil.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_util_NativeMeshUtil
* Method: createTriangleIndexVertexArray
* Signature: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;IIII)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_util_NativeMeshUtil_createTriangleIndexVertexArray
(JNIEnv * env, jclass cls, jobject triangleIndexBase, jobject vertexIndexBase, jint numTriangles, jint numVertices, jint vertexStride, jint triangleIndexStride) {
jmeClasses::initJavaClasses(env);
int* triangles = (int*) env->GetDirectBufferAddress(triangleIndexBase);
float* vertices = (float*) env->GetDirectBufferAddress(vertexIndexBase);
btTriangleIndexVertexArray* array = new btTriangleIndexVertexArray(numTriangles, triangles, triangleIndexStride, numVertices, vertices, vertexStride);
return reinterpret_cast<jlong>(array);
}
#ifdef __cplusplus
}
#endif

@ -1,21 +0,0 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jme3_bullet_util_NativeMeshUtil */
#ifndef _Included_com_jme3_bullet_util_NativeMeshUtil
#define _Included_com_jme3_bullet_util_NativeMeshUtil
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jme3_bullet_util_NativeMeshUtil
* Method: createTriangleIndexVertexArray
* Signature: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;IIII)J
*/
JNIEXPORT jlong JNICALL Java_com_jme3_bullet_util_NativeMeshUtil_createTriangleIndexVertexArray
(JNIEnv *, jclass, jobject, jobject, jint, jint, jint, jint);
#ifdef __cplusplus
}
#endif
#endif

@ -1,327 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <math.h>
#include "jmeBulletUtil.h"
/**
* Author: Normen Hansen,Empire Phoenix, Lutherion
*/
void jmeBulletUtil::convert(JNIEnv* env, jobject in, btVector3* out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
float x = env->GetFloatField(in, jmeClasses::Vector3f_x); //env->CallFloatMethod(in, jmeClasses::Vector3f_getX);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float y = env->GetFloatField(in, jmeClasses::Vector3f_y); //env->CallFloatMethod(in, jmeClasses::Vector3f_getY);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float z = env->GetFloatField(in, jmeClasses::Vector3f_z); //env->CallFloatMethod(in, jmeClasses::Vector3f_getZ);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
out->setX(x);
out->setY(y);
out->setZ(z);
}
void jmeBulletUtil::convert(JNIEnv* env, const btVector3* in, jobject out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
float x = in->getX();
float y = in->getY();
float z = in->getZ();
env->SetFloatField(out, jmeClasses::Vector3f_x, x);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Vector3f_y, y);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Vector3f_z, z);
// env->CallObjectMethod(out, jmeClasses::Vector3f_set, x, y, z);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmeBulletUtil::convert(JNIEnv* env, jobject in, btMatrix3x3* out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
float m00 = env->GetFloatField(in, jmeClasses::Matrix3f_m00);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m01 = env->GetFloatField(in, jmeClasses::Matrix3f_m01);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m02 = env->GetFloatField(in, jmeClasses::Matrix3f_m02);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m10 = env->GetFloatField(in, jmeClasses::Matrix3f_m10);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m11 = env->GetFloatField(in, jmeClasses::Matrix3f_m11);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m12 = env->GetFloatField(in, jmeClasses::Matrix3f_m12);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m20 = env->GetFloatField(in, jmeClasses::Matrix3f_m20);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m21 = env->GetFloatField(in, jmeClasses::Matrix3f_m21);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float m22 = env->GetFloatField(in, jmeClasses::Matrix3f_m22);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
out->setValue(m00, m01, m02, m10, m11, m12, m20, m21, m22);
}
void jmeBulletUtil::convert(JNIEnv* env, const btMatrix3x3* in, jobject out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
float m00 = in->getRow(0).m_floats[0];
float m01 = in->getRow(0).m_floats[1];
float m02 = in->getRow(0).m_floats[2];
float m10 = in->getRow(1).m_floats[0];
float m11 = in->getRow(1).m_floats[1];
float m12 = in->getRow(1).m_floats[2];
float m20 = in->getRow(2).m_floats[0];
float m21 = in->getRow(2).m_floats[1];
float m22 = in->getRow(2).m_floats[2];
env->SetFloatField(out, jmeClasses::Matrix3f_m00, m00);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m01, m01);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m02, m02);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m10, m10);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m11, m11);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m12, m12);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m20, m20);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m21, m21);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Matrix3f_m22, m22);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmeBulletUtil::convertQuat(JNIEnv* env, jobject in, btMatrix3x3* out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
float x = env->GetFloatField(in, jmeClasses::Quaternion_x);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float y = env->GetFloatField(in, jmeClasses::Quaternion_y);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float z = env->GetFloatField(in, jmeClasses::Quaternion_z);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float w = env->GetFloatField(in, jmeClasses::Quaternion_w);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
float norm = w * w + x * x + y * y + z * z;
float s = (norm == 1.0) ? 2.0 : (norm > 0.1) ? 2.0 / norm : 0.0;
// compute xs/ys/zs first to save 6 multiplications, since xs/ys/zs
// will be used 2-4 times each.
float xs = x * s;
float ys = y * s;
float zs = z * s;
float xx = x * xs;
float xy = x * ys;
float xz = x * zs;
float xw = w * xs;
float yy = y * ys;
float yz = y * zs;
float yw = w * ys;
float zz = z * zs;
float zw = w * zs;
// using s=2/norm (instead of 1/norm) saves 9 multiplications by 2 here
out->setValue(1.0 - (yy + zz), (xy - zw), (xz + yw),
(xy + zw), 1 - (xx + zz), (yz - xw),
(xz - yw), (yz + xw), 1.0 - (xx + yy));
}
void jmeBulletUtil::convertQuat(JNIEnv* env, const btMatrix3x3* in, jobject out) {
if (in == NULL || out == NULL) {
jmeClasses::throwNPE(env);
}
// the trace is the sum of the diagonal elements; see
// http://mathworld.wolfram.com/MatrixTrace.html
float t = in->getRow(0).m_floats[0] + in->getRow(1).m_floats[1] + in->getRow(2).m_floats[2];
float w, x, y, z;
// we protect the division by s by ensuring that s>=1
if (t >= 0) { // |w| >= .5
float s = sqrt(t + 1); // |s|>=1 ...
w = 0.5f * s;
s = 0.5f / s; // so this division isn't bad
x = (in->getRow(2).m_floats[1] - in->getRow(1).m_floats[2]) * s;
y = (in->getRow(0).m_floats[2] - in->getRow(2).m_floats[0]) * s;
z = (in->getRow(1).m_floats[0] - in->getRow(0).m_floats[1]) * s;
} else if ((in->getRow(0).m_floats[0] > in->getRow(1).m_floats[1]) && (in->getRow(0).m_floats[0] > in->getRow(2).m_floats[2])) {
float s = sqrt(1.0f + in->getRow(0).m_floats[0] - in->getRow(1).m_floats[1] - in->getRow(2).m_floats[2]); // |s|>=1
x = s * 0.5f; // |x| >= .5
s = 0.5f / s;
y = (in->getRow(1).m_floats[0] + in->getRow(0).m_floats[1]) * s;
z = (in->getRow(0).m_floats[2] + in->getRow(2).m_floats[0]) * s;
w = (in->getRow(2).m_floats[1] - in->getRow(1).m_floats[2]) * s;
} else if (in->getRow(1).m_floats[1] > in->getRow(2).m_floats[2]) {
float s = sqrt(1.0f + in->getRow(1).m_floats[1] - in->getRow(0).m_floats[0] - in->getRow(2).m_floats[2]); // |s|>=1
y = s * 0.5f; // |y| >= .5
s = 0.5f / s;
x = (in->getRow(1).m_floats[0] + in->getRow(0).m_floats[1]) * s;
z = (in->getRow(2).m_floats[1] + in->getRow(1).m_floats[2]) * s;
w = (in->getRow(0).m_floats[2] - in->getRow(2).m_floats[0]) * s;
} else {
float s = sqrt(1.0f + in->getRow(2).m_floats[2] - in->getRow(0).m_floats[0] - in->getRow(1).m_floats[1]); // |s|>=1
z = s * 0.5f; // |z| >= .5
s = 0.5f / s;
x = (in->getRow(0).m_floats[2] + in->getRow(2).m_floats[0]) * s;
y = (in->getRow(2).m_floats[1] + in->getRow(1).m_floats[2]) * s;
w = (in->getRow(1).m_floats[0] - in->getRow(0).m_floats[1]) * s;
}
env->SetFloatField(out, jmeClasses::Quaternion_x, x);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Quaternion_y, y);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Quaternion_z, z);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
env->SetFloatField(out, jmeClasses::Quaternion_w, w);
// env->CallObjectMethod(out, jmeClasses::Quaternion_set, x, y, z, w);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmeBulletUtil::addResult(JNIEnv* env, jobject resultlist, btVector3 hitnormal, btVector3 m_hitPointWorld, btScalar m_hitFraction, btCollisionObject* hitobject) {
jobject singleresult = env->AllocObject(jmeClasses::PhysicsRay_Class);
jobject hitnormalvec = env->AllocObject(jmeClasses::Vector3f);
convert(env, const_cast<btVector3*> (&hitnormal), hitnormalvec);
jmeUserPointer *up1 = (jmeUserPointer*) hitobject -> getUserPointer();
env->SetObjectField(singleresult, jmeClasses::PhysicsRay_normalInWorldSpace, hitnormalvec);
env->SetFloatField(singleresult, jmeClasses::PhysicsRay_hitfraction, m_hitFraction);
env->SetObjectField(singleresult, jmeClasses::PhysicsRay_collisionObject, up1->javaCollisionObject);
env->CallVoidMethod(resultlist, jmeClasses::PhysicsRay_addmethod, singleresult);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}

@ -1,61 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "jmeClasses.h"
#include "btBulletDynamicsCommon.h"
#include "btBulletCollisionCommon.h"
#include "LinearMath/btVector3.h"
/**
* Author: Normen Hansen
*/
class jmeBulletUtil{
public:
static void convert(JNIEnv* env, jobject in, btVector3* out);
static void convert(JNIEnv* env, const btVector3* in, jobject out);
static void convert(JNIEnv* env, jobject in, btMatrix3x3* out);
static void convert(JNIEnv* env, const btMatrix3x3* in, jobject out);
static void convertQuat(JNIEnv* env, jobject in, btMatrix3x3* out);
static void convertQuat(JNIEnv* env, const btMatrix3x3* in, jobject out);
static void addResult(JNIEnv* env, jobject resultlist, const btVector3 hitnormal,const btVector3 m_hitPointWorld,const btScalar m_hitFraction,btCollisionObject* hitobject);
private:
jmeBulletUtil(){};
~jmeBulletUtil(){};
};
class jmeUserPointer {
public:
jobject javaCollisionObject;
jint group;
jint groups;
void *space;
};

@ -1,250 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "jmeClasses.h"
#include <stdio.h>
/**
* Author: Normen Hansen,Empire Phoenix, Lutherion
*/
//public fields
jclass jmeClasses::PhysicsSpace;
jmethodID jmeClasses::PhysicsSpace_preTick;
jmethodID jmeClasses::PhysicsSpace_postTick;
jmethodID jmeClasses::PhysicsSpace_addCollisionEvent;
jclass jmeClasses::PhysicsGhostObject;
jmethodID jmeClasses::PhysicsGhostObject_addOverlappingObject;
jclass jmeClasses::Vector3f;
jmethodID jmeClasses::Vector3f_set;
jmethodID jmeClasses::Vector3f_toArray;
jmethodID jmeClasses::Vector3f_getX;
jmethodID jmeClasses::Vector3f_getY;
jmethodID jmeClasses::Vector3f_getZ;
jfieldID jmeClasses::Vector3f_x;
jfieldID jmeClasses::Vector3f_y;
jfieldID jmeClasses::Vector3f_z;
jclass jmeClasses::Quaternion;
jmethodID jmeClasses::Quaternion_set;
jmethodID jmeClasses::Quaternion_getX;
jmethodID jmeClasses::Quaternion_getY;
jmethodID jmeClasses::Quaternion_getZ;
jmethodID jmeClasses::Quaternion_getW;
jfieldID jmeClasses::Quaternion_x;
jfieldID jmeClasses::Quaternion_y;
jfieldID jmeClasses::Quaternion_z;
jfieldID jmeClasses::Quaternion_w;
jclass jmeClasses::Matrix3f;
jmethodID jmeClasses::Matrix3f_set;
jmethodID jmeClasses::Matrix3f_get;
jfieldID jmeClasses::Matrix3f_m00;
jfieldID jmeClasses::Matrix3f_m01;
jfieldID jmeClasses::Matrix3f_m02;
jfieldID jmeClasses::Matrix3f_m10;
jfieldID jmeClasses::Matrix3f_m11;
jfieldID jmeClasses::Matrix3f_m12;
jfieldID jmeClasses::Matrix3f_m20;
jfieldID jmeClasses::Matrix3f_m21;
jfieldID jmeClasses::Matrix3f_m22;
jclass jmeClasses::DebugMeshCallback;
jmethodID jmeClasses::DebugMeshCallback_addVector;
jclass jmeClasses::PhysicsRay_Class;
jmethodID jmeClasses::PhysicsRay_newSingleResult;
jfieldID jmeClasses::PhysicsRay_normalInWorldSpace;
jfieldID jmeClasses::PhysicsRay_hitfraction;
jfieldID jmeClasses::PhysicsRay_collisionObject;
jclass jmeClasses::PhysicsRay_listresult;
jmethodID jmeClasses::PhysicsRay_addmethod;
//private fields
//JNIEnv* jmeClasses::env;
JavaVM* jmeClasses::vm;
void jmeClasses::initJavaClasses(JNIEnv* env) {
// if (env != NULL) {
// fprintf(stdout, "Check Java VM state\n");
// fflush(stdout);
// int res = vm->AttachCurrentThread((void**) &jmeClasses::env, NULL);
// if (res < 0) {
// fprintf(stdout, "** ERROR: getting Java env!\n");
// if (res == JNI_EVERSION) fprintf(stdout, "GetEnv Error because of different JNI Version!\n");
// fflush(stdout);
// }
// return;
// }
if(PhysicsSpace!=NULL) return;
fprintf(stdout, "Bullet-Native: Initializing java classes\n");
fflush(stdout);
// jmeClasses::env = env;
env->GetJavaVM(&vm);
PhysicsSpace = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/PhysicsSpace"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsSpace_preTick = env->GetMethodID(PhysicsSpace, "preTick_native", "(F)V");
PhysicsSpace_postTick = env->GetMethodID(PhysicsSpace, "postTick_native", "(F)V");
PhysicsSpace_addCollisionEvent = env->GetMethodID(PhysicsSpace, "addCollisionEvent_native","(Lcom/jme3/bullet/collision/PhysicsCollisionObject;Lcom/jme3/bullet/collision/PhysicsCollisionObject;J)V");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsGhostObject = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/objects/PhysicsGhostObject"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsGhostObject_addOverlappingObject = env->GetMethodID(PhysicsGhostObject, "addOverlappingObject_native","(Lcom/jme3/bullet/collision/PhysicsCollisionObject;)V");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
Vector3f = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Vector3f"));
Vector3f_set = env->GetMethodID(Vector3f, "set", "(FFF)Lcom/jme3/math/Vector3f;");
Vector3f_toArray = env->GetMethodID(Vector3f, "toArray", "([F)[F");
Vector3f_getX = env->GetMethodID(Vector3f, "getX", "()F");
Vector3f_getY = env->GetMethodID(Vector3f, "getY", "()F");
Vector3f_getZ = env->GetMethodID(Vector3f, "getZ", "()F");
Vector3f_x = env->GetFieldID(Vector3f, "x", "F");
Vector3f_y = env->GetFieldID(Vector3f, "y", "F");
Vector3f_z = env->GetFieldID(Vector3f, "z", "F");
Quaternion = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Quaternion"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
Quaternion_set = env->GetMethodID(Quaternion, "set", "(FFFF)Lcom/jme3/math/Quaternion;");
Quaternion_getW = env->GetMethodID(Quaternion, "getW", "()F");
Quaternion_getX = env->GetMethodID(Quaternion, "getX", "()F");
Quaternion_getY = env->GetMethodID(Quaternion, "getY", "()F");
Quaternion_getZ = env->GetMethodID(Quaternion, "getZ", "()F");
Quaternion_x = env->GetFieldID(Quaternion, "x", "F");
Quaternion_y = env->GetFieldID(Quaternion, "y", "F");
Quaternion_z = env->GetFieldID(Quaternion, "z", "F");
Quaternion_w = env->GetFieldID(Quaternion, "w", "F");
Matrix3f = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/math/Matrix3f"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
Matrix3f_set = env->GetMethodID(Matrix3f, "set", "(IIF)Lcom/jme3/math/Matrix3f;");
Matrix3f_get = env->GetMethodID(Matrix3f, "get", "(II)F");
Matrix3f_m00 = env->GetFieldID(Matrix3f, "m00", "F");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
Matrix3f_m01 = env->GetFieldID(Matrix3f, "m01", "F");
Matrix3f_m02 = env->GetFieldID(Matrix3f, "m02", "F");
Matrix3f_m10 = env->GetFieldID(Matrix3f, "m10", "F");
Matrix3f_m11 = env->GetFieldID(Matrix3f, "m11", "F");
Matrix3f_m12 = env->GetFieldID(Matrix3f, "m12", "F");
Matrix3f_m20 = env->GetFieldID(Matrix3f, "m20", "F");
Matrix3f_m21 = env->GetFieldID(Matrix3f, "m21", "F");
Matrix3f_m22 = env->GetFieldID(Matrix3f, "m22", "F");
DebugMeshCallback = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/util/DebugMeshCallback"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
DebugMeshCallback_addVector = env->GetMethodID(DebugMeshCallback, "addVector", "(FFFII)V");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_Class = (jclass)env->NewGlobalRef(env->FindClass("com/jme3/bullet/collision/PhysicsRayTestResult"));
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_newSingleResult = env->GetMethodID(PhysicsRay_Class,"<init>","()V");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_normalInWorldSpace = env->GetFieldID(PhysicsRay_Class,"hitNormalLocal","Lcom/jme3/math/Vector3f;");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_hitfraction = env->GetFieldID(PhysicsRay_Class,"hitFraction","F");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_collisionObject = env->GetFieldID(PhysicsRay_Class,"collisionObject","Lcom/jme3/bullet/collision/PhysicsCollisionObject;");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_listresult = env->FindClass("java/util/List");
PhysicsRay_listresult = (jclass)env->NewGlobalRef(PhysicsRay_listresult);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
PhysicsRay_addmethod = env->GetMethodID(PhysicsRay_listresult,"add","(Ljava/lang/Object;)Z");
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmeClasses::throwNPE(JNIEnv* env) {
if (env == NULL) return;
jclass newExc = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExc, "");
return;
}

@ -1,99 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <jni.h>
/**
* Author: Normen Hansen
*/
class jmeClasses {
public:
static void initJavaClasses(JNIEnv* env);
// static JNIEnv* env;
static JavaVM* vm;
static jclass PhysicsSpace;
static jmethodID PhysicsSpace_preTick;
static jmethodID PhysicsSpace_postTick;
static jmethodID PhysicsSpace_addCollisionEvent;
static jclass PhysicsGhostObject;
static jmethodID PhysicsGhostObject_addOverlappingObject;
static jclass Vector3f;
static jmethodID Vector3f_set;
static jmethodID Vector3f_getX;
static jmethodID Vector3f_getY;
static jmethodID Vector3f_getZ;
static jmethodID Vector3f_toArray;
static jfieldID Vector3f_x;
static jfieldID Vector3f_y;
static jfieldID Vector3f_z;
static jclass Quaternion;
static jmethodID Quaternion_set;
static jmethodID Quaternion_getX;
static jmethodID Quaternion_getY;
static jmethodID Quaternion_getZ;
static jmethodID Quaternion_getW;
static jfieldID Quaternion_x;
static jfieldID Quaternion_y;
static jfieldID Quaternion_z;
static jfieldID Quaternion_w;
static jclass Matrix3f;
static jmethodID Matrix3f_get;
static jmethodID Matrix3f_set;
static jfieldID Matrix3f_m00;
static jfieldID Matrix3f_m01;
static jfieldID Matrix3f_m02;
static jfieldID Matrix3f_m10;
static jfieldID Matrix3f_m11;
static jfieldID Matrix3f_m12;
static jfieldID Matrix3f_m20;
static jfieldID Matrix3f_m21;
static jfieldID Matrix3f_m22;
static jclass PhysicsRay_Class;
static jmethodID PhysicsRay_newSingleResult;
static jfieldID PhysicsRay_normalInWorldSpace;
static jfieldID PhysicsRay_hitfraction;
static jfieldID PhysicsRay_collisionObject;
static jclass PhysicsRay_listresult;
static jmethodID PhysicsRay_addmethod;
static jclass DebugMeshCallback;
static jmethodID DebugMeshCallback_addVector;
static void throwNPE(JNIEnv* env);
private:
jmeClasses(){};
~jmeClasses(){};
};

@ -1,89 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "jmeMotionState.h"
#include "jmeBulletUtil.h"
/**
* Author: Normen Hansen
*/
jmeMotionState::jmeMotionState() {
trans = new btTransform();
trans -> setIdentity();
worldTransform = *trans;
dirty = true;
}
void jmeMotionState::getWorldTransform(btTransform& worldTrans) const {
worldTrans = worldTransform;
}
void jmeMotionState::setWorldTransform(const btTransform& worldTrans) {
worldTransform = worldTrans;
dirty = true;
}
void jmeMotionState::setKinematicTransform(const btTransform& worldTrans) {
worldTransform = worldTrans;
dirty = true;
}
void jmeMotionState::setKinematicLocation(JNIEnv* env, jobject location) {
jmeBulletUtil::convert(env, location, &worldTransform.getOrigin());
dirty = true;
}
void jmeMotionState::setKinematicRotation(JNIEnv* env, jobject rotation) {
jmeBulletUtil::convert(env, rotation, &worldTransform.getBasis());
dirty = true;
}
void jmeMotionState::setKinematicRotationQuat(JNIEnv* env, jobject rotation) {
jmeBulletUtil::convertQuat(env, rotation, &worldTransform.getBasis());
dirty = true;
}
bool jmeMotionState::applyTransform(JNIEnv* env, jobject location, jobject rotation) {
if (dirty) {
// fprintf(stdout, "Apply world translation\n");
// fflush(stdout);
jmeBulletUtil::convert(env, &worldTransform.getOrigin(), location);
jmeBulletUtil::convertQuat(env, &worldTransform.getBasis(), rotation);
dirty = false;
return true;
}
return false;
}
jmeMotionState::~jmeMotionState() {
free(trans);
}

@ -1,57 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <jni.h>
/**
* Author: Normen Hansen
*/
#include "btBulletDynamicsCommon.h"
//#include "btBulletCollisionCommon.h"
class jmeMotionState : public btMotionState {
private:
bool dirty;
btTransform* trans;
public:
jmeMotionState();
virtual ~jmeMotionState();
btTransform worldTransform;
virtual void getWorldTransform(btTransform& worldTrans) const;
virtual void setWorldTransform(const btTransform& worldTrans);
void setKinematicTransform(const btTransform& worldTrans);
void setKinematicLocation(JNIEnv*, jobject);
void setKinematicRotation(JNIEnv*, jobject);
void setKinematicRotationQuat(JNIEnv*, jobject);
bool applyTransform(JNIEnv* env, jobject location, jobject rotation);
};

@ -1,273 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "jmePhysicsSpace.h"
#include "jmeBulletUtil.h"
#include <stdio.h>
/**
* Author: Normen Hansen
*/
jmePhysicsSpace::jmePhysicsSpace(JNIEnv* env, jobject javaSpace) {
//TODO: global ref? maybe not -> cleaning, rather callback class?
this->javaPhysicsSpace = env->NewWeakGlobalRef(javaSpace);
this->env = env;
env->GetJavaVM(&vm);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
void jmePhysicsSpace::attachThread() {
#ifdef JNI_VERSION_1_2
vm->AttachCurrentThread((void**) &env, NULL);
#else
vm->AttachCurrentThread(&env, NULL);
#endif
}
JNIEnv* jmePhysicsSpace::getEnv() {
attachThread();
return this->env;
}
void jmePhysicsSpace::stepSimulation(jfloat tpf, jint maxSteps, jfloat accuracy) {
dynamicsWorld->stepSimulation(tpf, maxSteps, accuracy);
}
btThreadSupportInterface* jmePhysicsSpace::createSolverThreadSupport(int maxNumThreads) {
#ifdef _WIN32
Win32ThreadSupport::Win32ThreadConstructionInfo threadConstructionInfo("solverThreads", SolverThreadFunc, SolverlsMemoryFunc, maxNumThreads);
Win32ThreadSupport* threadSupport = new Win32ThreadSupport(threadConstructionInfo);
threadSupport->startSPU();
#elif defined (USE_PTHREADS)
PosixThreadSupport::ThreadConstructionInfo constructionInfo("collision", SolverThreadFunc,
SolverlsMemoryFunc, maxNumThreads);
PosixThreadSupport* threadSupport = new PosixThreadSupport(constructionInfo);
threadSupport->startSPU();
#else
SequentialThreadSupport::SequentialThreadConstructionInfo tci("solverThreads", SolverThreadFunc, SolverlsMemoryFunc);
SequentialThreadSupport* threadSupport = new SequentialThreadSupport(tci);
threadSupport->startSPU();
#endif
return threadSupport;
}
btThreadSupportInterface* jmePhysicsSpace::createDispatchThreadSupport(int maxNumThreads) {
#ifdef _WIN32
Win32ThreadSupport::Win32ThreadConstructionInfo threadConstructionInfo("solverThreads", processCollisionTask, createCollisionLocalStoreMemory, maxNumThreads);
Win32ThreadSupport* threadSupport = new Win32ThreadSupport(threadConstructionInfo);
threadSupport->startSPU();
#elif defined (USE_PTHREADS)
PosixThreadSupport::ThreadConstructionInfo solverConstructionInfo("solver", processCollisionTask,
createCollisionLocalStoreMemory, maxNumThreads);
PosixThreadSupport* threadSupport = new PosixThreadSupport(solverConstructionInfo);
threadSupport->startSPU();
#else
SequentialThreadSupport::SequentialThreadConstructionInfo tci("solverThreads", processCollisionTask, createCollisionLocalStoreMemory);
SequentialThreadSupport* threadSupport = new SequentialThreadSupport(tci);
threadSupport->startSPU();
#endif
return threadSupport;
}
void jmePhysicsSpace::createPhysicsSpace(jfloat minX, jfloat minY, jfloat minZ, jfloat maxX, jfloat maxY, jfloat maxZ, jint broadphaseId, jboolean threading) {
// collision configuration contains default setup for memory, collision setup
btDefaultCollisionConstructionInfo cci;
// if(threading){
// cci.m_defaultMaxPersistentManifoldPoolSize = 32768;
// }
btCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration(cci);
btVector3 min = btVector3(minX, minY, minZ);
btVector3 max = btVector3(maxX, maxY, maxZ);
btBroadphaseInterface* broadphase;
switch (broadphaseId) {
case 0:
broadphase = new btSimpleBroadphase();
break;
case 1:
broadphase = new btAxisSweep3(min, max);
break;
case 2:
//TODO: 32bit!
broadphase = new btAxisSweep3(min, max);
break;
case 3:
broadphase = new btDbvtBroadphase();
break;
case 4:
// broadphase = new btGpu3DGridBroadphase(
// min, max,
// 20, 20, 20,
// 10000, 1000, 25);
break;
}
btCollisionDispatcher* dispatcher;
btConstraintSolver* solver;
// use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded)
if (threading) {
btThreadSupportInterface* dispatchThreads = createDispatchThreadSupport(4);
dispatcher = new SpuGatheringCollisionDispatcher(dispatchThreads, 4, collisionConfiguration);
dispatcher->setDispatcherFlags(btCollisionDispatcher::CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION);
} else {
dispatcher = new btCollisionDispatcher(collisionConfiguration);
}
// the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded)
if (threading) {
btThreadSupportInterface* solverThreads = createSolverThreadSupport(4);
solver = new btParallelConstraintSolver(solverThreads);
} else {
solver = new btSequentialImpulseConstraintSolver;
}
//create dynamics world
btDiscreteDynamicsWorld* world = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, collisionConfiguration);
dynamicsWorld = world;
dynamicsWorld->setWorldUserInfo(this);
//parallel solver requires the contacts to be in a contiguous pool, so avoid dynamic allocation
if (threading) {
world->getSimulationIslandManager()->setSplitIslands(false);
world->getSolverInfo().m_numIterations = 4;
world->getSolverInfo().m_solverMode = SOLVER_SIMD + SOLVER_USE_WARMSTARTING; //+SOLVER_RANDMIZE_ORDER;
world->getDispatchInfo().m_enableSPU = true;
}
broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
dynamicsWorld->setGravity(btVector3(0, -9.81f, 0));
struct jmeFilterCallback : public btOverlapFilterCallback {
// return true when pairs need collision
virtual bool needBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy * proxy1) const {
// bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;
// collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);
bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;
collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);
if (collides) {
btCollisionObject* co0 = (btCollisionObject*) proxy0->m_clientObject;
btCollisionObject* co1 = (btCollisionObject*) proxy1->m_clientObject;
jmeUserPointer *up0 = (jmeUserPointer*) co0 -> getUserPointer();
jmeUserPointer *up1 = (jmeUserPointer*) co1 -> getUserPointer();
if (up0 != NULL && up1 != NULL) {
collides = (up0->group & up1->groups) != 0;
collides = collides && (up1->group & up0->groups);
//add some additional logic here that modified 'collides'
return collides;
}
return false;
}
return collides;
}
};
dynamicsWorld->getPairCache()->setOverlapFilterCallback(new jmeFilterCallback());
dynamicsWorld->setInternalTickCallback(&jmePhysicsSpace::preTickCallback, static_cast<void *> (this), true);
dynamicsWorld->setInternalTickCallback(&jmePhysicsSpace::postTickCallback, static_cast<void *> (this));
if (gContactProcessedCallback == NULL) {
gContactProcessedCallback = &jmePhysicsSpace::contactProcessedCallback;
}
}
void jmePhysicsSpace::preTickCallback(btDynamicsWorld *world, btScalar timeStep) {
jmePhysicsSpace* dynamicsWorld = (jmePhysicsSpace*) world->getWorldUserInfo();
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_preTick, timeStep);
env->DeleteLocalRef(javaPhysicsSpace);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
}
void jmePhysicsSpace::postTickCallback(btDynamicsWorld *world, btScalar timeStep) {
jmePhysicsSpace* dynamicsWorld = (jmePhysicsSpace*) world->getWorldUserInfo();
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_postTick, timeStep);
env->DeleteLocalRef(javaPhysicsSpace);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return;
}
}
}
bool jmePhysicsSpace::contactProcessedCallback(btManifoldPoint &cp, void *body0, void *body1) {
// printf("contactProcessedCallback %d %dn", body0, body1);
btCollisionObject* co0 = (btCollisionObject*) body0;
jmeUserPointer *up0 = (jmeUserPointer*) co0 -> getUserPointer();
btCollisionObject* co1 = (btCollisionObject*) body1;
jmeUserPointer *up1 = (jmeUserPointer*) co1 -> getUserPointer();
if (up0 != NULL) {
jmePhysicsSpace *dynamicsWorld = (jmePhysicsSpace *)up0->space;
if (dynamicsWorld != NULL) {
JNIEnv* env = dynamicsWorld->getEnv();
jobject javaPhysicsSpace = env->NewLocalRef(dynamicsWorld->getJavaPhysicsSpace());
if (javaPhysicsSpace != NULL) {
jobject javaCollisionObject0 = env->NewLocalRef(up0->javaCollisionObject);
jobject javaCollisionObject1 = env->NewLocalRef(up1->javaCollisionObject);
env->CallVoidMethod(javaPhysicsSpace, jmeClasses::PhysicsSpace_addCollisionEvent, javaCollisionObject0, javaCollisionObject1, (jlong) & cp);
env->DeleteLocalRef(javaPhysicsSpace);
env->DeleteLocalRef(javaCollisionObject0);
env->DeleteLocalRef(javaCollisionObject1);
if (env->ExceptionCheck()) {
env->Throw(env->ExceptionOccurred());
return true;
}
}
}
}
return true;
}
btDynamicsWorld* jmePhysicsSpace::getDynamicsWorld() {
return dynamicsWorld;
}
jobject jmePhysicsSpace::getJavaPhysicsSpace() {
return javaPhysicsSpace;
}
jmePhysicsSpace::~jmePhysicsSpace() {
delete(dynamicsWorld);
}

@ -1,76 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <jni.h>
#include "btBulletDynamicsCommon.h"
#include "btBulletCollisionCommon.h"
#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
#include "BulletCollision/CollisionDispatch/btGhostObject.h"
#include "BulletDynamics/Character/btKinematicCharacterController.h"
#ifdef _WIN32
#include "BulletMultiThreaded/Win32ThreadSupport.h"
#else
#include "BulletMultiThreaded/PosixThreadSupport.h"
#endif
#include "BulletMultiThreaded/btParallelConstraintSolver.h"
#include "BulletMultiThreaded/SpuGatheringCollisionDispatcher.h"
#include "BulletMultiThreaded/SpuCollisionTaskProcess.h"
#include "BulletMultiThreaded/SequentialThreadSupport.h"
#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h"
#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h"
#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"
/**
* Author: Normen Hansen
*/
class jmePhysicsSpace {
private:
JNIEnv* env;
JavaVM* vm;
btDynamicsWorld* dynamicsWorld;
jobject javaPhysicsSpace;
btThreadSupportInterface* createSolverThreadSupport(int);
btThreadSupportInterface* createDispatchThreadSupport(int);
void attachThread();
public:
jmePhysicsSpace(){};
~jmePhysicsSpace();
jmePhysicsSpace(JNIEnv*, jobject);
void stepSimulation(jfloat, jint, jfloat);
void createPhysicsSpace(jfloat, jfloat, jfloat, jfloat, jfloat, jfloat, jint, jboolean);
btDynamicsWorld* getDynamicsWorld();
jobject getJavaPhysicsSpace();
JNIEnv* getEnv();
static void preTickCallback(btDynamicsWorld*, btScalar);
static void postTickCallback(btDynamicsWorld*, btScalar);
static bool contactProcessedCallback(btManifoldPoint &, void *, void *);
};

@ -1,6 +0,0 @@
Classes that differ from the jbullet implementation:
- com.jme3.bullet.PhysicsSpace
- com.jme3.bullet.collision.PhysicsCollisionObject
- All classes in com.jme3.bullet.objects
- All classes in com.jme3.bullet.joints
- All classes in com.jme3.bullet.collision.shapes

@ -1,68 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.ant.freeform</type>
<configuration>
<general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
<!-- Do not use Project Properties customizer when editing this file manually. -->
<name>Bullet Native</name>
<properties>
<property name="ant.script">../../build.xml</property>
</properties>
<folders>
<source-folder>
<label>Source Packages</label>
<location>.</location>
</source-folder>
<source-folder>
<label>Source Packages</label>
<type>java</type>
<location>.</location>
</source-folder>
</folders>
<ide-actions>
<action name="build">
<script>${ant.script}</script>
<target>build-bullet-natives</target>
</action>
<action name="clean">
<script>${ant.script}</script>
<target>clean</target>
</action>
<action name="rebuild">
<script>${ant.script}</script>
<target>clean</target>
<target>build-bullet-natives</target>
</action>
<action name="run">
<script>${ant.script}</script>
<target>run-bullet-native</target>
</action>
</ide-actions>
<view>
<items>
<source-folder style="packages">
<label>Source Packages</label>
<location>.</location>
</source-folder>
<source-file>
<location>${ant.script}</location>
</source-file>
</items>
<context-menu>
<ide-action name="build"/>
<ide-action name="rebuild"/>
<ide-action name="clean"/>
<ide-action name="run"/>
</context-menu>
</view>
<subprojects/>
</general-data>
<java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1">
<compilation-unit>
<package-root>.</package-root>
<classpath mode="compile">../../dist/jMonkeyEngine3.jar</classpath>
<source-level>1.5</source-level>
</compilation-unit>
</java-data>
</configuration>
</project>

@ -1,131 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.WeakHashMap;
/**
* An <code>AssetCache</code> allows storage of loaded resources in order
* to improve their access time if they are requested again in a short period
* of time. The AssetCache stores weak references to the resources, allowing
* Java's garbage collector to request deletion of rarely used resources
* when heap memory is low.
*/
public class AssetCache {
public static final class SmartAssetInfo {
public WeakReference<AssetKey> smartKey;
public Asset asset;
}
private final WeakHashMap<AssetKey, SmartAssetInfo> smartCache
= new WeakHashMap<AssetKey, SmartAssetInfo>();
private final HashMap<AssetKey, Object> regularCache = new HashMap<AssetKey, Object>();
/**
* Adds a resource to the cache.
* <br/><br/>
* <font color="red">Thread-safe.</font>
* @see #getFromCache(java.lang.String)
*/
public void addToCache(AssetKey key, Object obj){
synchronized (regularCache){
if (obj instanceof Asset && key.useSmartCache()){
// put in smart cache
Asset asset = (Asset) obj;
asset.setKey(null); // no circular references
SmartAssetInfo smartInfo = new SmartAssetInfo();
smartInfo.asset = asset;
// use the original key as smart key
smartInfo.smartKey = new WeakReference<AssetKey>(key);
smartCache.put(key, smartInfo);
}else{
// put in regular cache
regularCache.put(key, obj);
}
}
}
/**
* Delete an asset from the cache, returns true if it was deleted successfuly.
* <br/><br/>
* <font color="red">Thread-safe.</font>
*/
public boolean deleteFromCache(AssetKey key){
synchronized (regularCache){
if (key.useSmartCache()){
return smartCache.remove(key) != null;
}else{
return regularCache.remove(key) != null;
}
}
}
/**
* Gets an object from the cache given an asset key.
* <br/><br/>
* <font color="red">Thread-safe.</font>
* @param key
* @return
*/
public Object getFromCache(AssetKey key){
synchronized (regularCache){
if (key.useSmartCache()) {
return smartCache.get(key).asset;
} else {
return regularCache.get(key);
}
}
}
/**
* Retrieves smart asset info from the cache.
* @param key
* @return
*/
public SmartAssetInfo getFromSmartCache(AssetKey key){
return smartCache.get(key);
}
/**
* Deletes all the assets in the regular cache.
*/
public void deleteAllAssets(){
synchronized (regularCache){
regularCache.clear();
smartCache.clear();
}
}
}

@ -1,22 +0,0 @@
LOCATOR / com.jme3.asset.plugins.ClasspathLocator
LOADER com.jme3.texture.plugins.AWTLoader : jpg, bmp, gif, png, jpeg
LOADER com.jme3.audio.plugins.WAVLoader : wav
LOADER com.jme3.audio.plugins.OGGLoader : ogg
LOADER com.jme3.material.plugins.J3MLoader : j3m
LOADER com.jme3.material.plugins.J3MLoader : j3md
LOADER com.jme3.font.plugins.BitmapFontLoader : fnt
LOADER com.jme3.texture.plugins.DDSLoader : dds
LOADER com.jme3.texture.plugins.PFMLoader : pfm
LOADER com.jme3.texture.plugins.HDRLoader : hdr
LOADER com.jme3.texture.plugins.TGALoader : tga
LOADER com.jme3.export.binary.BinaryImporter : j3o
LOADER com.jme3.export.binary.BinaryImporter : j3f
LOADER com.jme3.scene.plugins.OBJLoader : obj
LOADER com.jme3.scene.plugins.MTLLoader : mtl
LOADER com.jme3.scene.plugins.ogre.MeshLoader : meshxml, mesh.xml
LOADER com.jme3.scene.plugins.ogre.SkeletonLoader : skeletonxml, skeleton.xml
LOADER com.jme3.scene.plugins.ogre.MaterialLoader : material
LOADER com.jme3.scene.plugins.ogre.SceneLoader : scene
LOADER com.jme3.scene.plugins.blender.BlenderModelLoader : blend
LOADER com.jme3.shader.plugins.GLSLLoader : vert, frag, glsl, glsllib

@ -1,421 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset;
import com.jme3.asset.AssetCache.SmartAssetInfo;
import com.jme3.audio.AudioKey;
import com.jme3.audio.AudioData;
import com.jme3.font.BitmapFont;
import com.jme3.material.Material;
import com.jme3.scene.Spatial;
import com.jme3.shader.Shader;
import com.jme3.shader.ShaderKey;
import com.jme3.texture.Texture;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* <code>AssetManager</code> is the primary method for managing and loading
* assets inside jME.
*
* @author Kirill Vainer
*/
public class DesktopAssetManager implements AssetManager {
private static final Logger logger = Logger.getLogger(AssetManager.class.getName());
private final AssetCache cache = new AssetCache();
private final ImplHandler handler = new ImplHandler(this);
private AssetEventListener eventListener = null;
private List<ClassLoader> classLoaders;
// private final ThreadingManager threadingMan = new ThreadingManager(this);
// private final Set<AssetKey> alreadyLoadingSet = new HashSet<AssetKey>();
public DesktopAssetManager(){
this(null);
}
@Deprecated
public DesktopAssetManager(boolean loadDefaults){
this(Thread.currentThread().getContextClassLoader().getResource("com/jme3/asset/Desktop.cfg"));
}
public DesktopAssetManager(URL configFile){
if (configFile != null){
InputStream stream = null;
try{
AssetConfig cfg = new AssetConfig(this);
stream = configFile.openStream();
cfg.loadText(stream);
}catch (IOException ex){
logger.log(Level.SEVERE, "Failed to load asset config", ex);
}finally{
if (stream != null)
try{
stream.close();
}catch (IOException ex){
}
}
}
logger.info("DesktopAssetManager created.");
}
public void addClassLoader(ClassLoader loader){
if(classLoaders == null)
classLoaders = Collections.synchronizedList(new ArrayList<ClassLoader>());
synchronized(classLoaders) {
classLoaders.add(loader);
}
}
public void removeClassLoader(ClassLoader loader){
if(classLoaders != null) synchronized(classLoaders) {
classLoaders.remove(loader);
}
}
public List<ClassLoader> getClassLoaders(){
return classLoaders;
}
public void setAssetEventListener(AssetEventListener listener){
eventListener = listener;
}
public void registerLoader(Class<? extends AssetLoader> loader, String ... extensions){
handler.addLoader(loader, extensions);
if (logger.isLoggable(Level.FINER)){
logger.log(Level.FINER, "Registered loader: {0} for extensions {1}",
new Object[]{loader.getSimpleName(), Arrays.toString(extensions)});
}
}
public void registerLoader(String clsName, String ... extensions){
Class<? extends AssetLoader> clazz = null;
try{
clazz = (Class<? extends AssetLoader>) Class.forName(clsName);
}catch (ClassNotFoundException ex){
logger.log(Level.WARNING, "Failed to find loader: "+clsName, ex);
}catch (NoClassDefFoundError ex){
logger.log(Level.WARNING, "Failed to find loader: "+clsName, ex);
}
if (clazz != null){
registerLoader(clazz, extensions);
}
}
public void registerLocator(String rootPath, Class<? extends AssetLocator> locatorClass){
handler.addLocator(locatorClass, rootPath);
if (logger.isLoggable(Level.FINER)){
logger.log(Level.FINER, "Registered locator: {0}",
locatorClass.getSimpleName());
}
}
public void registerLocator(String rootPath, String clsName){
Class<? extends AssetLocator> clazz = null;
try{
clazz = (Class<? extends AssetLocator>) Class.forName(clsName);
}catch (ClassNotFoundException ex){
logger.log(Level.WARNING, "Failed to find locator: "+clsName, ex);
}catch (NoClassDefFoundError ex){
logger.log(Level.WARNING, "Failed to find loader: "+clsName, ex);
}
if (clazz != null){
registerLocator(rootPath, clazz);
}
}
public void unregisterLocator(String rootPath, Class<? extends AssetLocator> clazz){
handler.removeLocator(clazz, rootPath);
if (logger.isLoggable(Level.FINER)){
logger.log(Level.FINER, "Unregistered locator: {0}",
clazz.getSimpleName());
}
}
public void clearCache(){
cache.deleteAllAssets();
}
/**
* Delete an asset from the cache, returns true if it was deleted
* successfully.
* <br/><br/>
* <font color="red">Thread-safe.</font>
*/
public boolean deleteFromCache(AssetKey key){
return cache.deleteFromCache(key);
}
/**
* Adds a resource to the cache.
* <br/><br/>
* <font color="red">Thread-safe.</font>
*/
public void addToCache(AssetKey key, Object asset){
cache.addToCache(key, asset);
}
public AssetInfo locateAsset(AssetKey<?> key){
if (handler.getLocatorCount() == 0){
logger.warning("There are no locators currently"+
" registered. Use AssetManager."+
"registerLocator() to register a"+
" locator.");
return null;
}
AssetInfo info = handler.tryLocate(key);
if (info == null){
logger.log(Level.WARNING, "Cannot locate resource: {0}", key);
}
return info;
}
/**
* <font color="red">Thread-safe.</font>
*
* @param <T>
* @param key
* @return
*/
public <T> T loadAsset(AssetKey<T> key){
if (key == null)
throw new IllegalArgumentException("key cannot be null");
if (eventListener != null)
eventListener.assetRequested(key);
AssetKey smartKey = null;
Object o = null;
if (key.shouldCache()){
if (key.useSmartCache()){
SmartAssetInfo smartInfo = cache.getFromSmartCache(key);
if (smartInfo != null){
smartKey = smartInfo.smartKey.get();
if (smartKey != null){
o = smartInfo.asset;
}
}
}else{
o = cache.getFromCache(key);
}
}
if (o == null){
AssetLoader loader = handler.aquireLoader(key);
if (loader == null){
throw new IllegalStateException("No loader registered for type \"" +
key.getExtension() + "\"");
}
if (handler.getLocatorCount() == 0){
throw new IllegalStateException("There are no locators currently"+
" registered. Use AssetManager."+
"registerLocator() to register a"+
" locator.");
}
AssetInfo info = handler.tryLocate(key);
if (info == null){
if (handler.getParentKey() != null && eventListener != null){
// Inform event listener that an asset has failed to load.
// If the parent AssetLoader chooses not to propagate
// the exception, this is the only means of finding
// that something went wrong.
eventListener.assetDependencyNotFound(handler.getParentKey(), key);
}
throw new AssetNotFoundException(key.toString());
}
try {
handler.establishParentKey(key);
o = loader.load(info);
} catch (IOException ex) {
throw new AssetLoadException("An exception has occured while loading asset: " + key, ex);
} finally {
handler.releaseParentKey(key);
}
if (o == null){
throw new AssetLoadException("Error occured while loading asset \"" + key + "\" using" + loader.getClass().getSimpleName());
}else{
if (logger.isLoggable(Level.FINER)){
logger.log(Level.FINER, "Loaded {0} with {1}",
new Object[]{key, loader.getClass().getSimpleName()});
}
// do processing on asset before caching
o = key.postProcess(o);
if (key.shouldCache())
cache.addToCache(key, o);
if (eventListener != null)
eventListener.assetLoaded(key);
}
}
// object o is the asset
// create an instance for user
T clone = (T) key.createClonedInstance(o);
if (key.useSmartCache()){
if (smartKey != null){
// smart asset was already cached, use original key
((Asset)clone).setKey(smartKey);
}else{
// smart asset was cached on this call, use our key
((Asset)clone).setKey(key);
}
}
return clone;
}
public Object loadAsset(String name){
return loadAsset(new AssetKey(name));
}
/**
* Loads a texture.
*
* @return
*/
public Texture loadTexture(TextureKey key){
return (Texture) loadAsset(key);
}
public Material loadMaterial(String name){
return (Material) loadAsset(new MaterialKey(name));
}
/**
* Loads a texture.
*
* @param name
* @param generateMipmaps Enable if applying texture to 3D objects, disable
* for GUI/HUD elements.
* @return
*/
public Texture loadTexture(String name, boolean generateMipmaps){
TextureKey key = new TextureKey(name, true);
key.setGenerateMips(generateMipmaps);
key.setAsCube(false);
return loadTexture(key);
}
public Texture loadTexture(String name, boolean generateMipmaps, boolean flipY, boolean asCube, int aniso){
TextureKey key = new TextureKey(name, flipY);
key.setGenerateMips(generateMipmaps);
key.setAsCube(asCube);
key.setAnisotropy(aniso);
return loadTexture(key);
}
public Texture loadTexture(String name){
return loadTexture(name, true);
}
public AudioData loadAudio(AudioKey key){
return (AudioData) loadAsset(key);
}
public AudioData loadAudio(String name){
return loadAudio(new AudioKey(name, false));
}
/**
* Loads a bitmap font with the given name.
*
* @param name
* @return
*/
public BitmapFont loadFont(String name){
return (BitmapFont) loadAsset(new AssetKey(name));
}
public InputStream loadGLSLLibrary(AssetKey key){
return (InputStream) loadAsset(key);
}
/**
* Load a vertex/fragment shader combo.
*
* @param key
* @return
*/
public Shader loadShader(ShaderKey key){
// cache abuse in method
// that doesn't use loaders/locators
Shader s = (Shader) cache.getFromCache(key);
if (s == null){
String vertName = key.getVertName();
String fragName = key.getFragName();
String vertSource = (String) loadAsset(new AssetKey(vertName));
String fragSource = (String) loadAsset(new AssetKey(fragName));
s = new Shader(key.getLanguage());
s.addSource(Shader.ShaderType.Vertex, vertName, vertSource, key.getDefines().getCompiled());
s.addSource(Shader.ShaderType.Fragment, fragName, fragSource, key.getDefines().getCompiled());
cache.addToCache(key, s);
}
return s;
}
public Spatial loadModel(ModelKey key){
return (Spatial) loadAsset(key);
}
/**
* Load a model.
*
* @param name
* @return
*/
public Spatial loadModel(String name){
return loadModel(new ModelKey(name));
}
}

@ -1,209 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* <code>ImplHandler</code> manages the asset loader and asset locator
* implementations in a thread safe way. This allows implementations
* which store local persistent data to operate with a multi-threaded system.
* This is done by keeping an instance of each asset loader and asset
* locator object in a thread local.
*/
public class ImplHandler {
private static final Logger logger = Logger.getLogger(ImplHandler.class.getName());
private final AssetManager owner;
private final ThreadLocal<AssetKey> parentAssetKey
= new ThreadLocal<AssetKey>();
private final ArrayList<ImplThreadLocal> genericLocators =
new ArrayList<ImplThreadLocal>();
private final HashMap<String, ImplThreadLocal> loaders =
new HashMap<String, ImplThreadLocal>();
public ImplHandler(AssetManager owner){
this.owner = owner;
}
protected class ImplThreadLocal extends ThreadLocal {
private final Class<?> type;
private final String path;
public ImplThreadLocal(Class<?> type){
this.type = type;
path = null;
}
public ImplThreadLocal(Class<?> type, String path){
this.type = type;
this.path = path;
}
public String getPath() {
return path;
}
public Class<?> getTypeClass(){
return type;
}
@Override
protected Object initialValue(){
try {
return type.newInstance();
} catch (InstantiationException ex) {
logger.log(Level.SEVERE,"Cannot create locator of type {0}, does"
+ " the class have an empty and publically accessible"+
" constructor?", type.getName());
logger.throwing(type.getName(), "<init>", ex);
} catch (IllegalAccessException ex) {
logger.log(Level.SEVERE,"Cannot create locator of type {0}, "
+ "does the class have an empty and publically "
+ "accessible constructor?", type.getName());
logger.throwing(type.getName(), "<init>", ex);
}
return null;
}
}
/**
* Establishes the asset key that is used for tracking dependent assets
* that have failed to load. When set, the {@link DesktopAssetManager}
* gets a hint that it should suppress {@link AssetNotFoundException}s
* and instead call the listener callback (if set).
*
* @param key The parent key
*/
public void establishParentKey(AssetKey parentKey){
if (parentAssetKey.get() == null){
parentAssetKey.set(parentKey);
}
}
public void releaseParentKey(AssetKey parentKey){
if (parentAssetKey.get() == parentKey){
parentAssetKey.set(null);
}
}
public AssetKey getParentKey(){
return parentAssetKey.get();
}
/**
* Attempts to locate the given resource name.
* @param name The full name of the resource.
* @return The AssetInfo containing resource information required for
* access, or null if not found.
*/
public AssetInfo tryLocate(AssetKey key){
synchronized (genericLocators){
if (genericLocators.isEmpty())
return null;
for (ImplThreadLocal local : genericLocators){
AssetLocator locator = (AssetLocator) local.get();
if (local.getPath() != null){
locator.setRootPath((String) local.getPath());
}
AssetInfo info = locator.locate(owner, key);
if (info != null)
return info;
}
}
return null;
}
public int getLocatorCount(){
synchronized (genericLocators){
return genericLocators.size();
}
}
/**
* Returns the AssetLoader registered for the given extension
* of the current thread.
* @return AssetLoader registered with addLoader.
*/
public AssetLoader aquireLoader(AssetKey key){
synchronized (loaders){
ImplThreadLocal local = loaders.get(key.getExtension());
if (local != null){
AssetLoader loader = (AssetLoader) local.get();
return loader;
}
return null;
}
}
public void addLoader(final Class<?> loaderType, String ... extensions){
ImplThreadLocal local = new ImplThreadLocal(loaderType);
for (String extension : extensions){
extension = extension.toLowerCase();
synchronized (loaders){
loaders.put(extension, local);
}
}
}
public void addLocator(final Class<?> locatorType, String rootPath){
ImplThreadLocal local = new ImplThreadLocal(locatorType, rootPath);
synchronized (genericLocators){
genericLocators.add(local);
}
}
public void removeLocator(final Class<?> locatorType, String rootPath){
synchronized (genericLocators){
Iterator<ImplThreadLocal> it = genericLocators.iterator();
while (it.hasNext()){
ImplThreadLocal locator = it.next();
if (locator.getPath().equals(rootPath) &&
locator.getTypeClass().equals(locatorType)){
it.remove();
}
}
}
}
}

@ -1,103 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
/**
* <code>ThreadingManager</code> manages the threads used to load content
* within the Content Manager system. A pool of threads and a task queue
* is used to load resource data and perform I/O while the application's
* render thread is active.
*/
public class ThreadingManager {
protected final ExecutorService executor =
Executors.newFixedThreadPool(2,
new LoadingThreadFactory());
protected final AssetManager owner;
protected int nextThreadId = 0;
public ThreadingManager(AssetManager owner){
this.owner = owner;
}
protected class LoadingThreadFactory implements ThreadFactory {
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "pool" + (nextThreadId++));
t.setDaemon(true);
t.setPriority(Thread.MIN_PRIORITY);
return t;
}
}
protected class LoadingTask implements Callable<Object> {
private final String resourceName;
public LoadingTask(String resourceName){
this.resourceName = resourceName;
}
public Object call() throws Exception {
return owner.loadAsset(new AssetKey(resourceName));
}
}
// protected class MultiLoadingTask implements Callable<Void> {
// private final String[] resourceNames;
// public MultiLoadingTask(String[] resourceNames){
// this.resourceNames = resourceNames;
// }
// public Void call(){
// owner.loadContents(resourceNames);
// return null;
// }
// }
// public Future<Void> loadContents(String ... names){
// return executor.submit(new MultiLoadingTask(names));
// }
// public Future<Object> loadContent(String name) {
// return executor.submit(new LoadingTask(name));
// }
public static boolean isLoadingThread() {
return Thread.currentThread().getName().startsWith("pool");
}
}

@ -1,122 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset.plugins;
import com.jme3.asset.AssetInfo;
import com.jme3.asset.AssetKey;
import com.jme3.asset.AssetLoadException;
import com.jme3.asset.AssetLocator;
import com.jme3.asset.AssetManager;
import com.jme3.asset.AssetNotFoundException;
import com.jme3.system.JmeSystem;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.logging.Logger;
/**
* The <code>ClasspathLocator</code> looks up an asset in the classpath.
* @author Kirill Vainer
*/
public class ClasspathLocator implements AssetLocator {
private static final Logger logger = Logger.getLogger(ClasspathLocator.class.getName());
private String root = "";
public ClasspathLocator(){
}
public void setRootPath(String rootPath) {
this.root = rootPath;
if (root.equals("/"))
root = "";
else if (root.length() > 1){
if (root.startsWith("/")){
root = root.substring(1);
}
if (!root.endsWith("/"))
root += "/";
}
}
public AssetInfo locate(AssetManager manager, AssetKey key) {
URL url;
String name = key.getName();
if (name.startsWith("/"))
name = name.substring(1);
name = root + name;
// if (!name.startsWith(root)){
// name = root + name;
// }
if (JmeSystem.isLowPermissions()){
url = ClasspathLocator.class.getResource("/" + name);
}else{
url = Thread.currentThread().getContextClassLoader().getResource(name);
}
if (url == null)
return null;
if (url.getProtocol().equals("file")){
try {
String path = new File(url.toURI()).getCanonicalPath();
// convert to / for windows
if (File.separatorChar == '\\'){
path = path.replace('\\', '/');
}
// compare path
if (!path.endsWith(name)){
throw new AssetNotFoundException("Asset name doesn't match requirements.\n"+
"\"" + path + "\" doesn't match \"" + name + "\"");
}
} catch (URISyntaxException ex) {
throw new AssetLoadException("Error converting URL to URI", ex);
} catch (IOException ex){
throw new AssetLoadException("Failed to get canonical path for " + url, ex);
}
}
try{
return UrlAssetInfo.create(manager, key, url);
}catch (IOException ex){
// This is different handling than URL locator
// since classpath locating would return null at the getResource()
// call, otherwise there's a more critical error...
throw new AssetLoadException("Failed to read URL " + url, ex);
}
}
}

@ -1,113 +0,0 @@
/*
* Copyright (c) 2009-2010 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.asset.plugins;
import com.jme3.asset.AssetInfo;
import com.jme3.asset.AssetKey;
import com.jme3.asset.AssetLoadException;
import com.jme3.asset.AssetLocator;
import com.jme3.asset.AssetManager;
import com.jme3.asset.AssetNotFoundException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* <code>FileLocator</code> allows you to specify a folder where to
* look for assets.
* @author Kirill Vainer
*/
public class FileLocator implements AssetLocator {
private File root;
public void setRootPath(String rootPath) {
if (rootPath == null)
throw new NullPointerException();
try {
root = new File(rootPath).getCanonicalFile();
if (!root.isDirectory()){
throw new IllegalArgumentException("Given root path \"" + root + "\" not a directory");
}
} catch (IOException ex) {
throw new AssetLoadException("Root path is invalid", ex);
}
}
private static class AssetInfoFile extends AssetInfo {
private File file;
public AssetInfoFile(AssetManager manager, AssetKey key, File file){
super(manager, key);
this.file = file;
}
@Override
public InputStream openStream() {
try{
return new FileInputStream(file);
}catch (FileNotFoundException ex){
// NOTE: Can still happen even if file.exists() is true, e.g.
// permissions issue and similar
throw new AssetLoadException("Failed to open file: " + file, ex);
}
}
}
public AssetInfo locate(AssetManager manager, AssetKey key) {
String name = key.getName();
File file = new File(root, name);
if (file.exists() && file.isFile()){
try {
// Now, check asset name requirements
String canonical = file.getCanonicalPath();
String absolute = file.getAbsolutePath();
if (!canonical.endsWith(absolute)){
throw new AssetNotFoundException("Asset name doesn't match requirements.\n"+
"\"" + canonical + "\" doesn't match \"" + absolute + "\"");
}
} catch (IOException ex) {
throw new AssetLoadException("Failed to get file canonical path " + file, ex);
}
return new AssetInfoFile(manager, key, file);
}else{
return null;
}
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save