- add fix for physics mesh generation and physics collision shape ignore flag to native bullet

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7687 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 14 years ago
parent 4a9f7ab979
commit 19403e5660
  1. 7
      engine/src/bullet/com/jme3/bullet/util/CollisionShapeFactory.java
  2. 2
      engine/src/bullet/com/jme3/bullet/util/NativeMeshUtil.java

@ -46,6 +46,7 @@ import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh; import com.jme3.scene.Mesh;
import com.jme3.scene.Node; import com.jme3.scene.Node;
import com.jme3.scene.Spatial; import com.jme3.scene.Spatial;
import com.jme3.scene.UserData;
import com.jme3.terrain.geomipmap.TerrainPatch; import com.jme3.terrain.geomipmap.TerrainPatch;
import com.jme3.terrain.geomipmap.TerrainQuad; import com.jme3.terrain.geomipmap.TerrainQuad;
import java.util.Iterator; import java.util.Iterator;
@ -91,6 +92,10 @@ public class CollisionShapeFactory {
if (spatial instanceof Node) { if (spatial instanceof Node) {
createCompoundShape(realRootNode, (Node) spatial, shape, meshAccurate, dynamic); createCompoundShape(realRootNode, (Node) spatial, shape, meshAccurate, dynamic);
} else if (spatial instanceof Geometry) { } else if (spatial instanceof Geometry) {
Boolean bool = spatial.getUserData(UserData.JME_PHYSICSIGNORE);
if (bool != null && bool.booleanValue()) {
continue; // go to the next child in the loop
}
if (meshAccurate) { if (meshAccurate) {
CollisionShape childShape = dynamic CollisionShape childShape = dynamic
? createSingleDynamicMeshShape((Geometry) spatial, realRootNode) ? createSingleDynamicMeshShape((Geometry) spatial, realRootNode)
@ -229,7 +234,7 @@ public class CollisionShapeFactory {
return null; return null;
} }
} }
/** /**
* This method moves each child shape of a compound shape by the given vector * This method moves each child shape of a compound shape by the given vector
* @param vector * @param vector

@ -52,7 +52,7 @@ public class NativeMeshUtil {
int numTriangles = mesh.getTriangleCount(); int numTriangles = mesh.getTriangleCount();
int triangleIndexStride = 12; //3 index entries * 4 bytes each. int triangleIndexStride = 12; //3 index entries * 4 bytes each.
IndexBuffer indices = mesh.getIndexBuffer(); IndexBuffer indices = mesh.getIndicesAsList();
FloatBuffer vertices = mesh.getFloatBuffer(Type.Position); FloatBuffer vertices = mesh.getFloatBuffer(Type.Position);
vertices.rewind(); vertices.rewind();

Loading…
Cancel
Save