/** * Instantiate a shape based on the specified JME mesh. * * @param mesh the Mesh to use */ public GImpactCollisionShape(Mesh mesh) { createCollisionMesh(mesh); }
objectId = createShape(meshId); Logger.getLogger(this.getClass().getName()).log(Level.FINE, "Created Shape {0}", Long.toHexString(objectId)); setScale(scale); setMargin(margin);
/** * Finalize this shape just before it is destroyed. Should be invoked only * by a subclass or by the garbage collector. * * @throws Throwable ignored by the garbage collector */ @Override protected void finalize() throws Throwable { super.finalize(); Logger.getLogger(this.getClass().getName()).log(Level.FINE, "Finalizing Mesh {0}", Long.toHexString(meshId)); finalizeNative(meshId); }
private void createCollisionMesh(Mesh mesh, Vector3f worldScale) { this.worldScale = worldScale; bulletMesh = Converter.convert(mesh); this.numVertices = bulletMesh.numVertices; this.numTriangles = bulletMesh.numTriangles; this.vertexStride = bulletMesh.vertexStride; this.triangleIndexStride = bulletMesh.triangleIndexStride; this.triangleIndexBase = bulletMesh.triangleIndexBase; this.vertexBase = bulletMesh.vertexBase; createShape(); }
protected void createShape() { bulletMesh = new IndexedMesh(); bulletMesh.numVertices = numVertices; bulletMesh.numTriangles = numTriangles; bulletMesh.vertexStride = vertexStride; bulletMesh.triangleIndexStride = triangleIndexStride; bulletMesh.triangleIndexBase = triangleIndexBase; bulletMesh.vertexBase = vertexBase; bulletMesh.triangleIndexBase = triangleIndexBase; TriangleIndexVertexArray tiv = new TriangleIndexVertexArray(numTriangles, triangleIndexBase, triangleIndexStride, numVertices, vertexBase, vertexStride); cShape = new GImpactMeshShape(tiv); cShape.setLocalScaling(Converter.convert(worldScale)); ((GImpactMeshShape)cShape).updateBound(); cShape.setLocalScaling(Converter.convert(getScale())); cShape.setMargin(margin); }
/** * De-serialize this shape, for example when loading from a J3O file. * * @param im importer (not null) * @throws IOException from importer */ public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule capsule = im.getCapsule(this); // worldScale = (Vector3f) capsule.readSavable("worldScale", new Vector3f(1, 1, 1)); numVertices = capsule.readInt("numVertices", 0); numTriangles = capsule.readInt("numTriangles", 0); vertexStride = capsule.readInt("vertexStride", 0); triangleIndexStride = capsule.readInt("triangleIndexStride", 0); triangleIndexBase = ByteBuffer.wrap(capsule.readByteArray("triangleIndexBase", new byte[0])); vertexBase = ByteBuffer.wrap(capsule.readByteArray("vertexBase", new byte[0])); createShape(); }
protected void createShape() { bulletMesh = new IndexedMesh(); bulletMesh.numVertices = numVertices; bulletMesh.numTriangles = numTriangles; bulletMesh.vertexStride = vertexStride; bulletMesh.triangleIndexStride = triangleIndexStride; bulletMesh.triangleIndexBase = triangleIndexBase; bulletMesh.vertexBase = vertexBase; bulletMesh.triangleIndexBase = triangleIndexBase; TriangleIndexVertexArray tiv = new TriangleIndexVertexArray(numTriangles, triangleIndexBase, triangleIndexStride, numVertices, vertexBase, vertexStride); cShape = new GImpactMeshShape(tiv); cShape.setLocalScaling(Converter.convert(worldScale)); ((GImpactMeshShape)cShape).updateBound(); cShape.setLocalScaling(Converter.convert(getScale())); cShape.setMargin(margin); }
objectId = createShape(meshId); Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Created Shape {0}", Long.toHexString(objectId)); setScale(scale); setMargin(margin);
public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule capsule = im.getCapsule(this); worldScale = (Vector3f) capsule.readSavable("worldScale", new Vector3f(1, 1, 1)); numVertices = capsule.readInt("numVertices", 0); numTriangles = capsule.readInt("numTriangles", 0); vertexStride = capsule.readInt("vertexStride", 0); triangleIndexStride = capsule.readInt("triangleIndexStride", 0); triangleIndexBase = ByteBuffer.wrap(capsule.readByteArray("triangleIndexBase", new byte[0])); vertexBase = ByteBuffer.wrap(capsule.readByteArray("vertexBase", new byte[0])); createShape(); }
/** * creates a collision shape from the given Mesh * @param mesh the Mesh to use */ public GImpactCollisionShape(Mesh mesh) { createCollisionMesh(mesh, new Vector3f(1,1,1)); }
@Override protected void finalize() throws Throwable { super.finalize(); Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Finalizing Mesh {0}", Long.toHexString(meshId)); finalizeNative(meshId); }
objectId = createShape(meshId); Logger.getLogger(this.getClass().getName()).log(Level.FINE, "Created Shape {0}", Long.toHexString(objectId)); setScale(scale); setMargin(margin);
private void createCollisionMesh(Mesh mesh) { triangleIndexBase = BufferUtils.createByteBuffer(mesh.getTriangleCount() * 3 * 4); vertexBase = BufferUtils.createByteBuffer(mesh.getVertexCount() * 3 * 4); // triangleIndexBase = ByteBuffer.allocate(mesh.getTriangleCount() * 3 * 4); // vertexBase = ByteBuffer.allocate(mesh.getVertexCount() * 3 * 4); numVertices = mesh.getVertexCount(); vertexStride = 12; //3 verts * 4 bytes per. numTriangles = mesh.getTriangleCount(); triangleIndexStride = 12; //3 index entries * 4 bytes each. IndexBuffer indices = mesh.getIndicesAsList(); FloatBuffer vertices = mesh.getFloatBuffer(Type.Position); vertices.rewind(); int verticesLength = mesh.getVertexCount() * 3; for (int i = 0; i < verticesLength; i++) { float tempFloat = vertices.get(); vertexBase.putFloat(tempFloat); } int indicesLength = mesh.getTriangleCount() * 3; for (int i = 0; i < indicesLength; i++) { triangleIndexBase.putInt(indices.get(i)); } vertices.rewind(); vertices.clear(); createShape(); }
/** * creates a collision shape from the given Mesh * @param mesh the Mesh to use */ public GImpactCollisionShape(Mesh mesh) { createCollisionMesh(mesh); }
@Override protected void finalize() throws Throwable { super.finalize(); Logger.getLogger(this.getClass().getName()).log(Level.FINE, "Finalizing Mesh {0}", Long.toHexString(meshId)); finalizeNative(meshId); }
private void createCollisionMesh(Mesh mesh, Vector3f worldScale) { this.worldScale = worldScale; bulletMesh = Converter.convert(mesh); this.numVertices = bulletMesh.numVertices; this.numTriangles = bulletMesh.numTriangles; this.vertexStride = bulletMesh.vertexStride; this.triangleIndexStride = bulletMesh.triangleIndexStride; this.triangleIndexBase = bulletMesh.triangleIndexBase; this.vertexBase = bulletMesh.vertexBase; createShape(); }
/** * creates a collision shape from the given Mesh * @param mesh the Mesh to use */ public GImpactCollisionShape(Mesh mesh) { createCollisionMesh(mesh); }
public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule capsule = im.getCapsule(this); // worldScale = (Vector3f) capsule.readSavable("worldScale", new Vector3f(1, 1, 1)); numVertices = capsule.readInt("numVertices", 0); numTriangles = capsule.readInt("numTriangles", 0); vertexStride = capsule.readInt("vertexStride", 0); triangleIndexStride = capsule.readInt("triangleIndexStride", 0); triangleIndexBase = ByteBuffer.wrap(capsule.readByteArray("triangleIndexBase", new byte[0])); vertexBase = ByteBuffer.wrap(capsule.readByteArray("vertexBase", new byte[0])); createShape(); }
/** * creates a collision shape from the given Mesh * @param mesh the Mesh to use */ public GImpactCollisionShape(Mesh mesh) { createCollisionMesh(mesh, new Vector3f(1,1,1)); }
public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule capsule = im.getCapsule(this); // worldScale = (Vector3f) capsule.readSavable("worldScale", new Vector3f(1, 1, 1)); numVertices = capsule.readInt("numVertices", 0); numTriangles = capsule.readInt("numTriangles", 0); vertexStride = capsule.readInt("vertexStride", 0); triangleIndexStride = capsule.readInt("triangleIndexStride", 0); triangleIndexBase = ByteBuffer.wrap(capsule.readByteArray("triangleIndexBase", new byte[0])); vertexBase = ByteBuffer.wrap(capsule.readByteArray("vertexBase", new byte[0])); createShape(); }