Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Bolsee <benoit.bolsee@online.be>2010-09-01 01:32:58 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2010-09-01 01:32:58 +0400
commit2b4c0cd43b7cf5d92785f295052742746ce51c42 (patch)
treec941713190e0d3ab12ff5ce2769ac1b23b76430b /extern/recastnavigation
parentb5f4144d251989be378659858ed38aaf572ff4ec (diff)
Recast: remove unused files
Diffstat (limited to 'extern/recastnavigation')
-rw-r--r--extern/recastnavigation/Recast/Include/RecastDebugDraw.h59
-rw-r--r--extern/recastnavigation/Recast/Source/RecastDebugDraw.cpp799
2 files changed, 0 insertions, 858 deletions
diff --git a/extern/recastnavigation/Recast/Include/RecastDebugDraw.h b/extern/recastnavigation/Recast/Include/RecastDebugDraw.h
deleted file mode 100644
index 27ba0a1aa71..00000000000
--- a/extern/recastnavigation/Recast/Include/RecastDebugDraw.h
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// Copyright (c) 2009 Mikko Mononen memon@inside.org
-//
-// This software is provided 'as-is', without any express or implied
-// warranty. In no event will the authors be held liable for any damages
-// arising from the use of this software.
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it
-// freely, subject to the following restrictions:
-// 1. The origin of this software must not be misrepresented; you must not
-// claim that you wrote the original software. If you use this software
-// in a product, an acknowledgment in the product documentation would be
-// appreciated but is not required.
-// 2. Altered source versions must be plainly marked as such, and must not be
-// misrepresented as being the original software.
-// 3. This notice may not be removed or altered from any source distribution.
-//
-
-#ifndef RECAST_DEBUGDRAW_H
-#define RECAST_DEBUGDRAW_H
-
-inline int bit(int a, int b)
-{
- return (a & (1 << b)) >> b;
-}
-
-inline void intToCol(int i, float* col)
-{
- int r = bit(i, 0) + bit(i, 3) * 2 + 1;
- int g = bit(i, 1) + bit(i, 4) * 2 + 1;
- int b = bit(i, 2) + bit(i, 5) * 2 + 1;
- col[0] = 1 - r*63.0f/255.0f;
- col[1] = 1 - g*63.0f/255.0f;
- col[2] = 1 - b*63.0f/255.0f;
-}
-
-void rcDebugDrawHeightfieldSolid(const struct rcHeightfield& hf);
-void rcDebugDrawHeightfieldWalkable(const struct rcHeightfield& hf);
-
-void rcDebugDrawMesh(const float* verts, int nverts, const int* tris, const float* normals, int ntris, const unsigned char* flags);
-void rcDebugDrawMeshSlope(const float* verts, int nverts, const int* tris, const float* normals, int ntris, const float walkableSlopeAngle);
-
-void rcDebugDrawCompactHeightfieldSolid(const struct rcCompactHeightfield& chf);
-void rcDebugDrawCompactHeightfieldRegions(const struct rcCompactHeightfield& chf);
-void rcDebugDrawCompactHeightfieldDistance(const struct rcCompactHeightfield& chf);
-
-void rcDebugDrawRegionConnections(const struct rcContourSet& cset, const float alpha = 1.0f);
-void rcDebugDrawRawContours(const struct rcContourSet& cset, const float alpha = 1.0f);
-void rcDebugDrawContours(const struct rcContourSet& cset, const float alpha = 1.0f);
-void rcDebugDrawPolyMesh(const struct rcPolyMesh& mesh);
-void rcDebugDrawPolyMeshDetail(const struct rcPolyMeshDetail& dmesh);
-
-void rcDebugDrawCylinderWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col);
-void rcDebugDrawBoxWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col);
-void rcDebugDrawBox(float minx, float miny, float minz, float maxx, float maxy, float maxz,
- const float* col1, const float* col2);
-void rcDrawArc(const float* p0, const float* p1);
-
-#endif // RECAST_DEBUGDRAW_H
diff --git a/extern/recastnavigation/Recast/Source/RecastDebugDraw.cpp b/extern/recastnavigation/Recast/Source/RecastDebugDraw.cpp
deleted file mode 100644
index fecee4c6172..00000000000
--- a/extern/recastnavigation/Recast/Source/RecastDebugDraw.cpp
+++ /dev/null
@@ -1,799 +0,0 @@
-//
-// Copyright (c) 2009 Mikko Mononen memon@inside.org
-//
-// This software is provided 'as-is', without any express or implied
-// warranty. In no event will the authors be held liable for any damages
-// arising from the use of this software.
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it
-// freely, subject to the following restrictions:
-// 1. The origin of this software must not be misrepresented; you must not
-// claim that you wrote the original software. If you use this software
-// in a product, an acknowledgment in the product documentation would be
-// appreciated but is not required.
-// 2. Altered source versions must be plainly marked as such, and must not be
-// misrepresented as being the original software.
-// 3. This notice may not be removed or altered from any source distribution.
-//
-
-#define _USE_MATH_DEFINES
-#include <math.h>
-#include "RecastDebugDraw.h"
-#include "SDL.h"
-#include "SDL_Opengl.h"
-#include "MeshLoaderObj.h"
-#include "Recast.h"
-
-void rcDebugDrawMesh(const float* verts, int nverts,
- const int* tris, const float* normals, int ntris,
- const unsigned char* flags)
-{
- glBegin(GL_TRIANGLES);
- for (int i = 0; i < ntris*3; i += 3)
- {
- float a = (2+normals[i+0]+normals[i+1])/4;
- if (flags && !flags[i/3])
- glColor3f(a,a*0.3f,a*0.1f);
- else
- glColor3f(a,a,a);
- glVertex3fv(&verts[tris[i]*3]);
- glVertex3fv(&verts[tris[i+1]*3]);
- glVertex3fv(&verts[tris[i+2]*3]);
- }
- glEnd();
-}
-
-void rcDebugDrawMeshSlope(const float* verts, int nverts,
- const int* tris, const float* normals, int ntris,
- const float walkableSlopeAngle)
-{
- const float walkableThr = cosf(walkableSlopeAngle/180.0f*(float)M_PI);
-
- glBegin(GL_TRIANGLES);
- for (int i = 0; i < ntris*3; i += 3)
- {
- const float* norm = &normals[i];
- float a = (2+norm[0]+norm[1])/4;
- if (norm[1] > walkableThr)
- glColor3f(a,a,a);
- else
- glColor3f(a,a*0.3f,a*0.1f);
- glVertex3fv(&verts[tris[i]*3]);
- glVertex3fv(&verts[tris[i+1]*3]);
- glVertex3fv(&verts[tris[i+2]*3]);
- }
- glEnd();
-}
-
-void drawBoxWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col)
-{
- glColor4fv(col);
-
- // Top
- glVertex3f(minx, miny, minz);
- glVertex3f(maxx, miny, minz);
- glVertex3f(maxx, miny, minz);
- glVertex3f(maxx, miny, maxz);
- glVertex3f(maxx, miny, maxz);
- glVertex3f(minx, miny, maxz);
- glVertex3f(minx, miny, maxz);
- glVertex3f(minx, miny, minz);
-
- // bottom
- glVertex3f(minx, maxy, minz);
- glVertex3f(maxx, maxy, minz);
- glVertex3f(maxx, maxy, minz);
- glVertex3f(maxx, maxy, maxz);
- glVertex3f(maxx, maxy, maxz);
- glVertex3f(minx, maxy, maxz);
- glVertex3f(minx, maxy, maxz);
- glVertex3f(minx, maxy, minz);
-
- // Sides
- glVertex3f(minx, miny, minz);
- glVertex3f(minx, maxy, minz);
- glVertex3f(maxx, miny, minz);
- glVertex3f(maxx, maxy, minz);
- glVertex3f(maxx, miny, maxz);
- glVertex3f(maxx, maxy, maxz);
- glVertex3f(minx, miny, maxz);
- glVertex3f(minx, maxy, maxz);
-}
-
-void drawBox(float minx, float miny, float minz, float maxx, float maxy, float maxz,
- const float* col1, const float* col2)
-{
- float verts[8*3] =
- {
- minx, miny, minz,
- maxx, miny, minz,
- maxx, miny, maxz,
- minx, miny, maxz,
- minx, maxy, minz,
- maxx, maxy, minz,
- maxx, maxy, maxz,
- minx, maxy, maxz,
- };
- static const float dim[6] =
- {
- 0.95f, 0.55f, 0.65f, 0.85f, 0.65f, 0.85f,
- };
- static const unsigned char inds[6*5] =
- {
- 0, 7, 6, 5, 4,
- 1, 0, 1, 2, 3,
- 2, 1, 5, 6, 2,
- 3, 3, 7, 4, 0,
- 4, 2, 6, 7, 3,
- 5, 0, 4, 5, 1,
- };
-
- const unsigned char* in = inds;
- for (int i = 0; i < 6; ++i)
- {
- float d = dim[*in]; in++;
- if (i == 0)
- glColor4f(d*col2[0],d*col2[1],d*col2[2], col2[3]);
- else
- glColor4f(d*col1[0],d*col1[1],d*col1[2], col1[3]);
- glVertex3fv(&verts[*in*3]); in++;
- glVertex3fv(&verts[*in*3]); in++;
- glVertex3fv(&verts[*in*3]); in++;
- glVertex3fv(&verts[*in*3]); in++;
- }
-}
-
-void rcDebugDrawCylinderWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col)
-{
- static const int NUM_SEG = 16;
- float dir[NUM_SEG*2];
- for (int i = 0; i < NUM_SEG; ++i)
- {
- const float a = (float)i/(float)NUM_SEG*(float)M_PI*2;
- dir[i*2] = cosf(a);
- dir[i*2+1] = sinf(a);
- }
-
- const float cx = (maxx + minx)/2;
- const float cz = (maxz + minz)/2;
- const float rx = (maxx - minx)/2;
- const float rz = (maxz - minz)/2;
-
- glColor4fv(col);
- glBegin(GL_LINES);
- for (int i = 0, j=NUM_SEG-1; i < NUM_SEG; j=i++)
- {
- glVertex3f(cx+dir[j*2+0]*rx, miny, cz+dir[j*2+1]*rz);
- glVertex3f(cx+dir[i*2+0]*rx, miny, cz+dir[i*2+1]*rz);
- glVertex3f(cx+dir[j*2+0]*rx, maxy, cz+dir[j*2+1]*rz);
- glVertex3f(cx+dir[i*2+0]*rx, maxy, cz+dir[i*2+1]*rz);
- }
- for (int i = 0; i < NUM_SEG; i += NUM_SEG/4)
- {
- glVertex3f(cx+dir[i*2+0]*rx, miny, cz+dir[i*2+1]*rz);
- glVertex3f(cx+dir[i*2+0]*rx, maxy, cz+dir[i*2+1]*rz);
- }
- glEnd();
-}
-
-void rcDebugDrawBoxWire(float minx, float miny, float minz, float maxx, float maxy, float maxz, const float* col)
-{
- glBegin(GL_LINES);
- drawBoxWire(minx, miny, minz, maxx, maxy, maxz, col);
- glEnd();
-}
-
-void rcDebugDrawBox(float minx, float miny, float minz, float maxx, float maxy, float maxz,
- const float* col1, const float* col2)
-{
- glBegin(GL_QUADS);
- drawBox(minx, miny, minz, maxx, maxy, maxz, col1, col2);
- glEnd();
-}
-
-
-void rcDebugDrawHeightfieldSolid(const rcHeightfield& hf)
-{
- static const float col0[4] = { 1,1,1,1 };
-
- const float* orig = hf.bmin;
- const float cs = hf.cs;
- const float ch = hf.ch;
-
- const int w = hf.width;
- const int h = hf.height;
-
- glBegin(GL_QUADS);
-
- for (int y = 0; y < h; ++y)
- {
- for (int x = 0; x < w; ++x)
- {
- float fx = orig[0] + x*cs;
- float fz = orig[2] + y*cs;
- const rcSpan* s = hf.spans[x + y*w];
- while (s)
- {
- drawBox(fx, orig[1]+s->smin*ch, fz, fx+cs, orig[1] + s->smax*ch, fz+cs, col0, col0);
- s = s->next;
- }
- }
- }
- glEnd();
-}
-
-void rcDebugDrawHeightfieldWalkable(const rcHeightfield& hf)
-{
- static const float col0[4] = { 1,1,1,1 };
- static const float col1[4] = { 0.25f,0.44f,0.5f,1 };
-
- const float* orig = hf.bmin;
- const float cs = hf.cs;
- const float ch = hf.ch;
-
- const int w = hf.width;
- const int h = hf.height;
-
- glBegin(GL_QUADS);
-
- for (int y = 0; y < h; ++y)
- {
- for (int x = 0; x < w; ++x)
- {
- float fx = orig[0] + x*cs;
- float fz = orig[2] + y*cs;
- const rcSpan* s = hf.spans[x + y*w];
- while (s)
- {
- bool csel = (s->flags & 0x1) == 0;
- drawBox(fx, orig[1]+s->smin*ch, fz, fx+cs, orig[1] + s->smax*ch, fz+cs, col0, csel ? col0 : col1);
- s = s->next;
- }
- }
- }
- glEnd();
-}
-
-void rcDebugDrawCompactHeightfieldSolid(const rcCompactHeightfield& chf)
-{
- const float cs = chf.cs;
- const float ch = chf.ch;
-
- glColor3ub(64,112,128);
-
- glBegin(GL_QUADS);
- for (int y = 0; y < chf.height; ++y)
- {
- for (int x = 0; x < chf.width; ++x)
- {
- const float fx = chf.bmin[0] + x*cs;
- const float fz = chf.bmin[2] + y*cs;
- const rcCompactCell& c = chf.cells[x+y*chf.width];
-
- for (unsigned i = c.index, ni = c.index+c.count; i < ni; ++i)
- {
- const rcCompactSpan& s = chf.spans[i];
- const float fy = chf.bmin[1] + (s.y+1)*ch;
- glVertex3f(fx, fy, fz);
- glVertex3f(fx, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz);
- }
- }
- }
- glEnd();
-}
-
-void rcDebugDrawCompactHeightfieldRegions(const rcCompactHeightfield& chf)
-{
- const float cs = chf.cs;
- const float ch = chf.ch;
-
- float col[4] = { 1,1,1,1 };
-
- glBegin(GL_QUADS);
- for (int y = 0; y < chf.height; ++y)
- {
- for (int x = 0; x < chf.width; ++x)
- {
- const float fx = chf.bmin[0] + x*cs;
- const float fz = chf.bmin[2] + y*cs;
- const rcCompactCell& c = chf.cells[x+y*chf.width];
-
- for (unsigned i = c.index, ni = c.index+c.count; i < ni; ++i)
- {
- const rcCompactSpan& s = chf.spans[i];
- if (s.reg)
- {
- intToCol(s.reg, col);
- glColor4fv(col);
- }
- else
- {
- glColor4ub(0,0,0,128);
- }
- const float fy = chf.bmin[1] + (s.y+1)*ch;
- glVertex3f(fx, fy, fz);
- glVertex3f(fx, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz);
- }
- }
- }
- glEnd();
-}
-
-
-void rcDebugDrawCompactHeightfieldDistance(const rcCompactHeightfield& chf)
-{
- const float cs = chf.cs;
- const float ch = chf.ch;
-
- float maxd = chf.maxDistance;
- if (maxd < 1.0f) maxd = 1;
- float dscale = 1.0f / maxd;
-
- glBegin(GL_QUADS);
- for (int y = 0; y < chf.height; ++y)
- {
- for (int x = 0; x < chf.width; ++x)
- {
- const float fx = chf.bmin[0] + x*cs;
- const float fz = chf.bmin[2] + y*cs;
- const rcCompactCell& c = chf.cells[x+y*chf.width];
-
- for (unsigned i = c.index, ni = c.index+c.count; i < ni; ++i)
- {
- const rcCompactSpan& s = chf.spans[i];
- const float fy = chf.bmin[1] + (s.y+1)*ch;
- float cd = (float)s.dist * dscale;
- glColor3f(cd, cd, cd);
- glVertex3f(fx, fy, fz);
- glVertex3f(fx, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz+cs);
- glVertex3f(fx+cs, fy, fz);
- }
- }
- }
- glEnd();
-}
-
-static void getContourCenter(const rcContour* cont, const float* orig, float cs, float ch, float* center)
-{
- center[0] = 0;
- center[1] = 0;
- center[2] = 0;
- if (!cont->nverts)
- return;
- for (int i = 0; i < cont->nverts; ++i)
- {
- const int* v = &cont->verts[i*4];
- center[0] += (float)v[0];
- center[1] += (float)v[1];
- center[2] += (float)v[2];
- }
- const float s = 1.0f / cont->nverts;
- center[0] *= s * cs;
- center[1] *= s * ch;
- center[2] *= s * cs;
- center[0] += orig[0];
- center[1] += orig[1] + 4*ch;
- center[2] += orig[2];
-}
-
-static const rcContour* findContourFromSet(const rcContourSet& cset, unsigned short reg)
-{
- for (int i = 0; i < cset.nconts; ++i)
- {
- if (cset.conts[i].reg == reg)
- return &cset.conts[i];
- }
- return 0;
-}
-
-static void drawArc(const float* p0, const float* p1)
-{
- static const int NPTS = 8;
- float pts[NPTS*3];
- float dir[3];
- vsub(dir, p1, p0);
- const float len = sqrtf(vdistSqr(p0, p1));
- for (int i = 0; i < NPTS; ++i)
- {
- float u = (float)i / (float)(NPTS-1);
- float* p = &pts[i*3];
- p[0] = p0[0] + dir[0] * u;
- p[1] = p0[1] + dir[1] * u + (len/4) * (1-rcSqr(u*2-1));
- p[2] = p0[2] + dir[2] * u;
- }
- for (int i = 0; i < NPTS-1; ++i)
- {
- glVertex3fv(&pts[i*3]);
- glVertex3fv(&pts[(i+1)*3]);
- }
-}
-
-void rcDrawArc(const float* p0, const float* p1)
-{
- glBegin(GL_LINES);
- drawArc(p0, p1);
- glEnd();
-}
-
-void rcDebugDrawRegionConnections(const rcContourSet& cset, const float alpha)
-{
- const float* orig = cset.bmin;
- const float cs = cset.cs;
- const float ch = cset.ch;
-
- // Draw centers
- float pos[3], pos2[3];
-
- glColor4ub(0,0,0,196);
-
- glLineWidth(2.0f);
- glBegin(GL_LINES);
- for (int i = 0; i < cset.nconts; ++i)
- {
- const rcContour* cont = &cset.conts[i];
- getContourCenter(cont, orig, cs, ch, pos);
- for (int j = 0; j < cont->nverts; ++j)
- {
- const int* v = &cont->verts[j*4];
- if (v[3] == 0 || (unsigned short)v[3] < cont->reg) continue;
- const rcContour* cont2 = findContourFromSet(cset, (unsigned short)v[3]);
- if (cont2)
- {
- getContourCenter(cont2, orig, cs, ch, pos2);
- drawArc(pos, pos2);
- }
- }
- }
- glEnd();
-
- float col[4] = { 1,1,1,alpha };
-
- glPointSize(7.0f);
- glBegin(GL_POINTS);
- for (int i = 0; i < cset.nconts; ++i)
- {
- const rcContour* cont = &cset.conts[i];
- intToCol(cont->reg, col);
- col[0] *= 0.5f;
- col[1] *= 0.5f;
- col[2] *= 0.5f;
- glColor4fv(col);
- getContourCenter(cont, orig, cs, ch, pos);
- glVertex3fv(pos);
- }
- glEnd();
-
-
- glLineWidth(1.0f);
- glPointSize(1.0f);
-}
-
-void rcDebugDrawRawContours(const rcContourSet& cset, const float alpha)
-{
- const float* orig = cset.bmin;
- const float cs = cset.cs;
- const float ch = cset.ch;
- float col[4] = { 1,1,1,alpha };
- glLineWidth(2.0f);
- glPointSize(2.0f);
- for (int i = 0; i < cset.nconts; ++i)
- {
- const rcContour& c = cset.conts[i];
- intToCol(c.reg, col);
- glColor4fv(col);
- glBegin(GL_LINE_LOOP);
- for (int j = 0; j < c.nrverts; ++j)
- {
- const int* v = &c.rverts[j*4];
- float fx = orig[0] + v[0]*cs;
- float fy = orig[1] + (v[1]+1+(i&1))*ch;
- float fz = orig[2] + v[2]*cs;
- glVertex3f(fx,fy,fz);
- }
- glEnd();
-
- col[0] *= 0.5f;
- col[1] *= 0.5f;
- col[2] *= 0.5f;
- glColor4fv(col);
-
- glBegin(GL_POINTS);
- for (int j = 0; j < c.nrverts; ++j)
- {
- const int* v = &c.rverts[j*4];
-
- float off = 0;
- if (v[3] & RC_BORDER_VERTEX)
- {
- glColor4ub(255,255,255,255);
- off = ch*2;
- }
- else
- {
- glColor4fv(col);
- }
-
- float fx = orig[0] + v[0]*cs;
- float fy = orig[1] + (v[1]+1+(i&1))*ch + off;
- float fz = orig[2] + v[2]*cs;
- glVertex3f(fx,fy,fz);
- }
- glEnd();
- }
- glLineWidth(1.0f);
- glPointSize(1.0f);
-}
-
-void rcDebugDrawContours(const rcContourSet& cset, const float alpha)
-{
- const float* orig = cset.bmin;
- const float cs = cset.cs;
- const float ch = cset.ch;
- float col[4] = { 1,1,1,1 };
- glLineWidth(2.5f);
- glPointSize(3.0f);
- for (int i = 0; i < cset.nconts; ++i)
- {
- const rcContour& c = cset.conts[i];
- intToCol(c.reg, col);
- glColor4fv(col);
-
- glBegin(GL_LINE_LOOP);
- for (int j = 0; j < c.nverts; ++j)
- {
- const int* v = &c.verts[j*4];
- float fx = orig[0] + v[0]*cs;
- float fy = orig[1] + (v[1]+1+(i&1))*ch;
- float fz = orig[2] + v[2]*cs;
- glVertex3f(fx,fy,fz);
- }
- glEnd();
-
- col[0] *= 0.5f;
- col[1] *= 0.5f;
- col[2] *= 0.5f;
- glColor4fv(col);
- glBegin(GL_POINTS);
- for (int j = 0; j < c.nverts; ++j)
- {
- const int* v = &c.verts[j*4];
- float off = 0;
- if (v[3] & RC_BORDER_VERTEX)
- {
- glColor4ub(255,255,255,255);
- off = ch*2;
- }
- else
- {
- glColor4fv(col);
- }
-
- float fx = orig[0] + v[0]*cs;
- float fy = orig[1] + (v[1]+1+(i&1))*ch + off;
- float fz = orig[2] + v[2]*cs;
- glVertex3f(fx,fy,fz);
- }
- glEnd();
- }
- glLineWidth(1.0f);
- glPointSize(1.0f);
-}
-
-void rcDebugDrawPolyMesh(const struct rcPolyMesh& mesh)
-{
- const int nvp = mesh.nvp;
- const float cs = mesh.cs;
- const float ch = mesh.ch;
- const float* orig = mesh.bmin;
- float col[4] = {1,1,1,0.75f};
- glBegin(GL_TRIANGLES);
- for (int i = 0; i < mesh.npolys; ++i)
- {
- const unsigned short* p = &mesh.polys[i*nvp*2];
- intToCol(i, col);
- glColor4fv(col);
- unsigned short vi[3];
- for (int j = 2; j < nvp; ++j)
- {
- if (p[j] == 0xffff) break;
- vi[0] = p[0];
- vi[1] = p[j-1];
- vi[2] = p[j];
- for (int k = 0; k < 3; ++k)
- {
- const unsigned short* v = &mesh.verts[vi[k]*3];
- const float x = orig[0] + v[0]*cs;
- const float y = orig[1] + (v[1]+1)*ch;
- const float z = orig[2] + v[2]*cs;
- glVertex3f(x, y, z);
- }
- }
- }
- glEnd();
-
- // Draw tri boundaries
- glColor4ub(0,48,64,32);
- glLineWidth(1.5f);
- glBegin(GL_LINES);
- for (int i = 0; i < mesh.npolys; ++i)
- {
- const unsigned short* poly = &mesh.polys[i*nvp*2];
- for (int j = 0; j < nvp; ++j)
- {
- if (poly[j] == 0xffff) break;
- if (poly[nvp+j] == 0xffff) continue;
- int vi[2];
- vi[0] = poly[j];
- if (j+1 >= nvp || poly[j+1] == 0xffff)
- vi[1] = poly[0];
- else
- vi[1] = poly[j+1];
- for (int k = 0; k < 2; ++k)
- {
- const unsigned short* v = &mesh.verts[vi[k]*3];
- const float x = orig[0] + v[0]*cs;
- const float y = orig[1] + (v[1]+1)*ch + 0.1f;
- const float z = orig[2] + v[2]*cs;
- glVertex3f(x, y, z);
- }
- }
- }
- glEnd();
-
- // Draw boundaries
- glLineWidth(2.5f);
- glColor4ub(0,48,64,220);
- glBegin(GL_LINES);
- for (int i = 0; i < mesh.npolys; ++i)
- {
- const unsigned short* poly = &mesh.polys[i*nvp*2];
- for (int j = 0; j < nvp; ++j)
- {
- if (poly[j] == 0xffff) break;
- if (poly[nvp+j] != 0xffff) continue;
- int vi[2];
- vi[0] = poly[j];
- if (j+1 >= nvp || poly[j+1] == 0xffff)
- vi[1] = poly[0];
- else
- vi[1] = poly[j+1];
- for (int k = 0; k < 2; ++k)
- {
- const unsigned short* v = &mesh.verts[vi[k]*3];
- const float x = orig[0] + v[0]*cs;
- const float y = orig[1] + (v[1]+1)*ch + 0.1f;
- const float z = orig[2] + v[2]*cs;
- glVertex3f(x, y, z);
- }
- }
- }
- glEnd();
- glLineWidth(1.0f);
-
- glPointSize(3.0f);
- glColor4ub(0,0,0,220);
- glBegin(GL_POINTS);
- for (int i = 0; i < mesh.nverts; ++i)
- {
- const unsigned short* v = &mesh.verts[i*3];
- const float x = orig[0] + v[0]*cs;
- const float y = orig[1] + (v[1]+1)*ch + 0.1f;
- const float z = orig[2] + v[2]*cs;
- glVertex3f(x, y, z);
- }
- glEnd();
- glPointSize(1.0f);
-}
-
-void rcDebugDrawPolyMeshDetail(const struct rcPolyMeshDetail& dmesh)
-{
- float col[4] = {1,1,1,0.75f};
-
- glBegin(GL_TRIANGLES);
- for (int i = 0; i < dmesh.nmeshes; ++i)
- {
- const unsigned short* m = &dmesh.meshes[i*4];
- const unsigned short bverts = m[0];
- const unsigned short btris = m[2];
- const unsigned short ntris = m[3];
- const float* verts = &dmesh.verts[bverts*3];
- const unsigned char* tris = &dmesh.tris[btris*4];
-
- intToCol(i, col);
- glColor4fv(col);
- for (int j = 0; j < ntris; ++j)
- {
- glVertex3fv(&verts[tris[j*4+0]*3]);
- glVertex3fv(&verts[tris[j*4+1]*3]);
- glVertex3fv(&verts[tris[j*4+2]*3]);
- }
- }
- glEnd();
-
- // Internal edges.
- glLineWidth(1.0f);
- glColor4ub(0,0,0,64);
- glBegin(GL_LINES);
- for (int i = 0; i < dmesh.nmeshes; ++i)
- {
- const unsigned short* m = &dmesh.meshes[i*4];
- const unsigned short bverts = m[0];
- const unsigned short btris = m[2];
- const unsigned short ntris = m[3];
- const float* verts = &dmesh.verts[bverts*3];
- const unsigned char* tris = &dmesh.tris[btris*4];
-
- for (int j = 0; j < ntris; ++j)
- {
- const unsigned char* t = &tris[j*4];
- for (int k = 0, kp = 2; k < 3; kp=k++)
- {
- unsigned char ef = (t[3] >> (kp*2)) & 0x3;
- if (ef == 0)
- {
- // Internal edge
- if (t[kp] < t[k])
- {
- glVertex3fv(&verts[t[kp]*3]);
- glVertex3fv(&verts[t[k]*3]);
- }
- }
- }
- }
- }
- glEnd();
-
- // External edges.
- glLineWidth(2.0f);
- glColor4ub(0,0,0,64);
- glBegin(GL_LINES);
- for (int i = 0; i < dmesh.nmeshes; ++i)
- {
- const unsigned short* m = &dmesh.meshes[i*4];
- const unsigned short bverts = m[0];
- const unsigned short btris = m[2];
- const unsigned short ntris = m[3];
- const float* verts = &dmesh.verts[bverts*3];
- const unsigned char* tris = &dmesh.tris[btris*4];
-
- for (int j = 0; j < ntris; ++j)
- {
- const unsigned char* t = &tris[j*4];
- for (int k = 0, kp = 2; k < 3; kp=k++)
- {
- unsigned char ef = (t[3] >> (kp*2)) & 0x3;
- if (ef != 0)
- {
- // Ext edge
- glVertex3fv(&verts[t[kp]*3]);
- glVertex3fv(&verts[t[k]*3]);
- }
- }
- }
- }
- glEnd();
-
- glLineWidth(1.0f);
-
- glPointSize(3.0f);
- glBegin(GL_POINTS);
- for (int i = 0; i < dmesh.nmeshes; ++i)
- {
- const unsigned short* m = &dmesh.meshes[i*4];
- const unsigned short bverts = m[0];
- const unsigned short nverts = m[1];
- const float* verts = &dmesh.verts[bverts*3];
- for (int j = 0; j < nverts; ++j)
- {
- glColor4ub(0,0,0,64);
- glVertex3fv(&verts[j*3]);
- }
- }
- glEnd();
- glPointSize(1.0f);
-}