More robust handling of detail mesh height values.
This commit is contained in:
parent
dd5377a503
commit
ce338df394
@ -194,7 +194,7 @@ static float distToPoly(int nvert, const float* verts, const float* p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static unsigned short getHeight(const float fx, const float fz, const float cs, const float ics, const rcHeightPatch& hp)
|
static unsigned short getHeight(const float fx, const float fy, const float fz, const float cs, const float ics, const float ch, const rcHeightPatch& hp)
|
||||||
{
|
{
|
||||||
int ix = (int)floorf(fx*ics + 0.01f);
|
int ix = (int)floorf(fx*ics + 0.01f);
|
||||||
int iz = (int)floorf(fz*ics + 0.01f);
|
int iz = (int)floorf(fz*ics + 0.01f);
|
||||||
@ -214,14 +214,22 @@ static unsigned short getHeight(const float fx, const float fz, const float cs,
|
|||||||
if (nx < 0 || nz < 0 || nx >= hp.width || nz >= hp.height) continue;
|
if (nx < 0 || nz < 0 || nx >= hp.width || nz >= hp.height) continue;
|
||||||
const unsigned short nh = hp.data[nx+nz*hp.width];
|
const unsigned short nh = hp.data[nx+nz*hp.width];
|
||||||
if (nh == RC_UNSET_HEIGHT) continue;
|
if (nh == RC_UNSET_HEIGHT) continue;
|
||||||
const float dx = (nx+0.5f)*cs - fx;
|
|
||||||
|
const float d = fabsf(nh*ch - fy);
|
||||||
|
if (d < dmin)
|
||||||
|
{
|
||||||
|
h = nh;
|
||||||
|
dmin = d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* const float dx = (nx+0.5f)*cs - fx;
|
||||||
const float dz = (nz+0.5f)*cs - fz;
|
const float dz = (nz+0.5f)*cs - fz;
|
||||||
const float d = dx*dx+dz*dz;
|
const float d = dx*dx+dz*dz;
|
||||||
if (d < dmin)
|
if (d < dmin)
|
||||||
{
|
{
|
||||||
h = nh;
|
h = nh;
|
||||||
dmin = d;
|
dmin = d;
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return h;
|
return h;
|
||||||
@ -534,6 +542,7 @@ static bool buildPolyDetail(const float* in, const int nin,
|
|||||||
}
|
}
|
||||||
// Create samples along the edge.
|
// Create samples along the edge.
|
||||||
float dx = vi[0] - vj[0];
|
float dx = vi[0] - vj[0];
|
||||||
|
float dy = vi[1] - vj[1];
|
||||||
float dz = vi[2] - vj[2];
|
float dz = vi[2] - vj[2];
|
||||||
float d = sqrtf(dx*dx + dz*dz);
|
float d = sqrtf(dx*dx + dz*dz);
|
||||||
int nn = 1 + (int)floorf(d/sampleDist);
|
int nn = 1 + (int)floorf(d/sampleDist);
|
||||||
@ -545,8 +554,9 @@ static bool buildPolyDetail(const float* in, const int nin,
|
|||||||
float u = (float)k/(float)nn;
|
float u = (float)k/(float)nn;
|
||||||
float* pos = &edge[k*3];
|
float* pos = &edge[k*3];
|
||||||
pos[0] = vj[0] + dx*u;
|
pos[0] = vj[0] + dx*u;
|
||||||
|
pos[1] = vj[1] + dy*u;
|
||||||
pos[2] = vj[2] + dz*u;
|
pos[2] = vj[2] + dz*u;
|
||||||
pos[1] = getHeight(pos[0], pos[2], cs, ics, hp)*chf.ch;
|
pos[1] = getHeight(pos[0],pos[1],pos[2], cs, ics, chf.ch, hp)*chf.ch;
|
||||||
}
|
}
|
||||||
// Simplify samples.
|
// Simplify samples.
|
||||||
int idx[MAX_EDGE] = {0,nn};
|
int idx[MAX_EDGE] = {0,nn};
|
||||||
@ -651,11 +661,12 @@ static bool buildPolyDetail(const float* in, const int nin,
|
|||||||
{
|
{
|
||||||
float pt[3];
|
float pt[3];
|
||||||
pt[0] = x*sampleDist;
|
pt[0] = x*sampleDist;
|
||||||
|
pt[1] = (bmax[1]+bmin[1])*0.5f;
|
||||||
pt[2] = z*sampleDist;
|
pt[2] = z*sampleDist;
|
||||||
// Make sure the samples are not too close to the edges.
|
// Make sure the samples are not too close to the edges.
|
||||||
if (distToPoly(nin,in,pt) > -sampleDist/2) continue;
|
if (distToPoly(nin,in,pt) > -sampleDist/2) continue;
|
||||||
samples.push(x);
|
samples.push(x);
|
||||||
samples.push(getHeight(pt[0], pt[2], cs, ics, hp));
|
samples.push(getHeight(pt[0], pt[1], pt[2], cs, ics, chf.ch, hp));
|
||||||
samples.push(z);
|
samples.push(z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -713,78 +724,69 @@ static void getHeightData(const rcCompactHeightfield& chf,
|
|||||||
// Floodfill the heightfield to get 2D height data,
|
// Floodfill the heightfield to get 2D height data,
|
||||||
// starting at vertex locations as seeds.
|
// starting at vertex locations as seeds.
|
||||||
|
|
||||||
memset(hp.data, 0xff, sizeof(unsigned short)*hp.width*hp.height);
|
memset(hp.data, 0, sizeof(unsigned short)*hp.width*hp.height);
|
||||||
|
|
||||||
stack.resize(0);
|
stack.resize(0);
|
||||||
|
|
||||||
|
static const int offset[9*2] =
|
||||||
|
{
|
||||||
|
0,0, -1,-1, 0,-1, 1,-1, 1,0, 1,1, 0,1, -1,1, -1,0,
|
||||||
|
};
|
||||||
|
|
||||||
// Use poly vertices as seed points for the flood fill.
|
// Use poly vertices as seed points for the flood fill.
|
||||||
for (int j = 0; j < npoly; ++j)
|
for (int j = 0; j < npoly; ++j)
|
||||||
{
|
{
|
||||||
const int ax = (int)verts[poly[j]*3+0];
|
int cx = 0, cz = 0, ci =-1;
|
||||||
const int ay = (int)verts[poly[j]*3+1];
|
|
||||||
const int az = (int)verts[poly[j]*3+2];
|
|
||||||
if (ax < hp.xmin || ax >= hp.xmin+hp.width ||
|
|
||||||
az < hp.ymin || az >= hp.ymin+hp.height)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const rcCompactCell& c = chf.cells[ax+az*chf.width];
|
|
||||||
int dmin = RC_UNSET_HEIGHT;
|
int dmin = RC_UNSET_HEIGHT;
|
||||||
int ai = -1;
|
for (int k = 0; k < 9; ++k)
|
||||||
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
|
||||||
{
|
{
|
||||||
const rcCompactSpan& s = chf.spans[i];
|
const int ax = (int)verts[poly[j]*3+0] + offset[k*2+0];
|
||||||
int d = rcAbs(ay - (int)s.y);
|
const int ay = (int)verts[poly[j]*3+1];
|
||||||
if (d < dmin)
|
const int az = (int)verts[poly[j]*3+2] + offset[k*2+1];
|
||||||
{
|
if (ax < hp.xmin || ax >= hp.xmin+hp.width ||
|
||||||
ai = i;
|
az < hp.ymin || az >= hp.ymin+hp.height)
|
||||||
dmin = d;
|
continue;
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ai != -1)
|
|
||||||
{
|
|
||||||
stack.push(ax);
|
|
||||||
stack.push(az);
|
|
||||||
stack.push(ai);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not no match, try polygon center.
|
const rcCompactCell& c = chf.cells[ax+az*chf.width];
|
||||||
if (stack.size() == 0)
|
|
||||||
{
|
|
||||||
int cx = 0, cy = 0, cz = 0;
|
|
||||||
for (int j = 0; j < npoly; ++j)
|
|
||||||
{
|
|
||||||
cx += (int)verts[poly[j]*3+0];
|
|
||||||
cy += (int)verts[poly[j]*3+1];
|
|
||||||
cz += (int)verts[poly[j]*3+2];
|
|
||||||
}
|
|
||||||
cx /= npoly;
|
|
||||||
cy /= npoly;
|
|
||||||
cz /= npoly;
|
|
||||||
|
|
||||||
if (cx >= hp.xmin && cx < hp.xmin+hp.width &&
|
|
||||||
cz >= hp.ymin && cz < hp.ymin+hp.height)
|
|
||||||
{
|
|
||||||
const rcCompactCell& c = chf.cells[cx+cz*chf.width];
|
|
||||||
int dmin = RC_UNSET_HEIGHT;
|
|
||||||
int ci = -1;
|
|
||||||
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
for (int i = (int)c.index, ni = (int)(c.index+c.count); i < ni; ++i)
|
||||||
{
|
{
|
||||||
const rcCompactSpan& s = chf.spans[i];
|
const rcCompactSpan& s = chf.spans[i];
|
||||||
int d = rcAbs(cy - (int)s.y);
|
int d = rcAbs(ay - (int)s.y);
|
||||||
if (d < dmin)
|
if (d < dmin)
|
||||||
{
|
{
|
||||||
|
cx = ax;
|
||||||
|
cz = az;
|
||||||
ci = i;
|
ci = i;
|
||||||
dmin = d;
|
dmin = d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ci != -1)
|
|
||||||
{
|
|
||||||
stack.push(cx);
|
|
||||||
stack.push(cz);
|
|
||||||
stack.push(ci);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (ci != -1)
|
||||||
|
{
|
||||||
|
stack.push(cx);
|
||||||
|
stack.push(cz);
|
||||||
|
stack.push(ci);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find center of the polygon using flood fill.
|
||||||
|
int pcx = 0, pcy = 0, pcz = 0;
|
||||||
|
for (int j = 0; j < npoly; ++j)
|
||||||
|
{
|
||||||
|
pcx += (int)verts[poly[j]*3+0];
|
||||||
|
pcy += (int)verts[poly[j]*3+1];
|
||||||
|
pcz += (int)verts[poly[j]*3+2];
|
||||||
|
}
|
||||||
|
pcx /= npoly;
|
||||||
|
pcy /= npoly;
|
||||||
|
pcz /= npoly;
|
||||||
|
|
||||||
|
for (int i = 0; i < stack.size(); i += 3)
|
||||||
|
{
|
||||||
|
int cx = stack[i+0];
|
||||||
|
int cy = stack[i+1];
|
||||||
|
int idx = cx-hp.xmin+(cy-hp.ymin)*hp.width;
|
||||||
|
hp.data[idx] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (stack.size() > 0)
|
while (stack.size() > 0)
|
||||||
@ -793,14 +795,70 @@ static void getHeightData(const rcCompactHeightfield& chf,
|
|||||||
int cy = stack.pop();
|
int cy = stack.pop();
|
||||||
int cx = stack.pop();
|
int cx = stack.pop();
|
||||||
|
|
||||||
// Skip already visited locations.
|
// Check if close to center of the polygon.
|
||||||
int idx = cx-hp.xmin+(cy-hp.ymin)*hp.width;
|
if (rcAbs(cx-pcx) <= 1 && rcAbs(cy-pcz) <= 1)
|
||||||
if (hp.data[idx] != RC_UNSET_HEIGHT)
|
{
|
||||||
continue;
|
stack.resize(0);
|
||||||
|
stack.push(cx);
|
||||||
|
stack.push(cy);
|
||||||
|
stack.push(ci);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
const rcCompactSpan& cs = chf.spans[ci];
|
const rcCompactSpan& cs = chf.spans[ci];
|
||||||
hp.data[idx] = cs.y;
|
|
||||||
|
|
||||||
|
for (int dir = 0; dir < 4; ++dir)
|
||||||
|
{
|
||||||
|
if (rcGetCon(cs, dir) == RC_NOT_CONNECTED) continue;
|
||||||
|
|
||||||
|
const int ax = cx + rcGetDirOffsetX(dir);
|
||||||
|
const int ay = cy + rcGetDirOffsetY(dir);
|
||||||
|
|
||||||
|
if (ax < hp.xmin || ax >= (hp.xmin+hp.width) ||
|
||||||
|
ay < hp.ymin || ay >= (hp.ymin+hp.height))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (hp.data[ax-hp.xmin+(ay-hp.ymin)*hp.width] != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(cs, dir);
|
||||||
|
|
||||||
|
int idx = ax-hp.xmin+(ay-hp.ymin)*hp.width;
|
||||||
|
hp.data[idx] = 1;
|
||||||
|
|
||||||
|
stack.push(ax);
|
||||||
|
stack.push(ay);
|
||||||
|
stack.push(ai);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(hp.data, 0xff, sizeof(unsigned short)*hp.width*hp.height);
|
||||||
|
|
||||||
|
// Mark start locations.
|
||||||
|
for (int i = 0; i < stack.size(); i += 3)
|
||||||
|
{
|
||||||
|
int cx = stack[i+0];
|
||||||
|
int cy = stack[i+1];
|
||||||
|
int ci = stack[i+2];
|
||||||
|
int idx = cx-hp.xmin+(cy-hp.ymin)*hp.width;
|
||||||
|
const rcCompactSpan& cs = chf.spans[ci];
|
||||||
|
hp.data[idx] = cs.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (stack.size() > 0)
|
||||||
|
{
|
||||||
|
/* int cx = stack[0];
|
||||||
|
int cy = stack[1];
|
||||||
|
int ci = stack[2];
|
||||||
|
if (stack.size() >= 3)
|
||||||
|
memmove(&stack[0], &stack[3], sizeof(int)*(stack.size()-3));
|
||||||
|
stack.resize(stack.size()-3);*/
|
||||||
|
|
||||||
|
int ci = stack.pop();
|
||||||
|
int cy = stack.pop();
|
||||||
|
int cx = stack.pop();
|
||||||
|
|
||||||
|
const rcCompactSpan& cs = chf.spans[ci];
|
||||||
for (int dir = 0; dir < 4; ++dir)
|
for (int dir = 0; dir < 4; ++dir)
|
||||||
{
|
{
|
||||||
if (rcGetCon(cs, dir) == RC_NOT_CONNECTED) continue;
|
if (rcGetCon(cs, dir) == RC_NOT_CONNECTED) continue;
|
||||||
@ -817,11 +875,16 @@ static void getHeightData(const rcCompactHeightfield& chf,
|
|||||||
|
|
||||||
const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(cs, dir);
|
const int ai = (int)chf.cells[ax+ay*chf.width].index + rcGetCon(cs, dir);
|
||||||
|
|
||||||
|
const rcCompactSpan& as = chf.spans[ai];
|
||||||
|
int idx = ax-hp.xmin+(ay-hp.ymin)*hp.width;
|
||||||
|
hp.data[idx] = as.y;
|
||||||
|
|
||||||
stack.push(ax);
|
stack.push(ax);
|
||||||
stack.push(ay);
|
stack.push(ay);
|
||||||
stack.push(ai);
|
stack.push(ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned char getEdgeFlags(const float* va, const float* vb,
|
static unsigned char getEdgeFlags(const float* va, const float* vb,
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -281,14 +281,14 @@
|
|||||||
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
|
||||||
<array>
|
<array>
|
||||||
<array>
|
<array>
|
||||||
<integer>30</integer>
|
<integer>11</integer>
|
||||||
<integer>21</integer>
|
<integer>3</integer>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</array>
|
</array>
|
||||||
</array>
|
</array>
|
||||||
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
|
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
|
||||||
<string>{{0, 334}, {358, 643}}</string>
|
<string>{{0, 0}, {358, 643}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>PBXTopSmartGroupGIDs</key>
|
<key>PBXTopSmartGroupGIDs</key>
|
||||||
<array/>
|
<array/>
|
||||||
@ -323,7 +323,7 @@
|
|||||||
<key>PBXProjectModuleGUID</key>
|
<key>PBXProjectModuleGUID</key>
|
||||||
<string>6B8632A30F78115100E2684A</string>
|
<string>6B8632A30F78115100E2684A</string>
|
||||||
<key>PBXProjectModuleLabel</key>
|
<key>PBXProjectModuleLabel</key>
|
||||||
<string>Recast.h</string>
|
<string>RecastMeshDetail.cpp</string>
|
||||||
<key>PBXSplitModuleInNavigatorKey</key>
|
<key>PBXSplitModuleInNavigatorKey</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Split0</key>
|
<key>Split0</key>
|
||||||
@ -331,11 +331,11 @@
|
|||||||
<key>PBXProjectModuleGUID</key>
|
<key>PBXProjectModuleGUID</key>
|
||||||
<string>6B8632A40F78115100E2684A</string>
|
<string>6B8632A40F78115100E2684A</string>
|
||||||
<key>PBXProjectModuleLabel</key>
|
<key>PBXProjectModuleLabel</key>
|
||||||
<string>Recast.h</string>
|
<string>RecastMeshDetail.cpp</string>
|
||||||
<key>_historyCapacity</key>
|
<key>_historyCapacity</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>bookmark</key>
|
<key>bookmark</key>
|
||||||
<string>6B324F4E11258C7000EBD2FD</string>
|
<string>6B324FCA11259FFA00EBD2FD</string>
|
||||||
<key>history</key>
|
<key>history</key>
|
||||||
<array>
|
<array>
|
||||||
<string>6B8DE70D10B01BBF00DF20FB</string>
|
<string>6B8DE70D10B01BBF00DF20FB</string>
|
||||||
@ -348,7 +348,6 @@
|
|||||||
<string>6BF7C2441111DAC1002B3F46</string>
|
<string>6BF7C2441111DAC1002B3F46</string>
|
||||||
<string>6BF7C2761112BE4F002B3F46</string>
|
<string>6BF7C2761112BE4F002B3F46</string>
|
||||||
<string>6BF7C2851112C348002B3F46</string>
|
<string>6BF7C2851112C348002B3F46</string>
|
||||||
<string>6BF7C36E1112EB25002B3F46</string>
|
|
||||||
<string>6BF7C394111316AD002B3F46</string>
|
<string>6BF7C394111316AD002B3F46</string>
|
||||||
<string>6BF7C395111316AD002B3F46</string>
|
<string>6BF7C395111316AD002B3F46</string>
|
||||||
<string>6BF7C4641115C514002B3F46</string>
|
<string>6BF7C4641115C514002B3F46</string>
|
||||||
@ -365,11 +364,9 @@
|
|||||||
<string>6B324B50111C1AC800EBD2FD</string>
|
<string>6B324B50111C1AC800EBD2FD</string>
|
||||||
<string>6B324B51111C1AC800EBD2FD</string>
|
<string>6B324B51111C1AC800EBD2FD</string>
|
||||||
<string>6B324B52111C1AC800EBD2FD</string>
|
<string>6B324B52111C1AC800EBD2FD</string>
|
||||||
<string>6B324B71111C1C4F00EBD2FD</string>
|
|
||||||
<string>6B324C45111C5C5A00EBD2FD</string>
|
<string>6B324C45111C5C5A00EBD2FD</string>
|
||||||
<string>6B324C92111C604500EBD2FD</string>
|
<string>6B324C92111C604500EBD2FD</string>
|
||||||
<string>6B324CC3111C6F6300EBD2FD</string>
|
<string>6B324CC3111C6F6300EBD2FD</string>
|
||||||
<string>6B324CFA111C7B0900EBD2FD</string>
|
|
||||||
<string>6B324D0F1121C78000EBD2FD</string>
|
<string>6B324D0F1121C78000EBD2FD</string>
|
||||||
<string>6B324D101121C78000EBD2FD</string>
|
<string>6B324D101121C78000EBD2FD</string>
|
||||||
<string>6B324D511121D61A00EBD2FD</string>
|
<string>6B324D511121D61A00EBD2FD</string>
|
||||||
@ -389,16 +386,23 @@
|
|||||||
<string>6B324F1E1125818400EBD2FD</string>
|
<string>6B324F1E1125818400EBD2FD</string>
|
||||||
<string>6B324F1F1125818400EBD2FD</string>
|
<string>6B324F1F1125818400EBD2FD</string>
|
||||||
<string>6B324F201125818400EBD2FD</string>
|
<string>6B324F201125818400EBD2FD</string>
|
||||||
<string>6B324F211125818400EBD2FD</string>
|
|
||||||
<string>6B324F221125818400EBD2FD</string>
|
|
||||||
<string>6B324F2E112584FB00EBD2FD</string>
|
<string>6B324F2E112584FB00EBD2FD</string>
|
||||||
<string>6B324F3A1125891F00EBD2FD</string>
|
<string>6B324F3A1125891F00EBD2FD</string>
|
||||||
<string>6B324F3B1125891F00EBD2FD</string>
|
<string>6B324F3B1125891F00EBD2FD</string>
|
||||||
<string>6B324F3C1125891F00EBD2FD</string>
|
<string>6B324F3C1125891F00EBD2FD</string>
|
||||||
<string>6B324F3D1125891F00EBD2FD</string>
|
<string>6B324F3D1125891F00EBD2FD</string>
|
||||||
<string>6B324F4911258C7000EBD2FD</string>
|
|
||||||
<string>6B324F4A11258C7000EBD2FD</string>
|
<string>6B324F4A11258C7000EBD2FD</string>
|
||||||
<string>6B324F4B11258C7000EBD2FD</string>
|
<string>6B324F5011258F7F00EBD2FD</string>
|
||||||
|
<string>6B324F541125904E00EBD2FD</string>
|
||||||
|
<string>6B324F551125904E00EBD2FD</string>
|
||||||
|
<string>6B324F9A11259A5800EBD2FD</string>
|
||||||
|
<string>6B324F9B11259A5800EBD2FD</string>
|
||||||
|
<string>6B324FC711259FFA00EBD2FD</string>
|
||||||
|
<string>6B324FC811259FFA00EBD2FD</string>
|
||||||
|
</array>
|
||||||
|
<key>nextStack</key>
|
||||||
|
<array>
|
||||||
|
<string>6B324FC911259FFA00EBD2FD</string>
|
||||||
</array>
|
</array>
|
||||||
<key>prevStack</key>
|
<key>prevStack</key>
|
||||||
<array>
|
<array>
|
||||||
@ -470,17 +474,13 @@
|
|||||||
<string>6B324B57111C1AC800EBD2FD</string>
|
<string>6B324B57111C1AC800EBD2FD</string>
|
||||||
<string>6B324B5C111C1AC800EBD2FD</string>
|
<string>6B324B5C111C1AC800EBD2FD</string>
|
||||||
<string>6B324B5E111C1AC800EBD2FD</string>
|
<string>6B324B5E111C1AC800EBD2FD</string>
|
||||||
<string>6B324B5F111C1AC800EBD2FD</string>
|
|
||||||
<string>6B324B61111C1AC800EBD2FD</string>
|
<string>6B324B61111C1AC800EBD2FD</string>
|
||||||
<string>6B324B62111C1AC800EBD2FD</string>
|
|
||||||
<string>6B324B63111C1AC800EBD2FD</string>
|
<string>6B324B63111C1AC800EBD2FD</string>
|
||||||
<string>6B324B64111C1AC800EBD2FD</string>
|
<string>6B324B64111C1AC800EBD2FD</string>
|
||||||
<string>6B324B65111C1AC800EBD2FD</string>
|
<string>6B324B65111C1AC800EBD2FD</string>
|
||||||
<string>6B324B66111C1AC800EBD2FD</string>
|
<string>6B324B66111C1AC800EBD2FD</string>
|
||||||
<string>6B324B67111C1AC800EBD2FD</string>
|
|
||||||
<string>6B324B6C111C1B7500EBD2FD</string>
|
<string>6B324B6C111C1B7500EBD2FD</string>
|
||||||
<string>6B324B74111C1C4F00EBD2FD</string>
|
<string>6B324B74111C1C4F00EBD2FD</string>
|
||||||
<string>6B324B75111C1C4F00EBD2FD</string>
|
|
||||||
<string>6B324B7D111C1C8200EBD2FD</string>
|
<string>6B324B7D111C1C8200EBD2FD</string>
|
||||||
<string>6B324B82111C1CF000EBD2FD</string>
|
<string>6B324B82111C1CF000EBD2FD</string>
|
||||||
<string>6B324BBD111C4C2B00EBD2FD</string>
|
<string>6B324BBD111C4C2B00EBD2FD</string>
|
||||||
@ -562,7 +562,6 @@
|
|||||||
<string>6B324ED41125770F00EBD2FD</string>
|
<string>6B324ED41125770F00EBD2FD</string>
|
||||||
<string>6B324EE91125799900EBD2FD</string>
|
<string>6B324EE91125799900EBD2FD</string>
|
||||||
<string>6B324EEA1125799900EBD2FD</string>
|
<string>6B324EEA1125799900EBD2FD</string>
|
||||||
<string>6B324F1711257F9A00EBD2FD</string>
|
|
||||||
<string>6B324F251125818400EBD2FD</string>
|
<string>6B324F251125818400EBD2FD</string>
|
||||||
<string>6B324F261125818400EBD2FD</string>
|
<string>6B324F261125818400EBD2FD</string>
|
||||||
<string>6B324F271125818400EBD2FD</string>
|
<string>6B324F271125818400EBD2FD</string>
|
||||||
@ -573,10 +572,13 @@
|
|||||||
<string>6B324F401125891F00EBD2FD</string>
|
<string>6B324F401125891F00EBD2FD</string>
|
||||||
<string>6B324F411125891F00EBD2FD</string>
|
<string>6B324F411125891F00EBD2FD</string>
|
||||||
<string>6B324F421125891F00EBD2FD</string>
|
<string>6B324F421125891F00EBD2FD</string>
|
||||||
<string>6B324F431125891F00EBD2FD</string>
|
|
||||||
<string>6B324F441125891F00EBD2FD</string>
|
<string>6B324F441125891F00EBD2FD</string>
|
||||||
<string>6B324F4C11258C7000EBD2FD</string>
|
|
||||||
<string>6B324F4D11258C7000EBD2FD</string>
|
<string>6B324F4D11258C7000EBD2FD</string>
|
||||||
|
<string>6B324F5211258F7F00EBD2FD</string>
|
||||||
|
<string>6B324F571125904E00EBD2FD</string>
|
||||||
|
<string>6B324F581125904E00EBD2FD</string>
|
||||||
|
<string>6BF7C4661115C514002B3F46</string>
|
||||||
|
<string>6B324B5F111C1AC800EBD2FD</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SplitCount</key>
|
<key>SplitCount</key>
|
||||||
@ -590,18 +592,18 @@
|
|||||||
<key>GeometryConfiguration</key>
|
<key>GeometryConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{0, 0}, {876, 514}}</string>
|
<string>{{0, 0}, {876, 561}}</string>
|
||||||
<key>RubberWindowFrame</key>
|
<key>RubberWindowFrame</key>
|
||||||
<string>11 76 1256 702 0 0 1280 778 </string>
|
<string>11 76 1256 702 0 0 1280 778 </string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Module</key>
|
<key>Module</key>
|
||||||
<string>PBXNavigatorGroup</string>
|
<string>PBXNavigatorGroup</string>
|
||||||
<key>Proportion</key>
|
<key>Proportion</key>
|
||||||
<string>514pt</string>
|
<string>561pt</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Proportion</key>
|
<key>Proportion</key>
|
||||||
<string>142pt</string>
|
<string>95pt</string>
|
||||||
<key>Tabs</key>
|
<key>Tabs</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@ -669,7 +671,7 @@
|
|||||||
<key>GeometryConfiguration</key>
|
<key>GeometryConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{10, 27}, {876, 115}}</string>
|
<string>{{10, 27}, {876, 68}}</string>
|
||||||
<key>RubberWindowFrame</key>
|
<key>RubberWindowFrame</key>
|
||||||
<string>11 76 1256 702 0 0 1280 778 </string>
|
<string>11 76 1256 702 0 0 1280 778 </string>
|
||||||
</dict>
|
</dict>
|
||||||
@ -754,12 +756,12 @@
|
|||||||
<key>GeometryConfiguration</key>
|
<key>GeometryConfiguration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{0, 0}, {1256, 132}}</string>
|
<string>{{0, 0}, {1256, 173}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Module</key>
|
<key>Module</key>
|
||||||
<string>PBXDebugCLIModule</string>
|
<string>PBXDebugCLIModule</string>
|
||||||
<key>Proportion</key>
|
<key>Proportion</key>
|
||||||
<string>132pt</string>
|
<string>173pt</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>ContentConfiguration</key>
|
<key>ContentConfiguration</key>
|
||||||
@ -778,8 +780,8 @@
|
|||||||
<string>yes</string>
|
<string>yes</string>
|
||||||
<key>sizes</key>
|
<key>sizes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>{{0, 0}, {628, 82}}</string>
|
<string>{{0, 0}, {628, 115}}</string>
|
||||||
<string>{{628, 0}, {628, 82}}</string>
|
<string>{{628, 0}, {628, 115}}</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
<key>VerticalSplitView</key>
|
<key>VerticalSplitView</key>
|
||||||
@ -794,8 +796,8 @@
|
|||||||
<string>yes</string>
|
<string>yes</string>
|
||||||
<key>sizes</key>
|
<key>sizes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>{{0, 0}, {1256, 82}}</string>
|
<string>{{0, 0}, {1256, 115}}</string>
|
||||||
<string>{{0, 82}, {1256, 442}}</string>
|
<string>{{0, 115}, {1256, 368}}</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
@ -815,7 +817,7 @@
|
|||||||
<key>DebugSTDIOWindowFrame</key>
|
<key>DebugSTDIOWindowFrame</key>
|
||||||
<string>{{200, 200}, {500, 300}}</string>
|
<string>{{200, 200}, {500, 300}}</string>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{0, 137}, {1256, 524}}</string>
|
<string>{{0, 178}, {1256, 483}}</string>
|
||||||
<key>PBXDebugSessionStackFrameViewKey</key>
|
<key>PBXDebugSessionStackFrameViewKey</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>DebugVariablesTableConfiguration</key>
|
<key>DebugVariablesTableConfiguration</key>
|
||||||
@ -828,13 +830,13 @@
|
|||||||
<real>398</real>
|
<real>398</real>
|
||||||
</array>
|
</array>
|
||||||
<key>Frame</key>
|
<key>Frame</key>
|
||||||
<string>{{628, 0}, {628, 82}}</string>
|
<string>{{628, 0}, {628, 115}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Module</key>
|
<key>Module</key>
|
||||||
<string>PBXDebugSessionModule</string>
|
<string>PBXDebugSessionModule</string>
|
||||||
<key>Proportion</key>
|
<key>Proportion</key>
|
||||||
<string>524pt</string>
|
<string>483pt</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
|
@ -235,19 +235,19 @@
|
|||||||
6B137C7D0F7FCBE800459200 /* Recast */ = {
|
6B137C7D0F7FCBE800459200 /* Recast */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
6B137C820F7FCC1100459200 /* Recast.cpp */,
|
|
||||||
6B137C830F7FCC1100459200 /* RecastContour.cpp */,
|
|
||||||
6B137C850F7FCC1100459200 /* RecastFilter.cpp */,
|
|
||||||
6B137C860F7FCC1100459200 /* RecastLog.cpp */,
|
|
||||||
6B137C870F7FCC1100459200 /* RecastMesh.cpp */,
|
|
||||||
6B137C880F7FCC1100459200 /* RecastRasterization.cpp */,
|
|
||||||
6B137C890F7FCC1100459200 /* RecastRegion.cpp */,
|
|
||||||
6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */,
|
|
||||||
6B137C7E0F7FCBFE00459200 /* Recast.h */,
|
6B137C7E0F7FCBFE00459200 /* Recast.h */,
|
||||||
6B137C800F7FCBFE00459200 /* RecastLog.h */,
|
6B137C800F7FCBFE00459200 /* RecastLog.h */,
|
||||||
6B137C810F7FCBFE00459200 /* RecastTimer.h */,
|
6B137C810F7FCBFE00459200 /* RecastTimer.h */,
|
||||||
6B624169103434880002E346 /* RecastMeshDetail.cpp */,
|
6B137C820F7FCC1100459200 /* Recast.cpp */,
|
||||||
|
6B137C860F7FCC1100459200 /* RecastLog.cpp */,
|
||||||
|
6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */,
|
||||||
|
6B137C880F7FCC1100459200 /* RecastRasterization.cpp */,
|
||||||
|
6B137C850F7FCC1100459200 /* RecastFilter.cpp */,
|
||||||
6BF7C4531115C277002B3F46 /* RecastArea.cpp */,
|
6BF7C4531115C277002B3F46 /* RecastArea.cpp */,
|
||||||
|
6B137C890F7FCC1100459200 /* RecastRegion.cpp */,
|
||||||
|
6B137C830F7FCC1100459200 /* RecastContour.cpp */,
|
||||||
|
6B137C870F7FCC1100459200 /* RecastMesh.cpp */,
|
||||||
|
6B624169103434880002E346 /* RecastMeshDetail.cpp */,
|
||||||
);
|
);
|
||||||
name = Recast;
|
name = Recast;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user