diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp')
| -rw-r--r-- | KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp b/KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp new file mode 100644 index 00000000..fb22900e --- /dev/null +++ b/KaplaDemo/samples/sampleViewer3/Fracture/CompoundGeometry.cpp @@ -0,0 +1,75 @@ +#include "CompoundGeometry.h" + +#define DEBUG_DRAW 1 + +#if DEBUG_DRAW +#include <windows.h> +#include <GL/gl.h> +#endif + +// ------------------------------------------------------------------------------- +void CompoundGeometry::debugDraw(int maxConvexes) const +{ +#if DEBUG_DRAW + const bool drawConvexes = true; + const bool drawWireframe = true; + const bool drawClipped = false; + const float clipMaxX = 0.0f; + + if (drawConvexes) { + float s = drawClipped ? 1.0f : 0.95f; + + if (drawWireframe) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + PxVec3 n; + int num = convexes.size(); + if (maxConvexes > 0 && maxConvexes < num) + num = maxConvexes; + + for (int i = 0; i < num; i++) { + + switch (i%7) { + case 0 : glColor3f(1.0f, 0.0f, 0.0f); break; + case 1 : glColor3f(0.0f, 1.0f, 0.0f); break; + case 2 : glColor3f(1.0f, 0.0f, 1.0f); break; + case 3 : glColor3f(0.0f, 1.0f, 1.0f); break; + case 4 : glColor3f(1.0f, 0.0f, 1.0f); break; + case 5 : glColor3f(1.0f, 1.0f, 0.0f); break; + case 6 : glColor3f(1.0f, 1.0f, 1.0f); break; + }; + + const Convex &c = convexes[i]; + const PxVec3 *verts = &vertices[c.firstVert]; + PxVec3 center; + center = PxVec3(0.0f, 0.0f, 0.0f); + for (int j = 0; j < c.numVerts; j++) + center += verts[j]; + center /= (float)c.numVerts; + if (drawClipped && center.x > clipMaxX) + continue; + + const int *ids = &indices[c.firstIndex]; + for (int j = 0; j < c.numFaces; j++) { + int numVerts = *ids++; + int flags = *ids++; + + n = (verts[ids[1]] - verts[ids[0]]).cross(verts[ids[2]] - verts[ids[0]]); + n.normalize(); + glNormal3f(n.x, n.y, n.z); + + glBegin(GL_POLYGON); + for (int k = 0; k < numVerts; k++) { + PxVec3 p = verts[ids[k]]; + p = center + (p - center) * s; + glVertex3f(p.x, p.y, p.z); + } + glEnd(); + + ids += numVerts; + } + } + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + } +#endif +}
\ No newline at end of file |