27 int numtotalphysicsverts = 0;
29 const unsigned char* vertexbase;
30 const unsigned char* indexbase;
34 int stride, numverts, numtriangles;
41 for (part = 0; part < graphicssubparts; part++)
44 numtotalphysicsverts += numtriangles * 3;
60 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
62 unsigned int* tri_indices = (
unsigned int*)(indexbase + gfxindex * indexstride);
63 graphicsbase = (
float*)(vertexbase + tri_indices[0] * stride);
64 triangle[0].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
65 graphicsbase = (
float*)(vertexbase + tri_indices[1] * stride);
66 triangle[1].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
67 graphicsbase = (
float*)(vertexbase + tri_indices[2] * stride);
68 triangle[2].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
75 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
77 unsigned short int* tri_indices = (
unsigned short int*)(indexbase + gfxindex * indexstride);
78 graphicsbase = (
float*)(vertexbase + tri_indices[0] * stride);
79 triangle[0].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
80 graphicsbase = (
float*)(vertexbase + tri_indices[1] * stride);
81 triangle[1].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
82 graphicsbase = (
float*)(vertexbase + tri_indices[2] * stride);
83 triangle[2].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
90 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
92 unsigned char* tri_indices = (
unsigned char*)(indexbase + gfxindex * indexstride);
93 graphicsbase = (
float*)(vertexbase + tri_indices[0] * stride);
94 triangle[0].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
95 graphicsbase = (
float*)(vertexbase + tri_indices[1] * stride);
96 triangle[1].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
97 graphicsbase = (
float*)(vertexbase + tri_indices[2] * stride);
98 triangle[2].
setValue(graphicsbase[0] * meshScaling.
getX(), graphicsbase[1] * meshScaling.
getY(), graphicsbase[2] * meshScaling.
getZ());
111 double* graphicsbase;
113 switch (gfxindextype)
117 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
119 unsigned int* tri_indices = (
unsigned int*)(indexbase + gfxindex * indexstride);
120 graphicsbase = (
double*)(vertexbase + tri_indices[0] * stride);
122 graphicsbase = (
double*)(vertexbase + tri_indices[1] * stride);
124 graphicsbase = (
double*)(vertexbase + tri_indices[2] * stride);
132 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
134 unsigned short int* tri_indices = (
unsigned short int*)(indexbase + gfxindex * indexstride);
135 graphicsbase = (
double*)(vertexbase + tri_indices[0] * stride);
137 graphicsbase = (
double*)(vertexbase + tri_indices[1] * stride);
139 graphicsbase = (
double*)(vertexbase + tri_indices[2] * stride);
147 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
149 unsigned char* tri_indices = (
unsigned char*)(indexbase + gfxindex * indexstride);
150 graphicsbase = (
double*)(vertexbase + tri_indices[0] * stride);
152 graphicsbase = (
double*)(vertexbase + tri_indices[1] * stride);
154 graphicsbase = (
double*)(vertexbase + tri_indices[2] * stride);
229 const unsigned char* vertexbase;
230 const unsigned char* indexbase;
234 int stride, numverts, numtriangles;
241 for (part = 0; part < graphicssubparts; part++, memPtr++)
253 switch (gfxindextype)
257 int numindices = numtriangles * 3;
264 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
266 unsigned int* tri_indices = (
unsigned int*)(indexbase + gfxindex * indexstride);
267 tmpIndices[gfxindex * 3].
m_value = tri_indices[0];
268 tmpIndices[gfxindex * 3 + 1].
m_value = tri_indices[1];
269 tmpIndices[gfxindex * 3 + 2].
m_value = tri_indices[2];
282 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
284 unsigned short int* tri_indices = (
unsigned short int*)(indexbase + gfxindex * indexstride);
285 tmpIndices[gfxindex].
m_values[0] = tri_indices[0];
286 tmpIndices[gfxindex].
m_values[1] = tri_indices[1];
287 tmpIndices[gfxindex].
m_values[2] = tri_indices[2];
289 tmpIndices[gfxindex].
m_pad[0] = 0;
290 tmpIndices[gfxindex].
m_pad[1] = 0;
303 for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
305 unsigned char* tri_indices = (
unsigned char*)(indexbase + gfxindex * indexstride);
306 tmpIndices[gfxindex].
m_values[0] = tri_indices[0];
307 tmpIndices[gfxindex].
m_values[1] = tri_indices[1];
308 tmpIndices[gfxindex].
m_values[2] = tri_indices[2];
310 tmpIndices[gfxindex].
m_pad = 0;
334 for (
int i = 0; i < numverts; i++)
336 graphicsbase = (
float*)(vertexbase + i * stride);
337 tmpVertices[i].
m_floats[0] = graphicsbase[0];
338 tmpVertices[i].
m_floats[1] = graphicsbase[1];
339 tmpVertices[i].
m_floats[2] = graphicsbase[2];
353 for (
int i = 0; i < numverts; i++)
355 double* graphicsbase = (
double*)(vertexbase + i * stride);
356 tmpVertices[i].
m_floats[0] = graphicsbase[0];
357 tmpVertices[i].
m_floats[1] = graphicsbase[1];
358 tmpVertices[i].
m_floats[2] = graphicsbase[2];
379 return "btStridingMeshInterfaceData";