From da8c66bd1a3de5a4d448753b65315bec1ab2d673 Mon Sep 17 00:00:00 2001 From: ikpil Date: Sat, 29 Apr 2023 13:24:26 +0900 Subject: [PATCH] 012 -> xyz --- .../Builder/TileNavMeshBuilder.cs | 8 +- src/DotRecast.Recast.Demo/Draw/DebugDraw.cs | 60 +++--- src/DotRecast.Recast.Demo/Draw/GLU.cs | 8 +- .../Draw/NavMeshRenderer.cs | 34 ++-- .../Draw/OpenGLVertex.cs | 6 +- .../Draw/RecastDebugDraw.cs | 190 +++++++++--------- .../Geom/DemoInputGeomProvider.cs | 16 +- .../Geom/DemoOffMeshConnection.cs | 14 +- src/DotRecast.Recast.Demo/RecastDemo.cs | 82 ++++---- .../Tools/ConvexVolumeTool.cs | 10 +- .../Tools/CrowdProfilingTool.cs | 14 +- src/DotRecast.Recast.Demo/Tools/CrowdTool.cs | 102 +++++----- .../Tools/DynamicUpdateTool.cs | 96 ++++----- .../Tools/Gizmos/BoxGizmo.cs | 22 +- .../Tools/Gizmos/CapsuleGizmo.cs | 34 ++-- .../Tools/Gizmos/CylinderGizmo.cs | 34 ++-- .../Tools/Gizmos/GizmoHelper.cs | 8 +- .../Tools/Gizmos/SphereGizmo.cs | 4 +- .../Tools/JumpLinkBuilderTool.cs | 42 ++-- .../Tools/OffMeshConnectionTool.cs | 2 +- .../Tools/TestNavmeshTool.cs | 166 +++++++-------- .../UI/RcSettingsView.cs | 2 +- 22 files changed, 477 insertions(+), 477 deletions(-) diff --git a/src/DotRecast.Recast.Demo/Builder/TileNavMeshBuilder.cs b/src/DotRecast.Recast.Demo/Builder/TileNavMeshBuilder.cs index e60fcd4..cec54b5 100644 --- a/src/DotRecast.Recast.Demo/Builder/TileNavMeshBuilder.cs +++ b/src/DotRecast.Recast.Demo/Builder/TileNavMeshBuilder.cs @@ -68,9 +68,9 @@ public class TileNavMeshBuilder : AbstractNavMeshBuilder int vertsPerPoly) { NavMeshParams navMeshParams = new NavMeshParams(); - navMeshParams.orig[0] = geom.getMeshBoundsMin()[0]; - navMeshParams.orig[1] = geom.getMeshBoundsMin()[1]; - navMeshParams.orig[2] = geom.getMeshBoundsMin()[2]; + navMeshParams.orig.x = geom.getMeshBoundsMin().x; + navMeshParams.orig.y = geom.getMeshBoundsMin().y; + navMeshParams.orig.z = geom.getMeshBoundsMin().z; navMeshParams.tileWidth = tileSize * cellSize; navMeshParams.tileHeight = tileSize * cellSize; @@ -134,4 +134,4 @@ public class TileNavMeshBuilder : AbstractNavMeshBuilder return meshData; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Draw/DebugDraw.cs b/src/DotRecast.Recast.Demo/Draw/DebugDraw.cs index b28765f..1714a44 100644 --- a/src/DotRecast.Recast.Demo/Draw/DebugDraw.cs +++ b/src/DotRecast.Recast.Demo/Draw/DebugDraw.cs @@ -266,11 +266,11 @@ public class DebugDraw float u = PAD + i * ARC_PTS_SCALE; Vector3f pt = new Vector3f(); evalArc(x0, y0, z0, dx, dy, dz, len * h, u, ref pt); - vertex(prev[0], prev[1], prev[2], col); - vertex(pt[0], pt[1], pt[2], col); - prev[0] = pt[0]; - prev[1] = pt[1]; - prev[2] = pt[2]; + vertex(prev.x, prev.y, prev.z, col); + vertex(pt.x, pt.y, pt.z, col); + prev.x = pt.x; + prev.y = pt.y; + prev.z = pt.z; } // End arrows @@ -295,9 +295,9 @@ public class DebugDraw private void evalArc(float x0, float y0, float z0, float dx, float dy, float dz, float h, float u, ref Vector3f res) { - res[0] = x0 + dx * u; - res[1] = y0 + dy * u + h * (1 - (u * 2 - 1) * (u * 2 - 1)); - res[2] = z0 + dz * u; + res.x = x0 + dx * u; + res.y = y0 + dy * u + h * (1 - (u * 2 - 1) * (u * 2 - 1)); + res.z = z0 + dz * u; } public void debugDrawCross(float x, float y, float z, float size, int col, float lineWidth) @@ -410,41 +410,41 @@ public class DebugDraw vnormalize(ref ay); vertex(p, col); - // vertex(p[0]+az[0]*s+ay[0]*s/2, p[1]+az[1]*s+ay[1]*s/2, p[2]+az[2]*s+ay[2]*s/2, col); - vertex(p[0] + az[0] * s + ax[0] * s / 3, p[1] + az[1] * s + ax[1] * s / 3, p[2] + az[2] * s + ax[2] * s / 3, col); + // vertex(p.x+az.x*s+ay.x*s/2, p.y+az.y*s+ay.y*s/2, p.z+az.z*s+ay.z*s/2, col); + vertex(p.x + az.x * s + ax.x * s / 3, p.y + az.y * s + ax.y * s / 3, p.z + az.z * s + ax.z * s / 3, col); vertex(p, col); - // vertex(p[0]+az[0]*s-ay[0]*s/2, p[1]+az[1]*s-ay[1]*s/2, p[2]+az[2]*s-ay[2]*s/2, col); - vertex(p[0] + az[0] * s - ax[0] * s / 3, p[1] + az[1] * s - ax[1] * s / 3, p[2] + az[2] * s - ax[2] * s / 3, col); + // vertex(p.x+az.x*s-ay.x*s/2, p.y+az.y*s-ay.y*s/2, p.z+az.z*s-ay.z*s/2, col); + vertex(p.x + az.x * s - ax.x * s / 3, p.y + az.y * s - ax.y * s / 3, p.z + az.z * s - ax.z * s / 3, col); } public void vcross(ref Vector3f dest, Vector3f v1, Vector3f v2) { - dest[0] = v1[1] * v2[2] - v1[2] * v2[1]; - dest[1] = v1[2] * v2[0] - v1[0] * v2[2]; - dest[2] = v1[0] * v2[1] - v1[1] * v2[0]; + dest.x = v1.y * v2.z - v1.z * v2.y; + dest.y = v1.z * v2.x - v1.x * v2.z; + dest.z = v1.x * v2.y - v1.y * v2.x; } public void vnormalize(ref Vector3f v) { - float d = (float)(1.0f / Math.Sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2])); - v[0] *= d; - v[1] *= d; - v[2] *= d; + float d = (float)(1.0f / Math.Sqrt(v.x * v.x + v.y * v.y + v.z * v.z)); + v.x *= d; + v.y *= d; + v.z *= d; } public void vsub(ref Vector3f dest, Vector3f v1, Vector3f v2) { - dest[0] = v1[0] - v2[0]; - dest[1] = v1[1] - v2[1]; - dest[2] = v1[2] - v2[2]; + dest.x = v1.x - v2.x; + dest.y = v1.y - v2.y; + dest.z = v1.z - v2.z; } public float vdistSqr(Vector3f v1, Vector3f v2) { - float x = v1[0] - v2[0]; - float y = v1[1] - v2[1]; - float z = v1[2] - v2[2]; + float x = v1.x - v2.x; + float y = v1.y - v2.y; + float z = v1.z - v2.z; return x * x + y * y + z * z; } @@ -595,9 +595,9 @@ public class DebugDraw float[] r = GLU.mul(rx, ry); float[] t = new float[16]; t[0] = t[5] = t[10] = t[15] = 1; - t[12] = -cameraPos[0]; - t[13] = -cameraPos[1]; - t[14] = -cameraPos[2]; + t[12] = -cameraPos.x; + t[13] = -cameraPos.y; + t[14] = -cameraPos.z; _viewMatrix = GLU.mul(r, t); getOpenGlDraw().viewMatrix(_viewMatrix); updateFrustum(); @@ -701,6 +701,6 @@ public class DebugDraw public bool frustumTest(Vector3f bmin, Vector3f bmax) { - return frustumTest(new float[] { bmin[0], bmin[1], bmin[2], bmax[0], bmax[1], bmax[2] }); + return frustumTest(new float[] { bmin.x, bmin.y, bmin.z, bmax.x, bmax.y, bmax.z }); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Draw/GLU.cs b/src/DotRecast.Recast.Demo/Draw/GLU.cs index 66f28c6..7867f95 100644 --- a/src/DotRecast.Recast.Demo/Draw/GLU.cs +++ b/src/DotRecast.Recast.Demo/Draw/GLU.cs @@ -88,9 +88,9 @@ public class GLU if (@out[3] == 0.0) return 0; @out[3] = 1.0f / @out[3]; - objectCoordinate[0] = @out[0] * @out[3]; - objectCoordinate[1] = @out[1] * @out[3]; - objectCoordinate[2] = @out[2] * @out[3]; + objectCoordinate.x = @out[0] * @out[3]; + objectCoordinate.y = @out[1] * @out[3]; + objectCoordinate.z = @out[2] * @out[3]; return 1; } @@ -447,4 +447,4 @@ public class GLU return dest; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Draw/NavMeshRenderer.cs b/src/DotRecast.Recast.Demo/Draw/NavMeshRenderer.cs index 8643e9d..5136b8b 100644 --- a/src/DotRecast.Recast.Demo/Draw/NavMeshRenderer.cs +++ b/src/DotRecast.Recast.Demo/Draw/NavMeshRenderer.cs @@ -202,10 +202,10 @@ public class NavMeshRenderer // Draw bounds Vector3f bmin = geom.getMeshBoundsMin(); Vector3f bmax = geom.getMeshBoundsMax(); - debugDraw.debugDrawBoxWire(bmin[0], bmin[1], bmin[2], bmax[0], bmax[1], bmax[2], + debugDraw.debugDrawBoxWire(bmin.x, bmin.y, bmin.z, bmax.x, bmax.y, bmax.z, DebugDraw.duRGBA(255, 255, 255, 128), 1.0f); debugDraw.begin(DebugDrawPrimitives.POINTS, 5.0f); - debugDraw.vertex(bmin[0], bmin[1], bmin[2], DebugDraw.duRGBA(255, 255, 255, 128)); + debugDraw.vertex(bmin.x, bmin.y, bmin.z, DebugDraw.duRGBA(255, 255, 255, 128)); debugDraw.end(); } @@ -254,16 +254,16 @@ public class NavMeshRenderer var vb = Vector3f.Of(vol.verts[j], vol.verts[j + 1], vol.verts[j + 2]); debugDraw.vertex(vol.verts[0], vol.hmax, vol.verts[2], col); - debugDraw.vertex(vb[0], vol.hmax, vb[2], col); - debugDraw.vertex(va[0], vol.hmax, va[2], col); + debugDraw.vertex(vb.x, vol.hmax, vb.z, col); + debugDraw.vertex(va.x, vol.hmax, va.z, col); - debugDraw.vertex(va[0], vol.hmin, va[2], DebugDraw.duDarkenCol(col)); - debugDraw.vertex(va[0], vol.hmax, va[2], col); - debugDraw.vertex(vb[0], vol.hmax, vb[2], col); + debugDraw.vertex(va.x, vol.hmin, va.z, DebugDraw.duDarkenCol(col)); + debugDraw.vertex(va.x, vol.hmax, va.z, col); + debugDraw.vertex(vb.x, vol.hmax, vb.z, col); - debugDraw.vertex(va[0], vol.hmin, va[2], DebugDraw.duDarkenCol(col)); - debugDraw.vertex(vb[0], vol.hmax, vb[2], col); - debugDraw.vertex(vb[0], vol.hmin, vb[2], DebugDraw.duDarkenCol(col)); + debugDraw.vertex(va.x, vol.hmin, va.z, DebugDraw.duDarkenCol(col)); + debugDraw.vertex(vb.x, vol.hmax, vb.z, col); + debugDraw.vertex(vb.x, vol.hmin, vb.z, DebugDraw.duDarkenCol(col)); } } @@ -277,12 +277,12 @@ public class NavMeshRenderer { var va = Vector3f.Of(vol.verts[k], vol.verts[k + 1], vol.verts[k + 2]); var vb = Vector3f.Of(vol.verts[j], vol.verts[j + 1], vol.verts[j + 2]); - debugDraw.vertex(va[0], vol.hmin, va[2], DebugDraw.duDarkenCol(col)); - debugDraw.vertex(vb[0], vol.hmin, vb[2], DebugDraw.duDarkenCol(col)); - debugDraw.vertex(va[0], vol.hmax, va[2], col); - debugDraw.vertex(vb[0], vol.hmax, vb[2], col); - debugDraw.vertex(va[0], vol.hmin, va[2], DebugDraw.duDarkenCol(col)); - debugDraw.vertex(va[0], vol.hmax, va[2], col); + debugDraw.vertex(va.x, vol.hmin, va.z, DebugDraw.duDarkenCol(col)); + debugDraw.vertex(vb.x, vol.hmin, vb.z, DebugDraw.duDarkenCol(col)); + debugDraw.vertex(va.x, vol.hmax, va.z, col); + debugDraw.vertex(vb.x, vol.hmax, vb.z, col); + debugDraw.vertex(va.x, vol.hmin, va.z, DebugDraw.duDarkenCol(col)); + debugDraw.vertex(va.x, vol.hmax, va.z, col); } } @@ -305,4 +305,4 @@ public class NavMeshRenderer debugDraw.depthMask(true); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Draw/OpenGLVertex.cs b/src/DotRecast.Recast.Demo/Draw/OpenGLVertex.cs index b00f9c5..8b2c887 100644 --- a/src/DotRecast.Recast.Demo/Draw/OpenGLVertex.cs +++ b/src/DotRecast.Recast.Demo/Draw/OpenGLVertex.cs @@ -16,7 +16,7 @@ public struct OpenGLVertex [FieldOffset(20)] private readonly int color; public OpenGLVertex(Vector3f pos, Vector2f uv, int color) : - this(pos[0], pos[1], pos[2], uv.x, uv.y, color) + this(pos.x, pos.y, pos.z, uv.x, uv.y, color) { } @@ -26,7 +26,7 @@ public struct OpenGLVertex } public OpenGLVertex(Vector3f pos, int color) : - this(pos[0], pos[1], pos[2], 0f, 0f, color) + this(pos.x, pos.y, pos.z, 0f, 0f, color) { } @@ -62,4 +62,4 @@ public struct OpenGLVertex writer.Write(v); writer.Write(color); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs b/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs index 016fef8..3bcdab7 100644 --- a/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs +++ b/src/DotRecast.Recast.Demo/Draw/RecastDebugDraw.cs @@ -57,8 +57,8 @@ public class RecastDebugDraw : DebugDraw Vector3f norm = Vector3f.Of(normals[i], normals[i + 1], normals[i + 2]); int color; - char a = (char)(220 * (2 + norm[0] + norm[1]) / 4); - if (norm[1] < walkableThr) + char a = (char)(220 * (2 + norm.x + norm.y) / 4); + if (norm.y < walkableThr) { color = duLerpCol(duRGBA(a, a, a, 255), unwalkable, 64); } @@ -72,12 +72,12 @@ public class RecastDebugDraw : DebugDraw Vector3f vc = Vector3f.Of(verts[tris[i + 2] * 3], verts[tris[i + 2] * 3 + 1], verts[tris[i + 2] * 3 + 2]); int ax = 0, ay = 0; - if (Math.Abs(norm[1]) > Math.Abs(norm[ax])) + if (Math.Abs(norm.y) > Math.Abs(norm[ax])) { ax = 1; } - if (Math.Abs(norm[2]) > Math.Abs(norm[ax])) + if (Math.Abs(norm.z) > Math.Abs(norm[ax])) { ax = 2; } @@ -215,12 +215,12 @@ public class RecastDebugDraw : DebugDraw } // End points and their on-mesh locations. - vertex(va[0], va[1], va[2], col); + vertex(va.x, va.y, va.z, col); vertex(con.pos[0], con.pos[1], con.pos[2], col); col2 = startSet ? col : duRGBA(220, 32, 16, 196); appendCircle(con.pos[0], con.pos[1] + 0.1f, con.pos[2], con.rad, col2); - vertex(vb[0], vb[1], vb[2], col); + vertex(vb.x, vb.y, vb.z, col); vertex(con.pos[3], con.pos[4], con.pos[5], col); col2 = endSet ? col : duRGBA(220, 32, 16, 196); appendCircle(con.pos[3], con.pos[4] + 0.1f, con.pos[5], con.rad, col2); @@ -426,10 +426,10 @@ public class RecastDebugDraw : DebugDraw static float distancePtLine2d(Vector3f pt, Vector3f p, Vector3f q) { - float pqx = q[0] - p[0]; - float pqz = q[2] - p[2]; - float dx = pt[0] - p[0]; - float dz = pt[2] - p[2]; + float pqx = q.x - p.x; + float pqz = q.z - p.z; + float dx = pt.x - p.x; + float dz = pt.z - p.z; float d = pqx * pqx + pqz * pqz; float t = pqx * dx + pqz * dz; if (d != 0) @@ -437,8 +437,8 @@ public class RecastDebugDraw : DebugDraw t /= d; } - dx = p[0] + t * pqx - pt[0]; - dz = p[2] + t * pqz - pt[2]; + dx = p.x + t * pqx - pt.x; + dz = p.z + t * pqz - pt.z; return dx * dx + dz * dz; } @@ -467,9 +467,9 @@ public class RecastDebugDraw : DebugDraw continue; } - appendBoxWire(tile.data.header.bmin[0] + n.bmin[0] * cs, tile.data.header.bmin[1] + n.bmin[1] * cs, - tile.data.header.bmin[2] + n.bmin[2] * cs, tile.data.header.bmin[0] + n.bmax[0] * cs, - tile.data.header.bmin[1] + n.bmax[1] * cs, tile.data.header.bmin[2] + n.bmax[2] * cs, + appendBoxWire(tile.data.header.bmin.x + n.bmin[0] * cs, tile.data.header.bmin.y + n.bmin[1] * cs, + tile.data.header.bmin.z + n.bmin[2] * cs, tile.data.header.bmin.x + n.bmax[0] * cs, + tile.data.header.bmin.y + n.bmax[1] * cs, tile.data.header.bmin.z + n.bmax[2] * cs, duRGBA(255, 255, 255, 128)); } @@ -487,8 +487,8 @@ public class RecastDebugDraw : DebugDraw { for (int x = 0; x < chf.width; ++x) { - float fx = chf.bmin[0] + x * cs; - float fz = chf.bmin[2] + y * cs; + float fx = chf.bmin.x + x * cs; + float fz = chf.bmin.z + y * cs; CompactCell c = chf.cells[x + y * chf.width]; for (int i = c.index, ni = c.index + c.count; i < ni; ++i) @@ -510,7 +510,7 @@ public class RecastDebugDraw : DebugDraw color = areaToCol(area); } - float fy = chf.bmin[1] + (s.y + 1) * ch; + float fy = chf.bmin.y + (s.y + 1) * ch; vertex(fx, fy, fz, color); vertex(fx, fy, fz + cs, color); vertex(fx + cs, fy, fz + cs, color); @@ -550,7 +550,7 @@ public class RecastDebugDraw : DebugDraw if (cont2 != null) { Vector3f pos2 = getContourCenter(cont2, orig, cs, ch); - appendArc(pos[0], pos[1], pos[2], pos2[0], pos2[1], pos2[2], 0.25f, 0.6f, 0.6f, color); + appendArc(pos.x, pos.y, pos.z, pos2.x, pos2.y, pos2.z, 0.25f, 0.6f, 0.6f, color); } } } @@ -575,9 +575,9 @@ public class RecastDebugDraw : DebugDraw private Vector3f getContourCenter(Contour cont, Vector3f orig, float cs, float ch) { Vector3f center = new Vector3f(); - center[0] = 0; - center[1] = 0; - center[2] = 0; + center.x = 0; + center.y = 0; + center.z = 0; if (cont.nverts == 0) { return center; @@ -586,18 +586,18 @@ public class RecastDebugDraw : DebugDraw for (int i = 0; i < cont.nverts; ++i) { int v = i * 4; - center[0] += cont.verts[v + 0]; - center[1] += cont.verts[v + 1]; - center[2] += cont.verts[v + 2]; + center.x += cont.verts[v + 0]; + center.y += cont.verts[v + 1]; + center.z += cont.verts[v + 2]; } 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]; + center.x *= s * cs; + center.y *= s * ch; + center.z *= s * cs; + center.x += orig.x; + center.y += orig.y + 4 * ch; + center.z += orig.z; return center; } @@ -634,9 +634,9 @@ public class RecastDebugDraw : DebugDraw int v0 = c.rverts[j * 4]; int v1 = c.rverts[j * 4 + 1]; int v2 = c.rverts[j * 4 + 2]; - float fx = orig[0] + v0 * cs; - float fy = orig[1] + (v1 + 1 + (i & 1)) * ch; - float fz = orig[2] + v2 * cs; + float fx = orig.x + v0 * cs; + float fy = orig.y + (v1 + 1 + (i & 1)) * ch; + float fz = orig.z + v2 * cs; vertex(fx, fy, fz, color); if (j > 0) { @@ -649,9 +649,9 @@ public class RecastDebugDraw : DebugDraw int v0 = c.rverts[0]; int v1 = c.rverts[1]; int v2 = c.rverts[2]; - float fx = orig[0] + v0 * cs; - float fy = orig[1] + (v1 + 1 + (i & 1)) * ch; - float fz = orig[2] + v2 * cs; + float fx = orig.x + v0 * cs; + float fy = orig.y + (v1 + 1 + (i & 1)) * ch; + float fz = orig.z + v2 * cs; vertex(fx, fy, fz, color); } } @@ -679,9 +679,9 @@ public class RecastDebugDraw : DebugDraw off = ch * 2; } - float fx = orig[0] + v0 * cs; - float fy = orig[1] + (v1 + 1 + (i & 1)) * ch + off; - float fz = orig[2] + v2 * cs; + float fx = orig.x + v0 * cs; + float fy = orig.y + (v1 + 1 + (i & 1)) * ch + off; + float fz = orig.z + v2 * cs; vertex(fx, fy, fz, colv); } } @@ -722,14 +722,14 @@ public class RecastDebugDraw : DebugDraw int vb2 = c.verts[j * 4 + 2]; int col = (va3 & RecastConstants.RC_AREA_BORDER) != 0 ? bcolor : color; - float fx = orig[0] + va0 * cs; - float fy = orig[1] + (va1 + 1 + (i & 1)) * ch; - float fz = orig[2] + va2 * cs; + float fx = orig.x + va0 * cs; + float fy = orig.y + (va1 + 1 + (i & 1)) * ch; + float fz = orig.z + va2 * cs; vertex(fx, fy, fz, col); - fx = orig[0] + vb0 * cs; - fy = orig[1] + (vb1 + 1 + (i & 1)) * ch; - fz = orig[2] + vb2 * cs; + fx = orig.x + vb0 * cs; + fy = orig.y + (vb1 + 1 + (i & 1)) * ch; + fz = orig.z + vb2 * cs; vertex(fx, fy, fz, col); } } @@ -757,9 +757,9 @@ public class RecastDebugDraw : DebugDraw off = ch * 2; } - float fx = orig[0] + v0 * cs; - float fy = orig[1] + (v1 + 1 + (i & 1)) * ch + off; - float fz = orig[2] + v2 * cs; + float fx = orig.x + v0 * cs; + float fy = orig.y + (v1 + 1 + (i & 1)) * ch + off; + float fz = orig.z + v2 * cs; vertex(fx, fy, fz, colv); } } @@ -790,12 +790,12 @@ public class RecastDebugDraw : DebugDraw { for (int x = 0; x < w; ++x) { - float fx = orig[0] + x * cs; - float fz = orig[2] + y * cs; + float fx = orig.x + x * cs; + float fz = orig.z + y * cs; Span s = hf.spans[x + y * w]; while (s != null) { - appendBox(fx, orig[1] + s.smin * ch, fz, fx + cs, orig[1] + s.smax * ch, fz + cs, fcol); + appendBox(fx, orig.y + s.smin * ch, fz, fx + cs, orig.y + s.smax * ch, fz + cs, fcol); s = s.next; } } @@ -822,8 +822,8 @@ public class RecastDebugDraw : DebugDraw { for (int x = 0; x < w; ++x) { - float fx = orig[0] + x * cs; - float fz = orig[2] + y * cs; + float fx = orig.x + x * cs; + float fz = orig.z + y * cs; Span s = hf.spans[x + y * w]; while (s != null) { @@ -840,7 +840,7 @@ public class RecastDebugDraw : DebugDraw fcol[0] = duMultCol(areaToCol(s.area), 200); } - appendBox(fx, orig[1] + s.smin * ch, fz, fx + cs, orig[1] + s.smax * ch, fz + cs, fcol); + appendBox(fx, orig.y + s.smin * ch, fz, fx + cs, orig.y + s.smax * ch, fz + cs, fcol); s = s.next; } } @@ -860,14 +860,14 @@ public class RecastDebugDraw : DebugDraw { for (int x = 0; x < chf.width; ++x) { - float fx = chf.bmin[0] + x * cs; - float fz = chf.bmin[2] + y * cs; + float fx = chf.bmin.x + x * cs; + float fz = chf.bmin.z + y * cs; CompactCell c = chf.cells[x + y * chf.width]; for (int i = c.index, ni = c.index + c.count; i < ni; ++i) { CompactSpan s = chf.spans[i]; - float fy = chf.bmin[1] + (s.y) * ch; + float fy = chf.bmin.y + (s.y) * ch; int color; if (s.reg != 0) { @@ -913,14 +913,14 @@ public class RecastDebugDraw : DebugDraw { for (int x = 0; x < chf.width; ++x) { - float fx = chf.bmin[0] + x * cs; - float fz = chf.bmin[2] + y * cs; + float fx = chf.bmin.x + x * cs; + float fz = chf.bmin.z + y * cs; CompactCell c = chf.cells[x + y * chf.width]; for (int i = c.index, ni = c.index + c.count; i < ni; ++i) { CompactSpan s = chf.spans[i]; - float fy = chf.bmin[1] + (s.y + 1) * ch; + float fy = chf.bmin.y + (s.y + 1) * ch; char cd = (char)(chf.dist[i] * dscale); int color = duRGBA(cd, cd, cd, 255); vertex(fx, fy, fz, color); @@ -978,9 +978,9 @@ public class RecastDebugDraw : DebugDraw int v0 = mesh.verts[vi[k] * 3]; int v1 = mesh.verts[vi[k] * 3 + 1]; int v2 = mesh.verts[vi[k] * 3 + 2]; - float x = orig[0] + v0 * cs; - float y = orig[1] + (v1 + 1) * ch; - float z = orig[2] + v2 * cs; + float x = orig.x + v0 * cs; + float y = orig.y + (v1 + 1) * ch; + float z = orig.z + v2 * cs; vertex(x, y, z, color); } } @@ -1012,9 +1012,9 @@ public class RecastDebugDraw : DebugDraw for (int k = 0; k < 2; ++k) { int v = vi[k] * 3; - float x = orig[0] + mesh.verts[v] * cs; - float y = orig[1] + (mesh.verts[v + 1] + 1) * ch + 0.1f; - float z = orig[2] + mesh.verts[v + 2] * cs; + float x = orig.x + mesh.verts[v] * cs; + float y = orig.y + (mesh.verts[v + 1] + 1) * ch + 0.1f; + float z = orig.z + mesh.verts[v + 2] * cs; vertex(x, y, z, coln); } } @@ -1052,9 +1052,9 @@ public class RecastDebugDraw : DebugDraw for (int k = 0; k < 2; ++k) { int v = vi[k] * 3; - float x = orig[0] + mesh.verts[v] * cs; - float y = orig[1] + (mesh.verts[v + 1] + 1) * ch + 0.1f; - float z = orig[2] + mesh.verts[v + 2] * cs; + float x = orig.x + mesh.verts[v] * cs; + float y = orig.y + (mesh.verts[v + 1] + 1) * ch + 0.1f; + float z = orig.z + mesh.verts[v + 2] * cs; vertex(x, y, z, col); } } @@ -1067,9 +1067,9 @@ public class RecastDebugDraw : DebugDraw for (int i = 0; i < mesh.nverts; ++i) { int v = i * 3; - float x = orig[0] + mesh.verts[v] * cs; - float y = orig[1] + (mesh.verts[v + 1] + 1) * ch + 0.1f; - float z = orig[2] + mesh.verts[v + 2] * cs; + float x = orig.x + mesh.verts[v] * cs; + float y = orig.y + (mesh.verts[v + 1] + 1) * ch + 0.1f; + float z = orig.z + mesh.verts[v + 2] * cs; vertex(x, y, z, colv); } @@ -1213,7 +1213,7 @@ public class RecastDebugDraw : DebugDraw continue; } - vertex(node.pos[0], node.pos[1] + off, node.pos[2], duRGBA(255, 192, 0, 255)); + vertex(node.pos.x, node.pos.y + off, node.pos.z, duRGBA(255, 192, 0, 255)); } } @@ -1240,8 +1240,8 @@ public class RecastDebugDraw : DebugDraw continue; } - vertex(node.pos[0], node.pos[1] + off, node.pos[2], duRGBA(255, 192, 0, 128)); - vertex(parent.pos[0], parent.pos[1] + off, parent.pos[2], duRGBA(255, 192, 0, 128)); + vertex(node.pos.x, node.pos.y + off, node.pos.z, duRGBA(255, 192, 0, 128)); + vertex(parent.pos.x, parent.pos.y + off, parent.pos.z, duRGBA(255, 192, 0, 128)); } } @@ -1368,37 +1368,37 @@ public class RecastDebugDraw : DebugDraw { int col = side == 0 ? duRGBA(128, 0, 0, 128) : duRGBA(128, 0, 128, 128); - float x = va[0] + ((side == 0) ? -padx : padx); + float x = va.x + ((side == 0) ? -padx : padx); - vertex(x, va[1] - pady, va[2], col); - vertex(x, va[1] + pady, va[2], col); + vertex(x, va.y - pady, va.z, col); + vertex(x, va.y + pady, va.z, col); - vertex(x, va[1] + pady, va[2], col); - vertex(x, vb[1] + pady, vb[2], col); + vertex(x, va.y + pady, va.z, col); + vertex(x, vb.y + pady, vb.z, col); - vertex(x, vb[1] + pady, vb[2], col); - vertex(x, vb[1] - pady, vb[2], col); + vertex(x, vb.y + pady, vb.z, col); + vertex(x, vb.y - pady, vb.z, col); - vertex(x, vb[1] - pady, vb[2], col); - vertex(x, va[1] - pady, va[2], col); + vertex(x, vb.y - pady, vb.z, col); + vertex(x, va.y - pady, va.z, col); } else if (side == 2 || side == 6) { int col = side == 2 ? duRGBA(0, 128, 0, 128) : duRGBA(0, 128, 128, 128); - float z = va[2] + ((side == 2) ? -padx : padx); + float z = va.z + ((side == 2) ? -padx : padx); - vertex(va[0], va[1] - pady, z, col); - vertex(va[0], va[1] + pady, z, col); + vertex(va.x, va.y - pady, z, col); + vertex(va.x, va.y + pady, z, col); - vertex(va[0], va[1] + pady, z, col); - vertex(vb[0], vb[1] + pady, z, col); + vertex(va.x, va.y + pady, z, col); + vertex(vb.x, vb.y + pady, z, col); - vertex(vb[0], vb[1] + pady, z, col); - vertex(vb[0], vb[1] - pady, z, col); + vertex(vb.x, vb.y + pady, z, col); + vertex(vb.x, vb.y - pady, z, col); - vertex(vb[0], vb[1] - pady, z, col); - vertex(va[0], va[1] - pady, z, col); + vertex(vb.x, vb.y - pady, z, col); + vertex(va.x, va.y - pady, z, col); } } } @@ -1406,4 +1406,4 @@ public class RecastDebugDraw : DebugDraw end(); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Geom/DemoInputGeomProvider.cs b/src/DotRecast.Recast.Demo/Geom/DemoInputGeomProvider.cs index 4472491..b2989de 100644 --- a/src/DotRecast.Recast.Demo/Geom/DemoInputGeomProvider.cs +++ b/src/DotRecast.Recast.Demo/Geom/DemoInputGeomProvider.cs @@ -109,9 +109,9 @@ public class DemoInputGeomProvider : InputGeomProvider e1[j] = vertices[v2 + j] - vertices[v0 + j]; } - normals[i] = e0[1] * e1[2] - e0[2] * e1[1]; - normals[i + 1] = e0[2] * e1[0] - e0[0] * e1[2]; - normals[i + 2] = e0[0] * e1[1] - e0[1] * e1[0]; + normals[i] = e0.y * e1.z - e0.z * e1.y; + normals[i + 1] = e0.z * e1.x - e0.x * e1.z; + normals[i + 2] = e0.x * e1.y - e0.y * e1.x; float d = (float)Math.Sqrt(normals[i] * normals[i] + normals[i + 1] * normals[i + 1] + normals[i + 2] * normals[i + 2]); if (d > 0) { @@ -161,10 +161,10 @@ public class DemoInputGeomProvider : InputGeomProvider float btmin = btminmax[0]; float btmax = btminmax[1]; float[] p = new float[2], q = new float[2]; - p[0] = src[0] + (dst[0] - src[0]) * btmin; - p[1] = src[2] + (dst[2] - src[2]) * btmin; - q[0] = src[0] + (dst[0] - src[0]) * btmax; - q[1] = src[2] + (dst[2] - src[2]) * btmax; + p[0] = src.x + (dst.x - src.x) * btmin; + p[1] = src.z + (dst.z - src.z) * btmin; + q[0] = src.x + (dst.x - src.x) * btmax; + q[1] = src.z + (dst.z - src.z) * btmax; List chunks = _mesh.chunkyTriMesh.getChunksOverlappingSegment(p, q); if (0 == chunks.Count) @@ -225,4 +225,4 @@ public class DemoInputGeomProvider : InputGeomProvider { _convexVolumes.Clear(); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Geom/DemoOffMeshConnection.cs b/src/DotRecast.Recast.Demo/Geom/DemoOffMeshConnection.cs index 0ea1ecf..8ad63d5 100644 --- a/src/DotRecast.Recast.Demo/Geom/DemoOffMeshConnection.cs +++ b/src/DotRecast.Recast.Demo/Geom/DemoOffMeshConnection.cs @@ -33,15 +33,15 @@ public class DemoOffMeshConnection public DemoOffMeshConnection(Vector3f start, Vector3f end, float radius, bool bidir, int area, int flags) { verts = new float[6]; - verts[0] = start[0]; - verts[1] = start[1]; - verts[2] = start[2]; - verts[3] = end[0]; - verts[4] = end[1]; - verts[5] = end[2]; + verts[0] = start.x; + verts[1] = start.y; + verts[2] = start.z; + verts[3] = end.x; + verts[4] = end.y; + verts[5] = end.z; this.radius = radius; this.bidir = bidir; this.area = area; this.flags = flags; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/RecastDemo.cs b/src/DotRecast.Recast.Demo/RecastDemo.cs index 8b3c957..3f4d347 100644 --- a/src/DotRecast.Recast.Demo/RecastDemo.cs +++ b/src/DotRecast.Recast.Demo/RecastDemo.cs @@ -144,9 +144,9 @@ public class RecastDemo } float[] modelviewMatrix = dd.viewMatrix(cameraPos, cameraEulers); - cameraPos[0] += scrollZoom * 2.0f * modelviewMatrix[2]; - cameraPos[1] += scrollZoom * 2.0f * modelviewMatrix[6]; - cameraPos[2] += scrollZoom * 2.0f * modelviewMatrix[10]; + cameraPos.x += scrollZoom * 2.0f * modelviewMatrix[2]; + cameraPos.y += scrollZoom * 2.0f * modelviewMatrix[6]; + cameraPos.z += scrollZoom * 2.0f * modelviewMatrix[10]; scrollZoom = 0; } @@ -169,17 +169,17 @@ public class RecastDemo if (pan) { float[] modelviewMatrix = dd.viewMatrix(cameraPos, cameraEulers); - cameraPos[0] = origCameraPos[0]; - cameraPos[1] = origCameraPos[1]; - cameraPos[2] = origCameraPos[2]; + cameraPos.x = origCameraPos.x; + cameraPos.y = origCameraPos.y; + cameraPos.z = origCameraPos.z; - cameraPos[0] -= 0.1f * dx * modelviewMatrix[0]; - cameraPos[1] -= 0.1f * dx * modelviewMatrix[4]; - cameraPos[2] -= 0.1f * dx * modelviewMatrix[8]; + cameraPos.x -= 0.1f * dx * modelviewMatrix[0]; + cameraPos.y -= 0.1f * dx * modelviewMatrix[4]; + cameraPos.z -= 0.1f * dx * modelviewMatrix[8]; - cameraPos[0] += 0.1f * dy * modelviewMatrix[1]; - cameraPos[1] += 0.1f * dy * modelviewMatrix[5]; - cameraPos[2] += 0.1f * dy * modelviewMatrix[9]; + cameraPos.x += 0.1f * dy * modelviewMatrix[1]; + cameraPos.y += 0.1f * dy * modelviewMatrix[5]; + cameraPos.z += 0.1f * dy * modelviewMatrix[9]; if (dx * dx + dy * dy > 3 * 3) { movedDuringPan = true; @@ -214,9 +214,9 @@ public class RecastDemo movedDuringPan = false; origMousePos[0] = mousePos[0]; origMousePos[1] = mousePos[1]; - origCameraPos[0] = cameraPos[0]; - origCameraPos[1] = cameraPos[1]; - origCameraPos[2] = cameraPos[2]; + origCameraPos.x = cameraPos.x; + origCameraPos.y = cameraPos.y; + origCameraPos.z = cameraPos.z; } } } @@ -423,7 +423,7 @@ public class RecastDemo { /* * try (MemoryStack stack = stackPush()) { int[] w = stack.mallocInt(1); int[] h = - * stack.mallocInt(1); glfwGetWindowSize(win, w, h); width = w[0]; height = h[0]; } + * stack.mallocInt(1); glfwGetWindowSize(win, w, h); width = w.x; height = h.x; } */ if (sample.getInputGeom() != null) { @@ -449,15 +449,15 @@ public class RecastDemo double movey = (_moveBack - _moveFront) * keySpeed * dt + scrollZoom * 2.0f; scrollZoom = 0; - cameraPos[0] += (float)(movex * modelviewMatrix[0]); - cameraPos[1] += (float)(movex * modelviewMatrix[4]); - cameraPos[2] += (float)(movex * modelviewMatrix[8]); + cameraPos.x += (float)(movex * modelviewMatrix[0]); + cameraPos.y += (float)(movex * modelviewMatrix[4]); + cameraPos.z += (float)(movex * modelviewMatrix[8]); - cameraPos[0] += (float)(movey * modelviewMatrix[2]); - cameraPos[1] += (float)(movey * modelviewMatrix[6]); - cameraPos[2] += (float)(movey * modelviewMatrix[10]); + cameraPos.x += (float)(movey * modelviewMatrix[2]); + cameraPos.y += (float)(movey * modelviewMatrix[6]); + cameraPos.z += (float)(movey * modelviewMatrix[10]); - cameraPos[1] += (float)((_moveUp - _moveDown) * keySpeed * dt); + cameraPos.y += (float)((_moveUp - _moveDown) * keySpeed * dt); long time = FrequencyWatch.Ticks; prevFrameTime = time; @@ -597,7 +597,7 @@ public class RecastDemo hit = PolyMeshRaycast.raycast(sample.getRecastResults(), rayStart, rayEnd); } - float[] rayDir = new float[] { rayEnd[0] - rayStart[0], rayEnd[1] - rayStart[1], rayEnd[2] - rayStart[2] }; + float[] rayDir = new float[] { rayEnd.x - rayStart.x, rayEnd.y - rayStart.y, rayEnd.z - rayStart.z }; Tool rayTool = toolsUI.getTool(); vNormalize(rayDir); if (rayTool != null) @@ -612,16 +612,16 @@ public class RecastDemo { // Marker markerPositionSet = true; - markerPosition[0] = rayStart[0] + (rayEnd[0] - rayStart[0]) * hitTime; - markerPosition[1] = rayStart[1] + (rayEnd[1] - rayStart[1]) * hitTime; - markerPosition[2] = rayStart[2] + (rayEnd[2] - rayStart[2]) * hitTime; + markerPosition.x = rayStart.x + (rayEnd.x - rayStart.x) * hitTime; + markerPosition.y = rayStart.y + (rayEnd.y - rayStart.y) * hitTime; + markerPosition.z = rayStart.z + (rayEnd.z - rayStart.z) * hitTime; } else { Vector3f pos = new Vector3f(); - pos[0] = rayStart[0] + (rayEnd[0] - rayStart[0]) * hitTime; - pos[1] = rayStart[1] + (rayEnd[1] - rayStart[1]) * hitTime; - pos[2] = rayStart[2] + (rayEnd[2] - rayStart[2]) * hitTime; + pos.x = rayStart.x + (rayEnd.x - rayStart.x) * hitTime; + pos.y = rayStart.y + (rayEnd.y - rayStart.y) * hitTime; + pos.z = rayStart.z + (rayEnd.z - rayStart.z) * hitTime; if (rayTool != null) { rayTool.handleClick(rayStart, pos, processHitTestShift); @@ -669,15 +669,15 @@ public class RecastDemo } bminN = Vector3f.Of( - Math.Min(bminN.Value[0], result.getSolidHeightfield().bmin[0]), - Math.Min(bminN.Value[1], result.getSolidHeightfield().bmin[1]), - Math.Min(bminN.Value[2], result.getSolidHeightfield().bmin[2]) + Math.Min(bminN.Value.x, result.getSolidHeightfield().bmin.x), + Math.Min(bminN.Value.y, result.getSolidHeightfield().bmin.y), + Math.Min(bminN.Value.z, result.getSolidHeightfield().bmin.z) ); bmaxN = Vector3f.Of( - Math.Max(bmaxN.Value[0], result.getSolidHeightfield().bmax[0]), - Math.Max(bmaxN.Value[1], result.getSolidHeightfield().bmax[1]), - Math.Max(bmaxN.Value[2], result.getSolidHeightfield().bmax[2]) + Math.Max(bmaxN.Value.x, result.getSolidHeightfield().bmax.x), + Math.Max(bmaxN.Value.y, result.getSolidHeightfield().bmax.y), + Math.Max(bmaxN.Value.z, result.getSolidHeightfield().bmax.z) ); } } @@ -689,11 +689,11 @@ public class RecastDemo Vector3f bmax = bmaxN.Value; camr = (float)(Math.Sqrt( - sqr(bmax[0] - bmin[0]) + sqr(bmax[1] - bmin[1]) + sqr(bmax[2] - bmin[2])) + sqr(bmax.x - bmin.x) + sqr(bmax.y - bmin.y) + sqr(bmax.z - bmin.z)) / 2); - cameraPos[0] = (bmax[0] + bmin[0]) / 2 + camr; - cameraPos[1] = (bmax[1] + bmin[1]) / 2 + camr; - cameraPos[2] = (bmax[2] + bmin[2]) / 2 + camr; + cameraPos.x = (bmax.x + bmin.x) / 2 + camr; + cameraPos.y = (bmax.y + bmin.y) / 2 + camr; + cameraPos.z = (bmax.z + bmin.z) / 2 + camr; camr *= 3; cameraEulers[0] = 45; cameraEulers[1] = -45; @@ -752,4 +752,4 @@ public class RecastDemo { Console.WriteLine($"GLFW error [{code}]: {message}"); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/ConvexVolumeTool.cs b/src/DotRecast.Recast.Demo/Tools/ConvexVolumeTool.cs index e9143b0..6ce1c88 100644 --- a/src/DotRecast.Recast.Demo/Tools/ConvexVolumeTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/ConvexVolumeTool.cs @@ -62,8 +62,8 @@ public class ConvexVolumeTool : Tool IList vols = geom.convexVolumes(); for (int i = 0; i < vols.Count; ++i) { - if (PolyUtils.pointInPoly(vols[i].verts, p) && p[1] >= vols[i].hmin - && p[1] <= vols[i].hmax) + if (PolyUtils.pointInPoly(vols[i].verts, p) && p.y >= vols[i].hmin + && p.y <= vols[i].hmax) { nearestIndex = i; } @@ -123,9 +123,9 @@ public class ConvexVolumeTool : Tool else { // Add new point - pts.Add(p[0]); - pts.Add(p[1]); - pts.Add(p[2]); + pts.Add(p.x); + pts.Add(p.y); + pts.Add(p.z); // Update hull. if (pts.Count > 3) { diff --git a/src/DotRecast.Recast.Demo/Tools/CrowdProfilingTool.cs b/src/DotRecast.Recast.Demo/Tools/CrowdProfilingTool.cs index fbaa04e..a5f66ec 100644 --- a/src/DotRecast.Recast.Demo/Tools/CrowdProfilingTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/CrowdProfilingTool.cs @@ -336,9 +336,9 @@ public class CrowdProfilingTool if (ag.targetState == MoveRequestState.DT_CROWDAGENT_TARGET_VALID) { - float dx = ag.targetPos[0] - ag.npos[0]; - float dy = ag.targetPos[1] - ag.npos[1]; - float dz = ag.targetPos[2] - ag.npos[2]; + float dx = ag.targetPos.x - ag.npos.x; + float dy = ag.targetPos.y - ag.npos.y; + float dz = ag.targetPos.z - ag.npos.z; return dx * dx + dy * dy + dz * dz < 0.3f; } @@ -364,7 +364,7 @@ public class CrowdProfilingTool { float radius = ag.option.radius; Vector3f pos = ag.npos; - dd.debugDrawCircle(pos[0], pos[1], pos[2], radius, duRGBA(0, 0, 0, 32), 2.0f); + dd.debugDrawCircle(pos.x, pos.y, pos.z, radius, duRGBA(0, 0, 0, 32), 2.0f); } foreach (CrowdAgent ag in crowd.getActiveAgents()) @@ -396,8 +396,8 @@ public class CrowdProfilingTool else if (ag.targetState == MoveRequestState.DT_CROWDAGENT_TARGET_VELOCITY) col = duLerpCol(col, duRGBA(64, 255, 0, 128), 128); - dd.debugDrawCylinder(pos[0] - radius, pos[1] + radius * 0.1f, pos[2] - radius, pos[0] + radius, pos[1] + height, - pos[2] + radius, col); + dd.debugDrawCylinder(pos.x - radius, pos.y + radius * 0.1f, pos.z - radius, pos.x + radius, pos.y + height, + pos.z + radius, col); } } @@ -452,4 +452,4 @@ public class CrowdProfilingTool } } } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/CrowdTool.cs b/src/DotRecast.Recast.Demo/Tools/CrowdTool.cs index b8bc51b..2bbebd9 100644 --- a/src/DotRecast.Recast.Demo/Tools/CrowdTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/CrowdTool.cs @@ -235,9 +235,9 @@ public class CrowdTool : Tool for (int i = 0; i < AGENT_MAX_TRAIL; ++i) { - trail.trail[i * 3] = p[0]; - trail.trail[i * 3 + 1] = p[1]; - trail.trail[i * 3 + 2] = p[2]; + trail.trail[i * 3] = p.x; + trail.trail[i * 3 + 1] = p.y; + trail.trail[i * 3 + 2] = p.z; } trail.htrail = 0; @@ -289,12 +289,12 @@ public class CrowdTool : Tool Vector3f p = ag.npos; float r = ag.option.radius; float h = ag.option.height; - bmin[0] = p[0] - r; - bmin[1] = p[1]; - bmin[2] = p[2] - r; - bmax[0] = p[0] + r; - bmax[1] = p[1] + h; - bmax[2] = p[2] + r; + bmin.x = p.x - r; + bmin.y = p.y; + bmin.z = p.z - r; + bmax.x = p.x + r; + bmax.y = p.y + h; + bmax.z = p.z + r; } private void setMoveTarget(Vector3f p, bool adjust) @@ -346,7 +346,7 @@ public class CrowdTool : Tool private Vector3f calcVel(Vector3f pos, Vector3f tgt, float speed) { Vector3f vel = vSub(tgt, pos); - vel[1] = 0.0f; + vel.y = 0.0f; vNormalize(ref vel); return vScale(vel, speed); } @@ -392,7 +392,7 @@ public class CrowdTool : Tool } if (m_targetRef != 0) - dd.debugDrawCross(m_targetPos[0], m_targetPos[1] + 0.1f, m_targetPos[2], rad, duRGBA(255, 255, 255, 192), 2.0f); + dd.debugDrawCross(m_targetPos.x, m_targetPos.y + 0.1f, m_targetPos.z, rad, duRGBA(255, 255, 255, 192), 2.0f); // Occupancy grid. if (toolParams.m_showGrid) @@ -401,7 +401,7 @@ public class CrowdTool : Tool foreach (CrowdAgent ag in crowd.getActiveAgents()) { Vector3f pos = ag.corridor.getPos(); - gridy = Math.Max(gridy, pos[1]); + gridy = Math.Max(gridy, pos.y); } gridy += 1.0f; @@ -442,7 +442,7 @@ public class CrowdTool : Tool int idx = (trail.htrail + AGENT_MAX_TRAIL - j) % AGENT_MAX_TRAIL; int v = idx * 3; float a = 1 - j / (float)AGENT_MAX_TRAIL; - dd.vertex(prev[0], prev[1] + 0.1f, prev[2], duRGBA(0, 0, 0, (int)(128 * preva))); + dd.vertex(prev.x, prev.y + 0.1f, prev.z, duRGBA(0, 0, 0, (int)(128 * preva))); dd.vertex(trail.trail[v], trail.trail[v + 1] + 0.1f, trail.trail[v + 2], duRGBA(0, 0, 0, (int)(128 * a))); preva = a; vCopy(ref prev, trail.trail, v); @@ -469,16 +469,16 @@ public class CrowdTool : Tool { Vector3f va = j == 0 ? pos : ag.corners[j - 1].getPos(); Vector3f vb = ag.corners[j].getPos(); - dd.vertex(va[0], va[1] + radius, va[2], duRGBA(128, 0, 0, 192)); - dd.vertex(vb[0], vb[1] + radius, vb[2], duRGBA(128, 0, 0, 192)); + dd.vertex(va.x, va.y + radius, va.z, duRGBA(128, 0, 0, 192)); + dd.vertex(vb.x, vb.y + radius, vb.z, duRGBA(128, 0, 0, 192)); } if ((ag.corners[ag.corners.Count - 1].getFlags() & NavMeshQuery.DT_STRAIGHTPATH_OFFMESH_CONNECTION) != 0) { Vector3f v = ag.corners[ag.corners.Count - 1].getPos(); - dd.vertex(v[0], v[1], v[2], duRGBA(192, 0, 0, 192)); - dd.vertex(v[0], v[1] + radius * 2, v[2], duRGBA(192, 0, 0, 192)); + dd.vertex(v.x, v.y, v.z, duRGBA(192, 0, 0, 192)); + dd.vertex(v.x, v.y + radius * 2, v.z, duRGBA(192, 0, 0, 192)); } dd.end(); @@ -487,21 +487,21 @@ public class CrowdTool : Tool { /* float dvel[3], pos[3]; calcSmoothSteerDirection(ag.pos, ag.cornerVerts, ag.ncorners, dvel); - pos[0] = ag.pos[0] + dvel[0]; - pos[1] = ag.pos[1] + dvel[1]; - pos[2] = ag.pos[2] + dvel[2]; + pos.x = ag.pos.x + dvel.x; + pos.y = ag.pos.y + dvel.y; + pos.z = ag.pos.z + dvel.z; float off = ag.radius+0.1f; - float[] tgt = &ag.cornerVerts[0]; - float y = ag.pos[1]+off; + float[] tgt = &ag.cornerVerts.x; + float y = ag.pos.y+off; dd.begin(DU_DRAW_LINES, 2.0f); - dd.vertex(ag.pos[0],y,ag.pos[2], duRGBA(255,0,0,192)); - dd.vertex(pos[0],y,pos[2], duRGBA(255,0,0,192)); + dd.vertex(ag.pos.x,y,ag.pos.z, duRGBA(255,0,0,192)); + dd.vertex(pos.x,y,pos.z, duRGBA(255,0,0,192)); - dd.vertex(pos[0],y,pos[2], duRGBA(255,0,0,192)); - dd.vertex(tgt[0],y,tgt[2], duRGBA(255,0,0,192)); + dd.vertex(pos.x,y,pos.z, duRGBA(255,0,0,192)); + dd.vertex(tgt.x,y,tgt.z, duRGBA(255,0,0,192)); dd.end();*/ } @@ -511,8 +511,8 @@ public class CrowdTool : Tool if (toolParams.m_showCollisionSegments) { Vector3f center = ag.boundary.getCenter(); - dd.debugDrawCross(center[0], center[1] + radius, center[2], 0.2f, duRGBA(192, 0, 128, 255), 2.0f); - dd.debugDrawCircle(center[0], center[1] + radius, center[2], ag.option.collisionQueryRange, duRGBA(192, 0, 128, 128), 2.0f); + dd.debugDrawCross(center.x, center.y + radius, center.z, 0.2f, duRGBA(192, 0, 128, 255), 2.0f); + dd.debugDrawCircle(center.x, center.y + radius, center.z, ag.option.collisionQueryRange, duRGBA(192, 0, 128, 128), 2.0f); dd.begin(LINES, 3.0f); for (int j = 0; j < ag.boundary.getSegmentCount(); ++j) @@ -524,7 +524,7 @@ public class CrowdTool : Tool if (triArea2D(pos, s0, s3) < 0.0f) col = duDarkenCol(col); - dd.appendArrow(s[0][0], s[0][1] + 0.2f, s[0][2], s[1][0], s[1][2] + 0.2f, s[1][2], 0.0f, 0.3f, col); + dd.appendArrow(s[0].x, s[0].y + 0.2f, s[0].z, s[1].x, s[1].z + 0.2f, s[1].z, 0.0f, 0.3f, col); } dd.end(); @@ -532,7 +532,7 @@ public class CrowdTool : Tool if (toolParams.m_showNeis) { - dd.debugDrawCircle(pos[0], pos[1] + radius, pos[2], ag.option.collisionQueryRange, duRGBA(0, 192, 128, 128), + dd.debugDrawCircle(pos.x, pos.y + radius, pos.z, ag.option.collisionQueryRange, duRGBA(0, 192, 128, 128), 2.0f); dd.begin(LINES, 2.0f); @@ -541,8 +541,8 @@ public class CrowdTool : Tool CrowdAgent nei = ag.neis[j].agent; if (nei != null) { - dd.vertex(pos[0], pos[1] + radius, pos[2], duRGBA(0, 192, 128, 128)); - dd.vertex(nei.npos[0], nei.npos[1] + radius, nei.npos[2], duRGBA(0, 192, 128, 128)); + dd.vertex(pos.x, pos.y + radius, pos.z, duRGBA(0, 192, 128, 128)); + dd.vertex(nei.npos.x, nei.npos.y + radius, nei.npos.z, duRGBA(0, 192, 128, 128)); } } @@ -552,9 +552,9 @@ public class CrowdTool : Tool if (toolParams.m_showOpt) { dd.begin(LINES, 2.0f); - dd.vertex(m_agentDebug.optStart[0], m_agentDebug.optStart[1] + 0.3f, m_agentDebug.optStart[2], + dd.vertex(m_agentDebug.optStart.x, m_agentDebug.optStart.y + 0.3f, m_agentDebug.optStart.z, duRGBA(0, 128, 0, 192)); - dd.vertex(m_agentDebug.optEnd[0], m_agentDebug.optEnd[1] + 0.3f, m_agentDebug.optEnd[2], duRGBA(0, 128, 0, 192)); + dd.vertex(m_agentDebug.optEnd.x, m_agentDebug.optEnd.y + 0.3f, m_agentDebug.optEnd.z, duRGBA(0, 128, 0, 192)); dd.end(); } } @@ -569,7 +569,7 @@ public class CrowdTool : Tool if (m_agentDebug.agent == ag) col = duRGBA(255, 0, 0, 128); - dd.debugDrawCircle(pos[0], pos[1], pos[2], radius, col, 2.0f); + dd.debugDrawCircle(pos.x, pos.y, pos.z, radius, col, 2.0f); } foreach (CrowdAgent ag in crowd.getActiveAgents()) @@ -589,8 +589,8 @@ public class CrowdTool : Tool else if (ag.targetState == MoveRequestState.DT_CROWDAGENT_TARGET_VELOCITY) col = duLerpCol(col, duRGBA(64, 255, 0, 128), 128); - dd.debugDrawCylinder(pos[0] - radius, pos[1] + radius * 0.1f, pos[2] - radius, pos[0] + radius, pos[1] + height, - pos[2] + radius, col); + dd.debugDrawCylinder(pos.x - radius, pos.y + radius * 0.1f, pos.z - radius, pos.x + radius, pos.y + height, + pos.z + radius, col); } if (toolParams.m_showVO) @@ -603,9 +603,9 @@ public class CrowdTool : Tool // Draw detail about agent sela ObstacleAvoidanceDebugData vod = m_agentDebug.vod; - float dx = ag.npos[0]; - float dy = ag.npos[1] + ag.option.height; - float dz = ag.npos[2]; + float dx = ag.npos.x; + float dy = ag.npos.y + ag.option.height; + float dz = ag.npos.z; dd.debugDrawCircle(dx, dy, dz, ag.option.maxSpeed, duRGBA(255, 255, 255, 64), 2.0f); @@ -618,10 +618,10 @@ public class CrowdTool : Tool float pen2 = vod.getSamplePreferredSidePenalty(j); int col = duLerpCol(duRGBA(255, 255, 255, 220), duRGBA(128, 96, 0, 220), (int)(pen * 255)); col = duLerpCol(col, duRGBA(128, 0, 0, 220), (int)(pen2 * 128)); - dd.vertex(dx + p[0] - sr, dy, dz + p[2] - sr, col); - dd.vertex(dx + p[0] - sr, dy, dz + p[2] + sr, col); - dd.vertex(dx + p[0] + sr, dy, dz + p[2] + sr, col); - dd.vertex(dx + p[0] + sr, dy, dz + p[2] - sr, col); + dd.vertex(dx + p.x - sr, dy, dz + p.z - sr, col); + dd.vertex(dx + p.x - sr, dy, dz + p.z + sr, col); + dd.vertex(dx + p.x + sr, dy, dz + p.z + sr, col); + dd.vertex(dx + p.x + sr, dy, dz + p.z - sr, col); } dd.end(); @@ -648,12 +648,12 @@ public class CrowdTool : Tool else if (ag.targetState == MoveRequestState.DT_CROWDAGENT_TARGET_VELOCITY) col = duLerpCol(col, duRGBA(64, 255, 0, 192), 128); - dd.debugDrawCircle(pos[0], pos[1] + height, pos[2], radius, col, 2.0f); + dd.debugDrawCircle(pos.x, pos.y + height, pos.z, radius, col, 2.0f); - dd.debugDrawArrow(pos[0], pos[1] + height, pos[2], pos[0] + dvel[0], pos[1] + height + dvel[1], pos[2] + dvel[2], + dd.debugDrawArrow(pos.x, pos.y + height, pos.z, pos.x + dvel.x, pos.y + height + dvel.y, pos.z + dvel.z, 0.0f, 0.4f, duRGBA(0, 192, 255, 192), m_agentDebug.agent == ag ? 2.0f : 1.0f); - dd.debugDrawArrow(pos[0], pos[1] + height, pos[2], pos[0] + vel[0], pos[1] + height + vel[1], pos[2] + vel[2], 0.0f, + dd.debugDrawArrow(pos.x, pos.y + height, pos.z, pos.x + vel.x, pos.y + height + vel.y, pos.z + vel.z, 0.0f, 0.4f, duRGBA(0, 0, 0, 160), 2.0f); } @@ -689,9 +689,9 @@ public class CrowdTool : Tool AgentTrail trail = m_trails[ag.idx]; // Update agent movement trail. trail.htrail = (trail.htrail + 1) % AGENT_MAX_TRAIL; - trail.trail[trail.htrail * 3] = ag.npos[0]; - trail.trail[trail.htrail * 3 + 1] = ag.npos[1]; - trail.trail[trail.htrail * 3 + 2] = ag.npos[2]; + trail.trail[trail.htrail * 3] = ag.npos.x; + trail.trail[trail.htrail * 3 + 1] = ag.npos.y; + trail.trail[trail.htrail * 3 + 2] = ag.npos.z; } m_agentDebug.vod.normalizeSamples(); @@ -838,4 +838,4 @@ public class CrowdTool : Tool { return "Crowd"; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/DynamicUpdateTool.cs b/src/DotRecast.Recast.Demo/Tools/DynamicUpdateTool.cs index 2a4f450..e6467be 100644 --- a/src/DotRecast.Recast.Demo/Tools/DynamicUpdateTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/DynamicUpdateTool.cs @@ -202,15 +202,15 @@ public class DynamicUpdateTool : Tool if (sposSet && eposSet && dynaMesh != null) { - Vector3f sp = Vector3f.Of(spos[0], spos[1] + 1.3f, spos[2]); - Vector3f ep = Vector3f.Of(epos[0], epos[1] + 1.3f, epos[2]); + Vector3f sp = Vector3f.Of(spos.x, spos.y + 1.3f, spos.z); + Vector3f ep = Vector3f.Of(epos.x, epos.y + 1.3f, epos.z); long t1 = FrequencyWatch.Ticks; float? hitPos = dynaMesh.voxelQuery().raycast(sp, ep); long t2 = FrequencyWatch.Ticks; raycastTime = (t2 - t1) / TimeSpan.TicksPerMillisecond; raycastHit = hitPos.HasValue; raycastHitPos = hitPos.HasValue - ? Vector3f.Of(sp[0] + hitPos.Value * (ep[0] - sp[0]), sp[1] + hitPos.Value * (ep[1] - sp[1]), sp[2] + hitPos.Value * (ep[2] - sp[2])) + ? Vector3f.Of(sp.x + hitPos.Value * (ep.x - sp.x), sp.y + hitPos.Value * (ep.y - sp.y), sp.z + hitPos.Value * (ep.z - sp.z)) : ep; } } @@ -234,11 +234,11 @@ public class DynamicUpdateTool : Tool ); vNormalize(ref a); float len = 1f + (float)random.NextDouble() * 20f; - a[0] *= len; - a[1] *= len; - a[2] *= len; - Vector3f start = Vector3f.Of(p[0], p[1], p[2]); - Vector3f end = Vector3f.Of(p[0] + a[0], p[1] + a[1], p[2] + a[2]); + a.x *= len; + a.y *= len; + a.z *= len; + Vector3f start = Vector3f.Of(p.x, p.y, p.z); + Vector3f end = Vector3f.Of(p.x + a.x, p.y + a.y, p.z + a.z); return Tuple.Create(new CapsuleCollider( start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, dynaMesh.config.walkableClimb), GizmoFactory.capsule(start, end, radius)); } @@ -266,8 +266,8 @@ public class DynamicUpdateTool : Tool a[0] *= len; a[1] *= len; a[2] *= len; - Vector3f start = Vector3f.Of(p[0], p[1], p[2]); - Vector3f end = Vector3f.Of(p[0] + a[0], p[1] + a[1], p[2] + a[2]); + Vector3f start = Vector3f.Of(p.x, p.y, p.z); + Vector3f end = Vector3f.Of(p.x + a[0], p.y + a[1], p.z + a[2]); return Tuple.Create(new CylinderCollider(start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, dynaMesh.config.walkableClimb), GizmoFactory.cylinder(start, end, radius)); } @@ -275,7 +275,7 @@ public class DynamicUpdateTool : Tool private Tuple compositeCollider(Vector3f p) { Vector3f baseExtent = Vector3f.Of(5, 3, 8); - Vector3f baseCenter = Vector3f.Of(p[0], p[1] + 3, p[2]); + Vector3f baseCenter = Vector3f.Of(p.x, p.y + 3, p.z); Vector3f baseUp = Vector3f.Of(0, 1, 0); Vector3f forward = Vector3f.Of((1f - 2 * (float)random.NextDouble()), 0, (1f - 2 * (float)random.NextDouble())); vNormalize(ref forward); @@ -284,22 +284,22 @@ public class DynamicUpdateTool : Tool SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, dynaMesh.config.walkableClimb); var roofUp = Vector3f.Zero; Vector3f roofExtent = Vector3f.Of(4.5f, 4.5f, 8f); - float[] rx = GLU.build_4x4_rotation_matrix(45, forward[0], forward[1], forward[2]); + float[] rx = GLU.build_4x4_rotation_matrix(45, forward.x, forward.y, forward.z); roofUp = mulMatrixVector(ref roofUp, rx, baseUp); - Vector3f roofCenter = Vector3f.Of(p[0], p[1] + 6, p[2]); + Vector3f roofCenter = Vector3f.Of(p.x, p.y + 6, p.z); BoxCollider roof = new BoxCollider(roofCenter, BoxCollider.getHalfEdges(roofUp, forward, roofExtent), SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, dynaMesh.config.walkableClimb); Vector3f trunkStart = Vector3f.Of( - baseCenter[0] - forward[0] * 15 + side[0] * 6, - p[1], - baseCenter[2] - forward[2] * 15 + side[2] * 6 + baseCenter.x - forward.x * 15 + side.x * 6, + p.y, + baseCenter.z - forward.z * 15 + side.z * 6 ); - Vector3f trunkEnd = Vector3f.Of(trunkStart[0], trunkStart[1] + 10, trunkStart[2]); + Vector3f trunkEnd = Vector3f.Of(trunkStart.x, trunkStart.y + 10, trunkStart.z); CapsuleCollider trunk = new CapsuleCollider(trunkStart, trunkEnd, 0.5f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, dynaMesh.config.walkableClimb); Vector3f crownCenter = Vector3f.Of( - baseCenter[0] - forward[0] * 15 + side[0] * 6, p[1] + 10, - baseCenter[2] - forward[2] * 15 + side[2] * 6 + baseCenter.x - forward.x * 15 + side.x * 6, p.y + 10, + baseCenter.z - forward.z * 15 + side.z * 6 ); SphereCollider crown = new SphereCollider(crownCenter, 4f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_GRASS, dynaMesh.config.walkableClimb); @@ -348,16 +348,16 @@ public class DynamicUpdateTool : Tool Vector3f vr = new Vector3f(); for (int i = 0; i < geom.vertices.Length; i += 3) { - v[0] = geom.vertices[i]; - v[1] = geom.vertices[i + 1]; - v[2] = geom.vertices[i + 2]; + v.x = geom.vertices[i]; + v.y = geom.vertices[i + 1]; + v.z = geom.vertices[i + 2]; mulMatrixVector(ref vr, m, v); - vr[0] += p[0]; - vr[1] += p[1] - 0.1f; - vr[2] += p[2]; - verts[i] = vr[0]; - verts[i + 1] = vr[1]; - verts[i + 2] = vr[2]; + vr.x += p.x; + vr.y += p.y - 0.1f; + vr.z += p.z; + verts[i] = vr.x; + verts[i + 1] = vr.y; + verts[i + 2] = vr.z; } return verts; @@ -373,9 +373,9 @@ public class DynamicUpdateTool : Tool private Vector3f mulMatrixVector(ref Vector3f resultvector, float[] matrix, Vector3f pvector) { - resultvector[0] = matrix[0] * pvector[0] + matrix[4] * pvector[1] + matrix[8] * pvector[2]; - resultvector[1] = matrix[1] * pvector[0] + matrix[5] * pvector[1] + matrix[9] * pvector[2]; - resultvector[2] = matrix[2] * pvector[0] + matrix[6] * pvector[1] + matrix[10] * pvector[2]; + resultvector.x = matrix[0] * pvector.x + matrix[4] * pvector.y + matrix[8] * pvector.z; + resultvector.y = matrix[1] * pvector.x + matrix[5] * pvector.y + matrix[9] * pvector.z; + resultvector.z = matrix[2] * pvector.x + matrix[6] * pvector.y + matrix[10] * pvector.z; return resultvector; } @@ -409,9 +409,9 @@ public class DynamicUpdateTool : Tool float dy = 0.5f * (bounds[4] - bounds[1]); float dz = 0.5f * (bounds[5] - bounds[2]); float rSqr = dx * dx + dy * dy + dz * dz; - float mx = point[0] - cx; - float my = point[1] - cy; - float mz = point[2] - cz; + float mx = point.x - cx; + float my = point.y - cy; + float mz = point.z - cz; float c = mx * mx + my * my + mz * mz - rSqr; if (c <= 0.0f) { @@ -458,8 +458,8 @@ public class DynamicUpdateTool : Tool { int spathCol = raycastHit ? duRGBA(128, 32, 16, 220) : duRGBA(64, 128, 240, 220); dd.begin(LINES, 2.0f); - dd.vertex(spos[0], spos[1] + 1.3f, spos[2], spathCol); - dd.vertex(raycastHitPos[0], raycastHitPos[1], raycastHitPos[2], spathCol); + dd.vertex(spos.x, spos.y + 1.3f, spos.z, spathCol); + dd.vertex(raycastHitPos.x, raycastHitPos.y, raycastHitPos.z, spathCol); dd.end(); } @@ -474,16 +474,16 @@ public class DynamicUpdateTool : Tool float c = sample.getSettingsUI().getAgentMaxClimb(); dd.depthMask(false); // Agent dimensions. - dd.debugDrawCylinderWire(pos[0] - r, pos[1] + 0.02f, pos[2] - r, pos[0] + r, pos[1] + h, pos[2] + r, col, 2.0f); - dd.debugDrawCircle(pos[0], pos[1] + c, pos[2], r, duRGBA(0, 0, 0, 64), 1.0f); + dd.debugDrawCylinderWire(pos.x - r, pos.y + 0.02f, pos.z - r, pos.x + r, pos.y + h, pos.z + r, col, 2.0f); + dd.debugDrawCircle(pos.x, pos.y + c, pos.z, r, duRGBA(0, 0, 0, 64), 1.0f); int colb = duRGBA(0, 0, 0, 196); dd.begin(LINES); - dd.vertex(pos[0], pos[1] - c, pos[2], colb); - dd.vertex(pos[0], pos[1] + c, pos[2], colb); - dd.vertex(pos[0] - r / 2, pos[1] + 0.02f, pos[2], colb); - dd.vertex(pos[0] + r / 2, pos[1] + 0.02f, pos[2], colb); - dd.vertex(pos[0], pos[1] + 0.02f, pos[2] - r / 2, colb); - dd.vertex(pos[0], pos[1] + 0.02f, pos[2] + r / 2, colb); + dd.vertex(pos.x, pos.y - c, pos.z, colb); + dd.vertex(pos.x, pos.y + c, pos.z, colb); + dd.vertex(pos.x - r / 2, pos.y + 0.02f, pos.z, colb); + dd.vertex(pos.x + r / 2, pos.y + 0.02f, pos.z, colb); + dd.vertex(pos.x, pos.y + 0.02f, pos.z - r / 2, colb); + dd.vertex(pos.x, pos.y + 0.02f, pos.z + r / 2, colb); dd.end(); dd.depthMask(true); } @@ -670,17 +670,17 @@ public class DynamicUpdateTool : Tool ImGui.Separator(); if (sposSet) { - ImGui.Text($"Start: {spos[0]}, {spos[1] + 1.3f}, {spos[2]}"); + ImGui.Text($"Start: {spos.x}, {spos.y + 1.3f}, {spos.z}"); } if (eposSet) { - ImGui.Text($"End: {epos[0]}, {epos[1] + 1.3f}, {epos[2]}"); + ImGui.Text($"End: {epos.x}, {epos.y + 1.3f}, {epos.z}"); } if (raycastHit) { - ImGui.Text($"Hit: {raycastHitPos[0]}, {raycastHitPos[1]}, {raycastHitPos[2]}"); + ImGui.Text($"Hit: {raycastHitPos.x}, {raycastHitPos.y}, {raycastHitPos.z}"); } ImGui.NewLine(); @@ -786,4 +786,4 @@ public class DynamicUpdateTool : Tool { return "Dynamic Updates"; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/Gizmos/BoxGizmo.cs b/src/DotRecast.Recast.Demo/Tools/Gizmos/BoxGizmo.cs index 84d6610..d44a756 100644 --- a/src/DotRecast.Recast.Demo/Tools/Gizmos/BoxGizmo.cs +++ b/src/DotRecast.Recast.Demo/Tools/Gizmos/BoxGizmo.cs @@ -1,4 +1,4 @@ -using DotRecast.Core; +using DotRecast.Core; using DotRecast.Detour.Dynamic.Colliders; using DotRecast.Recast.Demo.Draw; @@ -42,23 +42,23 @@ public class BoxGizmo : ColliderGizmo float s0 = (i & 1) != 0 ? 1f : -1f; float s1 = (i & 2) != 0 ? 1f : -1f; float s2 = (i & 4) != 0 ? 1f : -1f; - vertices[i * 3 + 0] = center[0] + s0 * halfEdges[0][0] + s1 * halfEdges[1][0] + s2 * halfEdges[2][0]; - vertices[i * 3 + 1] = center[1] + s0 * halfEdges[0][1] + s1 * halfEdges[1][1] + s2 * halfEdges[2][1]; - vertices[i * 3 + 2] = center[2] + s0 * halfEdges[0][2] + s1 * halfEdges[1][2] + s2 * halfEdges[2][2]; + vertices[i * 3 + 0] = center.x + s0 * halfEdges[0].x + s1 * halfEdges[1].x + s2 * halfEdges[2].x; + vertices[i * 3 + 1] = center.y + s0 * halfEdges[0].y + s1 * halfEdges[1].y + s2 * halfEdges[2].y; + vertices[i * 3 + 2] = center.z + s0 * halfEdges[0].z + s1 * halfEdges[1].z + s2 * halfEdges[2].z; } } public void render(RecastDebugDraw debugDraw) { - var trX = Vector3f.Of(halfEdges[0][0], halfEdges[1][0], halfEdges[2][0]); - var trY = Vector3f.Of(halfEdges[0][1], halfEdges[1][1], halfEdges[2][1]); - var trZ = Vector3f.Of(halfEdges[0][2], halfEdges[1][2], halfEdges[2][2]); + var trX = Vector3f.Of(halfEdges[0].x, halfEdges[1].x, halfEdges[2].x); + var trY = Vector3f.Of(halfEdges[0].y, halfEdges[1].y, halfEdges[2].y); + var trZ = Vector3f.Of(halfEdges[0].z, halfEdges[1].z, halfEdges[2].z); float[] vertices = new float[8 * 3]; for (int i = 0; i < 8; i++) { - vertices[i * 3 + 0] = RecastVectors.dot(VERTS[i], trX) + center[0]; - vertices[i * 3 + 1] = RecastVectors.dot(VERTS[i], trY) + center[1]; - vertices[i * 3 + 2] = RecastVectors.dot(VERTS[i], trZ) + center[2]; + vertices[i * 3 + 0] = RecastVectors.dot(VERTS[i], trX) + center.x; + vertices[i * 3 + 1] = RecastVectors.dot(VERTS[i], trY) + center.y; + vertices[i * 3 + 2] = RecastVectors.dot(VERTS[i], trZ) + center.z; } debugDraw.begin(DebugDrawPrimitives.TRIS); @@ -83,4 +83,4 @@ public class BoxGizmo : ColliderGizmo debugDraw.end(); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/Gizmos/CapsuleGizmo.cs b/src/DotRecast.Recast.Demo/Tools/Gizmos/CapsuleGizmo.cs index 6ed4398..27db9d6 100644 --- a/src/DotRecast.Recast.Demo/Tools/Gizmos/CapsuleGizmo.cs +++ b/src/DotRecast.Recast.Demo/Tools/Gizmos/CapsuleGizmo.cs @@ -1,4 +1,4 @@ -using DotRecast.Core; +using DotRecast.Core; using DotRecast.Recast.Demo.Draw; using static DotRecast.Recast.RecastVectors; using static DotRecast.Core.RecastMath; @@ -17,21 +17,21 @@ public class CapsuleGizmo : ColliderGizmo { center = new float[] { - 0.5f * (start[0] + end[0]), 0.5f * (start[1] + end[1]), - 0.5f * (start[2] + end[2]) + 0.5f * (start.x + end.x), 0.5f * (start.y + end.y), + 0.5f * (start.z + end.z) }; - Vector3f axis = Vector3f.Of(end[0] - start[0], end[1] - start[1], end[2] - start[2]); + Vector3f axis = Vector3f.Of(end.x - start.x, end.y - start.y, end.z - start.z); Vector3f[] normals = new Vector3f[3]; - normals[1] = Vector3f.Of(end[0] - start[0], end[1] - start[1], end[2] - start[2]); + normals[1] = Vector3f.Of(end.x - start.x, end.y - start.y, end.z - start.z); normalize(ref normals[1]); normals[0] = getSideVector(axis); normals[2] = Vector3f.Zero; cross(ref normals[2], normals[0], normals[1]); normalize(ref normals[2]); triangles = generateSphericalTriangles(); - var trX = Vector3f.Of(normals[0][0], normals[1][0], normals[2][0]); - var trY = Vector3f.Of(normals[0][1], normals[1][1], normals[2][1]); - var trZ = Vector3f.Of(normals[0][2], normals[1][2], normals[2][2]); + var trX = Vector3f.Of(normals[0].x, normals[1].x, normals[2].x); + var trY = Vector3f.Of(normals[0].y, normals[1].y, normals[2].y); + var trZ = Vector3f.Of(normals[0].z, normals[1].z, normals[2].z); float[] spVertices = generateSphericalVertices(); float halfLength = 0.5f * vLen(axis); vertices = new float[spVertices.Length]; @@ -43,21 +43,21 @@ public class CapsuleGizmo : ColliderGizmo float x = radius * spVertices[i]; float y = radius * spVertices[i + 1] + offset; float z = radius * spVertices[i + 2]; - vertices[i] = x * trX[0] + y * trX[1] + z * trX[2] + center[0]; - vertices[i + 1] = x * trY[0] + y * trY[1] + z * trY[2] + center[1]; - vertices[i + 2] = x * trZ[0] + y * trZ[1] + z * trZ[2] + center[2]; - v[0] = vertices[i] - center[0]; - v[1] = vertices[i + 1] - center[1]; - v[2] = vertices[i + 2] - center[2]; + vertices[i] = x * trX.x + y * trX.y + z * trX.z + center[0]; + vertices[i + 1] = x * trY.x + y * trY.y + z * trY.z + center[1]; + vertices[i + 2] = x * trZ.x + y * trZ.y + z * trZ.z + center[2]; + v.x = vertices[i] - center[0]; + v.y = vertices[i + 1] - center[1]; + v.z = vertices[i + 2] - center[2]; normalize(ref v); - gradient[i / 3] = clamp(0.57735026f * (v[0] + v[1] + v[2]), -1, 1); + gradient[i / 3] = clamp(0.57735026f * (v.x + v.y + v.z), -1, 1); } } private Vector3f getSideVector(Vector3f axis) { Vector3f side = Vector3f.Of(1, 0, 0); - if (axis[0] > 0.8) + if (axis.x > 0.8) { side = Vector3f.Of(0, 0, 1); } @@ -86,4 +86,4 @@ public class CapsuleGizmo : ColliderGizmo debugDraw.end(); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/Gizmos/CylinderGizmo.cs b/src/DotRecast.Recast.Demo/Tools/Gizmos/CylinderGizmo.cs index 37aaf93..9f23742 100644 --- a/src/DotRecast.Recast.Demo/Tools/Gizmos/CylinderGizmo.cs +++ b/src/DotRecast.Recast.Demo/Tools/Gizmos/CylinderGizmo.cs @@ -1,4 +1,4 @@ -using DotRecast.Core; +using DotRecast.Core; using DotRecast.Recast.Demo.Draw; using static DotRecast.Recast.RecastVectors; using static DotRecast.Core.RecastMath; @@ -17,21 +17,21 @@ public class CylinderGizmo : ColliderGizmo public CylinderGizmo(Vector3f start, Vector3f end, float radius) { center = Vector3f.Of( - 0.5f * (start[0] + end[0]), 0.5f * (start[1] + end[1]), - 0.5f * (start[2] + end[2]) + 0.5f * (start.x + end.x), 0.5f * (start.y + end.y), + 0.5f * (start.z + end.z) ); - Vector3f axis = Vector3f.Of(end[0] - start[0], end[1] - start[1], end[2] - start[2]); + Vector3f axis = Vector3f.Of(end.x - start.x, end.y - start.y, end.z - start.z); Vector3f[] normals = new Vector3f[3]; - normals[1] = Vector3f.Of(end[0] - start[0], end[1] - start[1], end[2] - start[2]); + normals[1] = Vector3f.Of(end.x - start.x, end.y - start.y, end.z - start.z); normalize(ref normals[1]); normals[0] = getSideVector(axis); normals[2] = Vector3f.Zero; cross(ref normals[2], normals[0], normals[1]); normalize(ref normals[2]); triangles = generateCylindricalTriangles(); - Vector3f trX = Vector3f.Of(normals[0][0], normals[1][0], normals[2][0]); - Vector3f trY = Vector3f.Of(normals[0][1], normals[1][1], normals[2][1]); - Vector3f trZ = Vector3f.Of(normals[0][2], normals[1][2], normals[2][2]); + Vector3f trX = Vector3f.Of(normals[0].x, normals[1].x, normals[2].x); + Vector3f trY = Vector3f.Of(normals[0].y, normals[1].y, normals[2].y); + Vector3f trZ = Vector3f.Of(normals[0].z, normals[1].z, normals[2].z); vertices = generateCylindricalVertices(); float halfLength = 0.5f * vLen(axis); gradient = new float[vertices.Length / 3]; @@ -42,20 +42,20 @@ public class CylinderGizmo : ColliderGizmo float x = radius * vertices[i]; float y = vertices[i + 1] + offset; float z = radius * vertices[i + 2]; - vertices[i] = x * trX[0] + y * trX[1] + z * trX[2] + center[0]; - vertices[i + 1] = x * trY[0] + y * trY[1] + z * trY[2] + center[1]; - vertices[i + 2] = x * trZ[0] + y * trZ[1] + z * trZ[2] + center[2]; + vertices[i] = x * trX.x + y * trX.y + z * trX.z + center.x; + vertices[i + 1] = x * trY.x + y * trY.y + z * trY.z + center.y; + vertices[i + 2] = x * trZ.x + y * trZ.y + z * trZ.z + center.z; if (i < vertices.Length / 4 || i >= 3 * vertices.Length / 4) { gradient[i / 3] = 1; } else { - v[0] = vertices[i] - center[0]; - v[1] = vertices[i + 1] - center[1]; - v[2] = vertices[i + 2] - center[2]; + v.x = vertices[i] - center.x; + v.y = vertices[i + 1] - center.y; + v.z = vertices[i + 2] - center.z; normalize(ref v); - gradient[i / 3] = clamp(0.57735026f * (v[0] + v[1] + v[2]), -1, 1); + gradient[i / 3] = clamp(0.57735026f * (v.x + v.y + v.z), -1, 1); } } } @@ -63,7 +63,7 @@ public class CylinderGizmo : ColliderGizmo private Vector3f getSideVector(Vector3f axis) { Vector3f side = Vector3f.Of(1, 0, 0); - if (axis[0] > 0.8) + if (axis.x > 0.8) { side = Vector3f.Of(0, 0, 1); } @@ -92,4 +92,4 @@ public class CylinderGizmo : ColliderGizmo debugDraw.end(); } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/Gizmos/GizmoHelper.cs b/src/DotRecast.Recast.Demo/Tools/Gizmos/GizmoHelper.cs index 1130aaa..0fd0935 100644 --- a/src/DotRecast.Recast.Demo/Tools/Gizmos/GizmoHelper.cs +++ b/src/DotRecast.Recast.Demo/Tools/Gizmos/GizmoHelper.cs @@ -185,11 +185,11 @@ public class GizmoHelper e1[j] = vertices[v2 + j] - vertices[v0 + j]; } - normal[0] = e0[1] * e1[2] - e0[2] * e1[1]; - normal[1] = e0[2] * e1[0] - e0[0] * e1[2]; - normal[2] = e0[0] * e1[1] - e0[1] * e1[0]; + normal.x = e0.y * e1.z - e0.z * e1.y; + normal.y = e0.z * e1.x - e0.x * e1.z; + normal.z = e0.x * e1.y - e0.y * e1.x; RecastVectors.normalize(ref normal); - float c = clamp(0.57735026f * (normal[0] + normal[1] + normal[2]), -1, 1); + float c = clamp(0.57735026f * (normal.x + normal.y + normal.z), -1, 1); int col = DebugDraw.duLerpCol(DebugDraw.duRGBA(32, 32, 0, 160), DebugDraw.duRGBA(220, 220, 0, 160), (int)(127 * (1 + c))); return col; diff --git a/src/DotRecast.Recast.Demo/Tools/Gizmos/SphereGizmo.cs b/src/DotRecast.Recast.Demo/Tools/Gizmos/SphereGizmo.cs index d9d2403..8471337 100644 --- a/src/DotRecast.Recast.Demo/Tools/Gizmos/SphereGizmo.cs +++ b/src/DotRecast.Recast.Demo/Tools/Gizmos/SphereGizmo.cs @@ -32,8 +32,8 @@ public class SphereGizmo : ColliderGizmo float c = clamp(0.57735026f * (vertices[v] + vertices[v + 1] + vertices[v + 2]), -1, 1); int col = DebugDraw.duLerpCol(DebugDraw.duRGBA(32, 32, 0, 160), DebugDraw.duRGBA(220, 220, 0, 160), (int)(127 * (1 + c))); - debugDraw.vertex(radius * vertices[v] + center[0], radius * vertices[v + 1] + center[1], - radius * vertices[v + 2] + center[2], col); + debugDraw.vertex(radius * vertices[v] + center.x, radius * vertices[v + 1] + center.y, + radius * vertices[v + 2] + center.z, col); } } diff --git a/src/DotRecast.Recast.Demo/Tools/JumpLinkBuilderTool.cs b/src/DotRecast.Recast.Demo/Tools/JumpLinkBuilderTool.cs index 5d0a90a..1f4a98b 100644 --- a/src/DotRecast.Recast.Demo/Tools/JumpLinkBuilderTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/JumpLinkBuilderTool.cs @@ -179,14 +179,14 @@ public class JumpLinkBuilderTool : Tool dd.end(); dd.begin(LINES, 1.0f); - dd.vertex(link.start.p[0], link.start.p[1], link.start.p[2], colb); - dd.vertex(link.start.p[0], link.start.p[1] + r, link.start.p[2], colb); - dd.vertex(link.start.p[0], link.start.p[1] + r, link.start.p[2], colb); - dd.vertex(link.start.q[0], link.start.q[1] + r, link.start.q[2], colb); - dd.vertex(link.start.q[0], link.start.q[1] + r, link.start.q[2], colb); - dd.vertex(link.start.q[0], link.start.q[1], link.start.q[2], colb); - dd.vertex(link.start.q[0], link.start.q[1], link.start.q[2], colb); - dd.vertex(link.start.p[0], link.start.p[1], link.start.p[2], colb); + dd.vertex(link.start.p.x, link.start.p.y, link.start.p.z, colb); + dd.vertex(link.start.p.x, link.start.p.y + r, link.start.p.z, colb); + dd.vertex(link.start.p.x, link.start.p.y + r, link.start.p.z, colb); + dd.vertex(link.start.q.x, link.start.q.y + r, link.start.q.z, colb); + dd.vertex(link.start.q.x, link.start.q.y + r, link.start.q.z, colb); + dd.vertex(link.start.q.x, link.start.q.y, link.start.q.z, colb); + dd.vertex(link.start.q.x, link.start.q.y, link.start.q.z, colb); + dd.vertex(link.start.p.x, link.start.p.y, link.start.p.z, colb); dd.end(); GroundSegment end = link.end; @@ -198,14 +198,14 @@ public class JumpLinkBuilderTool : Tool dd.end(); dd.begin(LINES, 1.0f); - dd.vertex(end.p[0], end.p[1], end.p[2], colb); - dd.vertex(end.p[0], end.p[1] + r, end.p[2], colb); - dd.vertex(end.p[0], end.p[1] + r, end.p[2], colb); - dd.vertex(end.q[0], end.q[1] + r, end.q[2], colb); - dd.vertex(end.q[0], end.q[1] + r, end.q[2], colb); - dd.vertex(end.q[0], end.q[1], end.q[2], colb); - dd.vertex(end.q[0], end.q[1], end.q[2], colb); - dd.vertex(end.p[0], end.p[1], end.p[2], colb); + dd.vertex(end.p.x, end.p.y, end.p.z, colb); + dd.vertex(end.p.x, end.p.y + r, end.p.z, colb); + dd.vertex(end.p.x, end.p.y + r, end.p.z, colb); + dd.vertex(end.q.x, end.q.y + r, end.q.z, colb); + dd.vertex(end.q.x, end.q.y + r, end.q.z, colb); + dd.vertex(end.q.x, end.q.y, end.q.z, colb); + dd.vertex(end.q.x, end.q.y, end.q.z, colb); + dd.vertex(end.p.x, end.p.y, end.p.z, colb); dd.end(); dd.begin(LINES, 4.0f); @@ -245,7 +245,7 @@ public class JumpLinkBuilderTool : Tool col = duRGBA(220, 32, 32, 255); } - spt[1] = s.p[1] + off; + spt.y = s.p.y + off; dd.vertex(spt, col); } @@ -264,7 +264,7 @@ public class JumpLinkBuilderTool : Tool off = 0.1f; } - spt[1] = s.p[1] + off; + spt.y = s.p.y + off; dd.vertex(spt, col); } @@ -285,7 +285,7 @@ public class JumpLinkBuilderTool : Tool col = duRGBA(220, 32, 32, 255); } - spt[1] = s.p[1] + off; + spt.y = s.p.y + off; dd.vertex(spt, col); } @@ -303,7 +303,7 @@ public class JumpLinkBuilderTool : Tool off = 0.1f; } - spt[1] = s.p[1] + off; + spt.y = s.p.y + off; dd.vertex(spt, col); } @@ -448,4 +448,4 @@ public class JumpLinkBuilderTool : Tool { return "Annotation Builder"; } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/Tools/OffMeshConnectionTool.cs b/src/DotRecast.Recast.Demo/Tools/OffMeshConnectionTool.cs index 6c0ed39..ff82b76 100644 --- a/src/DotRecast.Recast.Demo/Tools/OffMeshConnectionTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/OffMeshConnectionTool.cs @@ -100,7 +100,7 @@ public class OffMeshConnectionTool : Tool if (hitPosSet) { - dd.debugDrawCross(hitPos[0], hitPos[1] + 0.1f, hitPos[2], s, duRGBA(0, 0, 0, 128), 2.0f); + dd.debugDrawCross(hitPos.x, hitPos.y + 0.1f, hitPos.z, s, duRGBA(0, 0, 0, 128), 2.0f); } DemoInputGeomProvider geom = sample.getInputGeom(); diff --git a/src/DotRecast.Recast.Demo/Tools/TestNavmeshTool.cs b/src/DotRecast.Recast.Demo/Tools/TestNavmeshTool.cs index 1f707c9..9d36c0b 100644 --- a/src/DotRecast.Recast.Demo/Tools/TestNavmeshTool.cs +++ b/src/DotRecast.Recast.Demo/Tools/TestNavmeshTool.cs @@ -243,9 +243,9 @@ public class TestNavmeshTool : Tool moveTgt, m_filter); MoveAlongSurfaceResult moveAlongSurface = result.result; - iterPos[0] = moveAlongSurface.getResultPos()[0]; - iterPos[1] = moveAlongSurface.getResultPos()[1]; - iterPos[2] = moveAlongSurface.getResultPos()[2]; + iterPos.x = moveAlongSurface.getResultPos().x; + iterPos.y = moveAlongSurface.getResultPos().y; + iterPos.z = moveAlongSurface.getResultPos().z; List visited = result.result.getVisited(); polys = PathUtils.fixupCorridor(polys, visited); @@ -254,7 +254,7 @@ public class TestNavmeshTool : Tool Result polyHeight = m_navQuery.getPolyHeight(polys[0], moveAlongSurface.getResultPos()); if (polyHeight.Succeeded()) { - iterPos[1] = polyHeight.result; + iterPos.y = polyHeight.result; } // Handle end of path and off-mesh links when close enough. @@ -304,7 +304,7 @@ public class TestNavmeshTool : Tool // Move position at the other side of the off-mesh link. iterPos = endPos; - iterPos[1] = m_navQuery.getPolyHeight(polys[0], iterPos).result; + iterPos.y = m_navQuery.getPolyHeight(polys[0], iterPos).result; } } @@ -331,7 +331,7 @@ public class TestNavmeshTool : Tool if (0 < m_polys.Count) { // In case of partial path, make sure the end point is clamped to the last polygon. - var epos = Vector3f.Of(m_epos[0], m_epos[1], m_epos[2]); + var epos = Vector3f.Of(m_epos.x, m_epos.y, m_epos.z); if (m_polys[m_polys.Count - 1] != m_endRef) { Result result = m_navQuery @@ -392,7 +392,7 @@ public class TestNavmeshTool : Tool .getPolyHeight(hit.result.path[hit.result.path.Count - 1], m_hitPos); if (result.Succeeded()) { - m_hitPos[1] = result.result; + m_hitPos.y = result.result; } } } @@ -423,8 +423,8 @@ public class TestNavmeshTool : Tool { if (m_sposSet && m_startRef != 0 && m_eposSet) { - float dx = m_epos[0] - m_spos[0]; - float dz = m_epos[2] - m_spos[2]; + float dx = m_epos.x - m_spos.x; + float dz = m_epos.z - m_spos.z; float dist = (float)Math.Sqrt(dx * dx + dz * dz); Result result = m_navQuery.findPolysAroundCircle(m_startRef, m_spos, dist, m_filter); @@ -439,25 +439,25 @@ public class TestNavmeshTool : Tool { if (m_sposSet && m_startRef != 0 && m_eposSet) { - float nx = (m_epos[2] - m_spos[2]) * 0.25f; - float nz = -(m_epos[0] - m_spos[0]) * 0.25f; + float nx = (m_epos.z - m_spos.z) * 0.25f; + float nz = -(m_epos.x - m_spos.x) * 0.25f; float agentHeight = m_sample != null ? m_sample.getSettingsUI().getAgentHeight() : 0; - m_queryPoly[0] = m_spos[0] + nx * 1.2f; - m_queryPoly[1] = m_spos[1] + agentHeight / 2; - m_queryPoly[2] = m_spos[2] + nz * 1.2f; + m_queryPoly[0] = m_spos.x + nx * 1.2f; + m_queryPoly[1] = m_spos.y + agentHeight / 2; + m_queryPoly[2] = m_spos.z + nz * 1.2f; - m_queryPoly[3] = m_spos[0] - nx * 1.3f; - m_queryPoly[4] = m_spos[1] + agentHeight / 2; - m_queryPoly[5] = m_spos[2] - nz * 1.3f; + m_queryPoly[3] = m_spos.x - nx * 1.3f; + m_queryPoly[4] = m_spos.y + agentHeight / 2; + m_queryPoly[5] = m_spos.z - nz * 1.3f; - m_queryPoly[6] = m_epos[0] - nx * 0.8f; - m_queryPoly[7] = m_epos[1] + agentHeight / 2; - m_queryPoly[8] = m_epos[2] - nz * 0.8f; + m_queryPoly[6] = m_epos.x - nx * 0.8f; + m_queryPoly[7] = m_epos.y + agentHeight / 2; + m_queryPoly[8] = m_epos.z - nz * 0.8f; - m_queryPoly[9] = m_epos[0] + nx; - m_queryPoly[10] = m_epos[1] + agentHeight / 2; - m_queryPoly[11] = m_epos[2] + nz; + m_queryPoly[9] = m_epos.x + nx; + m_queryPoly[10] = m_epos.y + agentHeight / 2; + m_queryPoly[11] = m_epos.z + nz; Result result = m_navQuery.findPolysAroundShape(m_startRef, m_queryPoly, m_filter); if (result.Succeeded()) @@ -486,8 +486,8 @@ public class TestNavmeshTool : Tool randomPoints.Clear(); if (m_sposSet && m_startRef != 0 && m_eposSet) { - float dx = m_epos[0] - m_spos[0]; - float dz = m_epos[2] - m_spos[2]; + float dx = m_epos.x - m_spos.x; + float dz = m_epos.z - m_spos.z; float dist = (float)Math.Sqrt(dx * dx + dz * dz); PolygonByCircleConstraint constraint = constrainByCircle ? PolygonByCircleConstraint.strict() @@ -564,7 +564,7 @@ public class TestNavmeshTool : Tool dd.begin(LINES, 3.0f); for (int i = 0; i < m_smoothPath.Count; ++i) { - dd.vertex(m_smoothPath[i][0], m_smoothPath[i][1] + 0.1f, m_smoothPath[i][2], spathCol); + dd.vertex(m_smoothPath[i].x, m_smoothPath[i].y + 0.1f, m_smoothPath[i].z, spathCol); } dd.end(); @@ -573,7 +573,7 @@ public class TestNavmeshTool : Tool /* if (m_pathIterNum) { - duDebugDrawNavMeshPoly(&dd, *m_navMesh, m_pathIterPolys[0], DebugDraw.duRGBA(255,255,255,128)); + duDebugDrawNavMeshPoly(&dd, *m_navMesh, m_pathIterPolys.x, DebugDraw.duRGBA(255,255,255,128)); dd.depthMask(false); dd.begin(DebugDrawPrimitives.LINES, 1.0f); @@ -582,17 +582,17 @@ public class TestNavmeshTool : Tool int curCol = DebugDraw.duRGBA(255,255,255,220); int steerCol = DebugDraw.duRGBA(0,192,255,220); - dd.vertex(m_prevIterPos[0],m_prevIterPos[1]-0.3f,m_prevIterPos[2], prevCol); - dd.vertex(m_prevIterPos[0],m_prevIterPos[1]+0.3f,m_prevIterPos[2], prevCol); + dd.vertex(m_prevIterPos.x,m_prevIterPos.y-0.3f,m_prevIterPos.z, prevCol); + dd.vertex(m_prevIterPos.x,m_prevIterPos.y+0.3f,m_prevIterPos.z, prevCol); - dd.vertex(m_iterPos[0],m_iterPos[1]-0.3f,m_iterPos[2], curCol); - dd.vertex(m_iterPos[0],m_iterPos[1]+0.3f,m_iterPos[2], curCol); + dd.vertex(m_iterPos.x,m_iterPos.y-0.3f,m_iterPos.z, curCol); + dd.vertex(m_iterPos.x,m_iterPos.y+0.3f,m_iterPos.z, curCol); - dd.vertex(m_prevIterPos[0],m_prevIterPos[1]+0.3f,m_prevIterPos[2], prevCol); - dd.vertex(m_iterPos[0],m_iterPos[1]+0.3f,m_iterPos[2], prevCol); + dd.vertex(m_prevIterPos.x,m_prevIterPos.y+0.3f,m_prevIterPos.z, prevCol); + dd.vertex(m_iterPos.x,m_iterPos.y+0.3f,m_iterPos.z, prevCol); - dd.vertex(m_prevIterPos[0],m_prevIterPos[1]+0.3f,m_prevIterPos[2], steerCol); - dd.vertex(m_steerPos[0],m_steerPos[1]+0.3f,m_steerPos[2], steerCol); + dd.vertex(m_prevIterPos.x,m_prevIterPos.y+0.3f,m_prevIterPos.z, steerCol); + dd.vertex(m_steerPos.x,m_steerPos.y+0.3f,m_steerPos.z, steerCol); for (int i = 0; i < m_steerPointCount-1; ++i) { @@ -638,10 +638,10 @@ public class TestNavmeshTool : Tool col = spathCol; } - dd.vertex(straightPathItem.getPos()[0], straightPathItem.getPos()[1] + 0.4f, - straightPathItem.getPos()[2], col); - dd.vertex(straightPathItem2.getPos()[0], straightPathItem2.getPos()[1] + 0.4f, - straightPathItem2.getPos()[2], col); + dd.vertex(straightPathItem.getPos().x, straightPathItem.getPos().y + 0.4f, + straightPathItem.getPos().z, col); + dd.vertex(straightPathItem2.getPos().x, straightPathItem2.getPos().y + 0.4f, + straightPathItem2.getPos().z, col); } dd.end(); @@ -667,8 +667,8 @@ public class TestNavmeshTool : Tool col = spathCol; } - dd.vertex(straightPathItem.getPos()[0], straightPathItem.getPos()[1] + 0.4f, - straightPathItem.getPos()[2], col); + dd.vertex(straightPathItem.getPos().x, straightPathItem.getPos().y + 0.4f, + straightPathItem.getPos().z, col); } dd.end(); @@ -696,10 +696,10 @@ public class TestNavmeshTool : Tool { StraightPathItem straightPathItem = m_straightPath[i]; StraightPathItem straightPathItem2 = m_straightPath[i + 1]; - dd.vertex(straightPathItem.getPos()[0], straightPathItem.getPos()[1] + 0.4f, - straightPathItem.getPos()[2], spathCol); - dd.vertex(straightPathItem2.getPos()[0], straightPathItem2.getPos()[1] + 0.4f, - straightPathItem2.getPos()[2], spathCol); + dd.vertex(straightPathItem.getPos().x, straightPathItem.getPos().y + 0.4f, + straightPathItem.getPos().z, spathCol); + dd.vertex(straightPathItem2.getPos().x, straightPathItem2.getPos().y + 0.4f, + straightPathItem2.getPos().z, spathCol); } dd.end(); @@ -707,8 +707,8 @@ public class TestNavmeshTool : Tool for (int i = 0; i < m_straightPath.Count; ++i) { StraightPathItem straightPathItem = m_straightPath[i]; - dd.vertex(straightPathItem.getPos()[0], straightPathItem.getPos()[1] + 0.4f, - straightPathItem.getPos()[2], spathCol); + dd.vertex(straightPathItem.getPos().x, straightPathItem.getPos().y + 0.4f, + straightPathItem.getPos().z, spathCol); } dd.end(); @@ -717,10 +717,10 @@ public class TestNavmeshTool : Tool { int hitCol = duRGBA(0, 0, 0, 128); dd.begin(LINES, 2.0f); - dd.vertex(m_hitPos[0], m_hitPos[1] + 0.4f, m_hitPos[2], hitCol); - dd.vertex(m_hitPos[0] + m_hitNormal[0] * agentRadius, - m_hitPos[1] + 0.4f + m_hitNormal[1] * agentRadius, - m_hitPos[2] + m_hitNormal[2] * agentRadius, hitCol); + dd.vertex(m_hitPos.x, m_hitPos.y + 0.4f, m_hitPos.z, hitCol); + dd.vertex(m_hitPos.x + m_hitNormal.x * agentRadius, + m_hitPos.y + 0.4f + m_hitNormal.y * agentRadius, + m_hitPos.z + m_hitNormal.z * agentRadius, hitCol); dd.end(); } @@ -733,15 +733,15 @@ public class TestNavmeshTool : Tool dd.depthMask(false); if (m_spos != Vector3f.Zero) { - dd.debugDrawCircle(m_spos[0], m_spos[1] + agentHeight / 2, m_spos[2], m_distanceToWall, + dd.debugDrawCircle(m_spos.x, m_spos.y + agentHeight / 2, m_spos.z, m_distanceToWall, duRGBA(64, 16, 0, 220), 2.0f); } if (m_hitPos != Vector3f.Zero) { dd.begin(LINES, 3.0f); - dd.vertex(m_hitPos[0], m_hitPos[1] + 0.02f, m_hitPos[2], duRGBA(0, 0, 0, 192)); - dd.vertex(m_hitPos[0], m_hitPos[1] + agentHeight, m_hitPos[2], duRGBA(0, 0, 0, 192)); + dd.vertex(m_hitPos.x, m_hitPos.y + 0.02f, m_hitPos.z, duRGBA(0, 0, 0, 192)); + dd.vertex(m_hitPos.x, m_hitPos.y + agentHeight, m_hitPos.z, duRGBA(0, 0, 0, 192)); dd.end(); } @@ -760,7 +760,7 @@ public class TestNavmeshTool : Tool dd.depthMask(false); Vector3f p0 = getPolyCenter(m_navMesh, m_parent[i]); Vector3f p1 = getPolyCenter(m_navMesh, m_polys[i]); - dd.debugDrawArc(p0[0], p0[1], p0[2], p1[0], p1[1], p1[2], 0.25f, 0.0f, 0.4f, + dd.debugDrawArc(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z, 0.25f, 0.0f, 0.4f, duRGBA(0, 0, 0, 128), 2.0f); dd.depthMask(true); } @@ -772,10 +772,10 @@ public class TestNavmeshTool : Tool if (m_sposSet && m_eposSet) { dd.depthMask(false); - float dx = m_epos[0] - m_spos[0]; - float dz = m_epos[2] - m_spos[2]; + float dx = m_epos.x - m_spos.x; + float dz = m_epos.z - m_spos.z; float dist = (float)Math.Sqrt(dx * dx + dz * dz); - dd.debugDrawCircle(m_spos[0], m_spos[1] + agentHeight / 2, m_spos[2], dist, duRGBA(64, 16, 0, 220), + dd.debugDrawCircle(m_spos.x, m_spos.y + agentHeight / 2, m_spos.z, dist, duRGBA(64, 16, 0, 220), 2.0f); dd.depthMask(true); } @@ -793,7 +793,7 @@ public class TestNavmeshTool : Tool dd.depthMask(false); Vector3f p0 = getPolyCenter(m_navMesh, m_parent[i]); Vector3f p1 = getPolyCenter(m_navMesh, m_polys[i]); - dd.debugDrawArc(p0[0], p0[1], p0[2], p1[0], p1[1], p1[2], 0.25f, 0.0f, 0.4f, + dd.debugDrawArc(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z, 0.25f, 0.0f, 0.4f, duRGBA(0, 0, 0, 128), 2.0f); dd.depthMask(true); } @@ -830,7 +830,7 @@ public class TestNavmeshTool : Tool dd.depthMask(false); Vector3f p0 = getPolyCenter(m_navMesh, m_parent[i]); Vector3f p1 = getPolyCenter(m_navMesh, m_polys[i]); - dd.debugDrawArc(p0[0], p0[1], p0[2], p1[0], p1[1], p1[2], 0.25f, 0.0f, 0.4f, + dd.debugDrawArc(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z, 0.25f, 0.0f, 0.4f, duRGBA(0, 0, 0, 128), 2.0f); dd.depthMask(true); } @@ -857,7 +857,7 @@ public class TestNavmeshTool : Tool Vector3f delta = vSub(s3, s.vmin); Vector3f p0 = vMad(s.vmin, delta, 0.5f); - Vector3f norm = Vector3f.Of(delta[2], 0, -delta[0]); + Vector3f norm = Vector3f.Of(delta.z, 0, -delta.x); vNormalize(ref norm); Vector3f p1 = vMad(p0, norm, agentRadius * 0.5f); // Skip backfacing segments. @@ -875,8 +875,8 @@ public class TestNavmeshTool : Tool col = duRGBA(96, 32, 16, 192); } - dd.vertex(p0[0], p0[1] + agentClimb, p0[2], col); - dd.vertex(p1[0], p1[1] + agentClimb, p1[2], col); + dd.vertex(p0.x, p0.y + agentClimb, p0.z, col); + dd.vertex(p1.x, p1.y + agentClimb, p1.z, col); dd.vertex(s[0], s[1] + agentClimb, s[2], col); dd.vertex(s[3], s[4] + agentClimb, s[5], col); @@ -893,7 +893,7 @@ public class TestNavmeshTool : Tool if (m_sposSet) { dd.depthMask(false); - dd.debugDrawCircle(m_spos[0], m_spos[1] + agentHeight / 2, m_spos[2], m_neighbourhoodRadius, + dd.debugDrawCircle(m_spos.x, m_spos.y + agentHeight / 2, m_spos.z, m_neighbourhoodRadius, duRGBA(64, 16, 0, 220), 2.0f); dd.depthMask(true); } @@ -906,17 +906,17 @@ public class TestNavmeshTool : Tool int col = duRGBA(64, 16, 0, 220); foreach (Vector3f point in randomPoints) { - dd.vertex(point[0], point[1] + 0.1f, point[2], col); + dd.vertex(point.x, point.y + 0.1f, point.z, col); } dd.end(); if (m_sposSet && m_eposSet) { dd.depthMask(false); - float dx = m_epos[0] - m_spos[0]; - float dz = m_epos[2] - m_spos[2]; + float dx = m_epos.x - m_spos.x; + float dz = m_epos.z - m_spos.z; float dist = (float)Math.Sqrt(dx * dx + dz * dz); - dd.debugDrawCircle(m_spos[0], m_spos[1] + agentHeight / 2, m_spos[2], dist, duRGBA(64, 16, 0, 220), + dd.debugDrawCircle(m_spos.x, m_spos.y + agentHeight / 2, m_spos.z, dist, duRGBA(64, 16, 0, 220), 2.0f); dd.depthMask(true); } @@ -932,16 +932,16 @@ public class TestNavmeshTool : Tool float c = m_sample.getSettingsUI().getAgentMaxClimb(); dd.depthMask(false); // Agent dimensions. - dd.debugDrawCylinderWire(pos[0] - r, pos[1] + 0.02f, pos[2] - r, pos[0] + r, pos[1] + h, pos[2] + r, col, 2.0f); - dd.debugDrawCircle(pos[0], pos[1] + c, pos[2], r, duRGBA(0, 0, 0, 64), 1.0f); + dd.debugDrawCylinderWire(pos.x - r, pos.y + 0.02f, pos.z - r, pos.x + r, pos.y + h, pos.z + r, col, 2.0f); + dd.debugDrawCircle(pos.x, pos.y + c, pos.z, r, duRGBA(0, 0, 0, 64), 1.0f); int colb = duRGBA(0, 0, 0, 196); dd.begin(LINES); - dd.vertex(pos[0], pos[1] - c, pos[2], colb); - dd.vertex(pos[0], pos[1] + c, pos[2], colb); - dd.vertex(pos[0] - r / 2, pos[1] + 0.02f, pos[2], colb); - dd.vertex(pos[0] + r / 2, pos[1] + 0.02f, pos[2], colb); - dd.vertex(pos[0], pos[1] + 0.02f, pos[2] - r / 2, colb); - dd.vertex(pos[0], pos[1] + 0.02f, pos[2] + r / 2, colb); + dd.vertex(pos.x, pos.y - c, pos.z, colb); + dd.vertex(pos.x, pos.y + c, pos.z, colb); + dd.vertex(pos.x - r / 2, pos.y + 0.02f, pos.z, colb); + dd.vertex(pos.x + r / 2, pos.y + 0.02f, pos.z, colb); + dd.vertex(pos.x, pos.y + 0.02f, pos.z - r / 2, colb); + dd.vertex(pos.x, pos.y + 0.02f, pos.z + r / 2, colb); dd.end(); dd.depthMask(true); } @@ -958,15 +958,15 @@ public class TestNavmeshTool : Tool for (int i = 0; i < poly.vertCount; ++i) { int v = poly.verts[i] * 3; - center[0] += tile.data.verts[v]; - center[1] += tile.data.verts[v + 1]; - center[2] += tile.data.verts[v + 2]; + center.x += tile.data.verts[v]; + center.y += tile.data.verts[v + 1]; + center.z += tile.data.verts[v + 2]; } float s = 1.0f / poly.vertCount; - center[0] *= s; - center[1] *= s; - center[2] *= s; + center.x *= s; + center.y *= s; + center.z *= s; } return center; @@ -1016,4 +1016,4 @@ public class TestNavmeshTool : Tool } } } -} \ No newline at end of file +} diff --git a/src/DotRecast.Recast.Demo/UI/RcSettingsView.cs b/src/DotRecast.Recast.Demo/UI/RcSettingsView.cs index 58bdbbb..cc5020b 100644 --- a/src/DotRecast.Recast.Demo/UI/RcSettingsView.cs +++ b/src/DotRecast.Recast.Demo/UI/RcSettingsView.cs @@ -378,4 +378,4 @@ public class RcSettingsView : IRcView { return navMeshInputTrigerred; } -} \ No newline at end of file +}