• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 3.0.8
4  *
5  * Do not make changes to this file unless you know what you are doing--modify
6  * the SWIG interface file instead.
7  * ----------------------------------------------------------------------------- */
8 
9 package com.badlogic.gdx.physics.bullet.collision;
10 
11 import com.badlogic.gdx.physics.bullet.BulletBase;
12 import com.badlogic.gdx.physics.bullet.linearmath.*;
13 import com.badlogic.gdx.math.Vector3;
14 import com.badlogic.gdx.math.Quaternion;
15 import com.badlogic.gdx.math.Matrix3;
16 import com.badlogic.gdx.math.Matrix4;
17 import com.badlogic.gdx.graphics.Mesh;
18 import com.badlogic.gdx.graphics.g3d.Model;
19 import com.badlogic.gdx.graphics.g3d.model.MeshPart;
20 import com.badlogic.gdx.graphics.g3d.model.NodePart;
21 import com.badlogic.gdx.utils.Array;
22 import com.badlogic.gdx.utils.GdxRuntimeException;
23 
24 public class btTriangleIndexVertexArray extends btStridingMeshInterface {
25 	private long swigCPtr;
26 
btTriangleIndexVertexArray(final String className, long cPtr, boolean cMemoryOwn)27 	protected btTriangleIndexVertexArray(final String className, long cPtr, boolean cMemoryOwn) {
28 		super(className, CollisionJNI.btTriangleIndexVertexArray_SWIGUpcast(cPtr), cMemoryOwn);
29 		swigCPtr = cPtr;
30 	}
31 
32 	/** Construct a new btTriangleIndexVertexArray, normally you should not need this constructor it's intended for low-level usage. */
btTriangleIndexVertexArray(long cPtr, boolean cMemoryOwn)33 	public btTriangleIndexVertexArray(long cPtr, boolean cMemoryOwn) {
34 		this("btTriangleIndexVertexArray", cPtr, cMemoryOwn);
35 		construct();
36 	}
37 
38 	@Override
reset(long cPtr, boolean cMemoryOwn)39 	protected void reset(long cPtr, boolean cMemoryOwn) {
40 		if (!destroyed)
41 			destroy();
42 		super.reset(CollisionJNI.btTriangleIndexVertexArray_SWIGUpcast(swigCPtr = cPtr), cMemoryOwn);
43 	}
44 
getCPtr(btTriangleIndexVertexArray obj)45 	public static long getCPtr(btTriangleIndexVertexArray obj) {
46 		return (obj == null) ? 0 : obj.swigCPtr;
47 	}
48 
49 	@Override
finalize()50 	protected void finalize() throws Throwable {
51 		if (!destroyed)
52 			destroy();
53 		super.finalize();
54 	}
55 
delete()56   @Override protected synchronized void delete() {
57 		if (swigCPtr != 0) {
58 			if (swigCMemOwn) {
59 				swigCMemOwn = false;
60 				CollisionJNI.delete_btTriangleIndexVertexArray(swigCPtr);
61 			}
62 			swigCPtr = 0;
63 		}
64 		super.delete();
65 	}
66 
67 	protected final static Array<btTriangleIndexVertexArray> instances = new Array<btTriangleIndexVertexArray>();
68 
69 	/** @return Whether the supplied array contains all specified tags. */
compare(final btTriangleIndexVertexArray array, final Array<T> tags)70 	public static <T extends Object> boolean compare(final btTriangleIndexVertexArray array, final Array<T> tags) {
71 		if (array.meshes.size != tags.size)
72 			return false;
73 		for (final btIndexedMesh mesh : array.meshes) {
74 			boolean found = false;
75 			final Object tag = mesh.tag;
76 			if (tag == null)
77 				return false;
78 			for (final T t : tags) {
79 				if (t.equals(tag)) {
80 					found = true;
81 					break;
82 				}
83 			}
84 			if (!found)
85 				return false;
86 		}
87 		return true;
88 	}
89 
getInstance(final Array<T> tags)90 	protected static <T extends Object> btTriangleIndexVertexArray getInstance(final Array<T> tags) {
91 		for (final btTriangleIndexVertexArray instance : instances) {
92 			if (compare(instance, tags))
93 				return instance;
94 		}
95 		return null;
96 	}
97 
98 	/** Create or reuse a btTriangleIndexVertexArray instance based on the specified {@link MeshPart} array.
99 	 * Use {@link #release()} to release the mesh when it's no longer needed. */
obtain(final Array<T> meshParts)100 	public static <T extends MeshPart> btTriangleIndexVertexArray obtain(final Array<T> meshParts) {
101 		btTriangleIndexVertexArray result = getInstance(meshParts);
102 		if (result == null) {
103 			result = new btTriangleIndexVertexArray(meshParts);
104 			instances.add(result);
105 		}
106 		result.obtain();
107 		return result;
108 	}
109 
110 	protected final Array<btIndexedMesh> meshes = new Array<btIndexedMesh>(1);
111 
btTriangleIndexVertexArray(final MeshPart meshPart)112 	public btTriangleIndexVertexArray(final MeshPart meshPart) {
113 		this();
114 		addMeshPart(meshPart);
115 	}
116 
btTriangleIndexVertexArray(final Iterable<T> meshParts)117 	public <T extends MeshPart> btTriangleIndexVertexArray(final Iterable<T> meshParts) {
118 		this();
119 		addMeshParts(meshParts);
120 	}
121 
122 	/** The amount of meshes this array contains. */
getIndexedMeshCount()123 	public int getIndexedMeshCount() {
124 		return meshes.size;
125 	}
126 
127 	/** Return the {@link btIndexedMesh} at the specified index. */
getIndexedMesh(int index)128 	public btIndexedMesh getIndexedMesh(int index) {
129 		return meshes.get(index);
130 	}
131 
132 	/** Add a {@link MeshPart} instance to this btTriangleIndexVertexArray.
133 	 * The specified mesh must be indexed and triangulated and must outlive this btTriangleIndexVertexArray.
134      * The buffers for the vertices and indices are shared amongst both. */
addMeshPart(final MeshPart meshPart)135 	public btTriangleIndexVertexArray addMeshPart(final MeshPart meshPart) {
136 		btIndexedMesh mesh = btIndexedMesh.obtain(meshPart);
137 		addIndexedMesh(mesh, PHY_ScalarType.PHY_SHORT);
138 		mesh.release();
139 		return this;
140 	}
141 
142 	/** Add one or more {@link MeshPart} instances to this btTriangleIndexVertexArray.
143 	 * The specified meshes must be indexed and triangulated and must outlive this btTriangleIndexVertexArray.
144      * The buffers for the vertices and indices are shared amongst both. */
addMeshParts(final MeshPart... meshParts)145 	public btTriangleIndexVertexArray addMeshParts(final MeshPart... meshParts) {
146 		for (int i = 0; i < meshParts.length; i++)
147 			addMeshPart(meshParts[i]);
148 		return this;
149 	}
150 
151 	/** Add one or more {@link MeshPart} instances to this btTriangleIndexVertexArray.
152 	 * The specified meshes must be indexed and triangulated and must outlive this btTriangleIndexVertexArray.
153      * The buffers for the vertices and indices are shared amongst both. */
addMeshParts(final Iterable<T> meshParts)154 	public <T extends MeshPart> btTriangleIndexVertexArray addMeshParts(final Iterable<T> meshParts) {
155 		for (final MeshPart meshPart : meshParts)
156 			addMeshPart(meshPart);
157 		return this;
158 	}
159 
160 	/** Add one or more {@link NodePart} instances to this btTriangleIndexVertexArray.
161 	 * The specified meshes must be indexed and triangulated and must outlive this btTriangleIndexVertexArray.
162      * The buffers for the vertices and indices are shared amongst both. */
addNodeParts(final Iterable<T> nodeParts)163 	public <T extends NodePart> btTriangleIndexVertexArray addNodeParts(final Iterable<T> nodeParts) {
164 		for (final NodePart nodePart : nodeParts)
165 			addMeshPart(nodePart.meshPart);
166 		return this;
167 	}
168 
169 	/** Add a {@link btIndexedMesh} to this array */
addIndexedMesh(final btIndexedMesh mesh, int indexType)170 	public btTriangleIndexVertexArray addIndexedMesh(final btIndexedMesh mesh, int indexType) {
171 		mesh.obtain();
172 		internalAddIndexedMesh(mesh, indexType);
173 		meshes.add(mesh);
174 		return this;
175 	}
176 
177 	/** Add a {@link btIndexedMesh} to this array */
addIndexedMesh(final btIndexedMesh mesh)178 	public btTriangleIndexVertexArray addIndexedMesh(final btIndexedMesh mesh) {
179 		return addIndexedMesh(mesh, PHY_ScalarType.PHY_SHORT);
180 	}
181 
182 	@Override
dispose()183 	public void dispose() {
184 		for (final btIndexedMesh mesh : meshes)
185 			mesh.release();
186 		meshes.clear();
187 		super.dispose();
188 	}
189 
btTriangleIndexVertexArray()190   public btTriangleIndexVertexArray() {
191     this(CollisionJNI.new_btTriangleIndexVertexArray(), true);
192   }
193 
internalAddIndexedMesh(btIndexedMesh mesh, int indexType)194   private void internalAddIndexedMesh(btIndexedMesh mesh, int indexType) {
195     CollisionJNI.btTriangleIndexVertexArray_internalAddIndexedMesh__SWIG_0(swigCPtr, this, btIndexedMesh.getCPtr(mesh), mesh, indexType);
196   }
197 
internalAddIndexedMesh(btIndexedMesh mesh)198   private void internalAddIndexedMesh(btIndexedMesh mesh) {
199     CollisionJNI.btTriangleIndexVertexArray_internalAddIndexedMesh__SWIG_1(swigCPtr, this, btIndexedMesh.getCPtr(mesh), mesh);
200   }
201 
getLockedVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype, int subpart)202   public void getLockedVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype, int subpart) {
203     CollisionJNI.btTriangleIndexVertexArray_getLockedVertexIndexBase__SWIG_0(swigCPtr, this, SWIGTYPE_p_p_unsigned_char.getCPtr(vertexbase), SWIGTYPE_p_int.getCPtr(numverts), SWIGTYPE_p_PHY_ScalarType.getCPtr(type), SWIGTYPE_p_int.getCPtr(vertexStride), SWIGTYPE_p_p_unsigned_char.getCPtr(indexbase), SWIGTYPE_p_int.getCPtr(indexstride), SWIGTYPE_p_int.getCPtr(numfaces), SWIGTYPE_p_PHY_ScalarType.getCPtr(indicestype), subpart);
204   }
205 
getLockedVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype)206   public void getLockedVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype) {
207     CollisionJNI.btTriangleIndexVertexArray_getLockedVertexIndexBase__SWIG_1(swigCPtr, this, SWIGTYPE_p_p_unsigned_char.getCPtr(vertexbase), SWIGTYPE_p_int.getCPtr(numverts), SWIGTYPE_p_PHY_ScalarType.getCPtr(type), SWIGTYPE_p_int.getCPtr(vertexStride), SWIGTYPE_p_p_unsigned_char.getCPtr(indexbase), SWIGTYPE_p_int.getCPtr(indexstride), SWIGTYPE_p_int.getCPtr(numfaces), SWIGTYPE_p_PHY_ScalarType.getCPtr(indicestype));
208   }
209 
getLockedReadOnlyVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype, int subpart)210   public void getLockedReadOnlyVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype, int subpart) {
211     CollisionJNI.btTriangleIndexVertexArray_getLockedReadOnlyVertexIndexBase__SWIG_0(swigCPtr, this, SWIGTYPE_p_p_unsigned_char.getCPtr(vertexbase), SWIGTYPE_p_int.getCPtr(numverts), SWIGTYPE_p_PHY_ScalarType.getCPtr(type), SWIGTYPE_p_int.getCPtr(vertexStride), SWIGTYPE_p_p_unsigned_char.getCPtr(indexbase), SWIGTYPE_p_int.getCPtr(indexstride), SWIGTYPE_p_int.getCPtr(numfaces), SWIGTYPE_p_PHY_ScalarType.getCPtr(indicestype), subpart);
212   }
213 
getLockedReadOnlyVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype)214   public void getLockedReadOnlyVertexIndexBase(SWIGTYPE_p_p_unsigned_char vertexbase, SWIGTYPE_p_int numverts, SWIGTYPE_p_PHY_ScalarType type, SWIGTYPE_p_int vertexStride, SWIGTYPE_p_p_unsigned_char indexbase, SWIGTYPE_p_int indexstride, SWIGTYPE_p_int numfaces, SWIGTYPE_p_PHY_ScalarType indicestype) {
215     CollisionJNI.btTriangleIndexVertexArray_getLockedReadOnlyVertexIndexBase__SWIG_1(swigCPtr, this, SWIGTYPE_p_p_unsigned_char.getCPtr(vertexbase), SWIGTYPE_p_int.getCPtr(numverts), SWIGTYPE_p_PHY_ScalarType.getCPtr(type), SWIGTYPE_p_int.getCPtr(vertexStride), SWIGTYPE_p_p_unsigned_char.getCPtr(indexbase), SWIGTYPE_p_int.getCPtr(indexstride), SWIGTYPE_p_int.getCPtr(numfaces), SWIGTYPE_p_PHY_ScalarType.getCPtr(indicestype));
216   }
217 
getIndexedMeshArray()218   public SWIGTYPE_p_btAlignedObjectArrayT_btIndexedMesh_t getIndexedMeshArray() {
219     return new SWIGTYPE_p_btAlignedObjectArrayT_btIndexedMesh_t(CollisionJNI.btTriangleIndexVertexArray_getIndexedMeshArray(swigCPtr, this), false);
220   }
221 
222 }
223