forked from bit/DotRecastNetSim
float[][] -> Vector3f[]
This commit is contained in:
parent
9da140feac
commit
e8e328d6af
|
@ -304,8 +304,8 @@ namespace DotRecast.Recast
|
||||||
|
|
||||||
if (axis.y * axis.y > EPSILON)
|
if (axis.y * axis.y > EPSILON)
|
||||||
{
|
{
|
||||||
float[][] rectangleOnStartPlane = ArrayUtils.Of<float>(4, 3);
|
Vector3f[] rectangleOnStartPlane = new Vector3f[4];
|
||||||
float[][] rectangleOnEndPlane = ArrayUtils.Of<float>(4, 3);
|
Vector3f[] rectangleOnEndPlane = new Vector3f[4];
|
||||||
float ds = Dot(axis, start);
|
float ds = Dot(axis, start);
|
||||||
float de = Dot(axis, end);
|
float de = Dot(axis, end);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
|
@ -315,13 +315,13 @@ namespace DotRecast.Recast
|
||||||
Vector3f a = Vector3f.Of(x, rectangle[4], z);
|
Vector3f a = Vector3f.Of(x, rectangle[4], z);
|
||||||
float dotAxisA = Dot(axis, a);
|
float dotAxisA = Dot(axis, a);
|
||||||
float t = (ds - dotAxisA) / axis.y;
|
float t = (ds - dotAxisA) / axis.y;
|
||||||
rectangleOnStartPlane[i][0] = x;
|
rectangleOnStartPlane[i].x = x;
|
||||||
rectangleOnStartPlane[i][1] = rectangle[4] + t;
|
rectangleOnStartPlane[i].y = rectangle[4] + t;
|
||||||
rectangleOnStartPlane[i][2] = z;
|
rectangleOnStartPlane[i].z = z;
|
||||||
t = (de - dotAxisA) / axis.y;
|
t = (de - dotAxisA) / axis.y;
|
||||||
rectangleOnEndPlane[i][0] = x;
|
rectangleOnEndPlane[i].x = x;
|
||||||
rectangleOnEndPlane[i][1] = rectangle[4] + t;
|
rectangleOnEndPlane[i].y = rectangle[4] + t;
|
||||||
rectangleOnEndPlane[i][2] = z;
|
rectangleOnEndPlane[i].z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
|
@ -334,19 +334,19 @@ namespace DotRecast.Recast
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static float[] CylinderCapIntersection(Vector3f start, float radiusSqr, float[] s, int i, float[][] rectangleOnPlane)
|
private static float[] CylinderCapIntersection(Vector3f start, float radiusSqr, float[] s, int i, Vector3f[] rectangleOnPlane)
|
||||||
{
|
{
|
||||||
int j = (i + 1) % 4;
|
int j = (i + 1) % 4;
|
||||||
// Ray against sphere intersection
|
// Ray against sphere intersection
|
||||||
var m = Vector3f.Of(
|
var m = Vector3f.Of(
|
||||||
rectangleOnPlane[i][0] - start.x,
|
rectangleOnPlane[i].x - start.x,
|
||||||
rectangleOnPlane[i][1] - start.y,
|
rectangleOnPlane[i].y - start.y,
|
||||||
rectangleOnPlane[i][2] - start.z
|
rectangleOnPlane[i].z - start.z
|
||||||
);
|
);
|
||||||
var d = Vector3f.Of(
|
var d = Vector3f.Of(
|
||||||
rectangleOnPlane[j][0] - rectangleOnPlane[i][0],
|
rectangleOnPlane[j].x - rectangleOnPlane[i].x,
|
||||||
rectangleOnPlane[j][1] - rectangleOnPlane[i][1],
|
rectangleOnPlane[j].y - rectangleOnPlane[i].y,
|
||||||
rectangleOnPlane[j][2] - rectangleOnPlane[i][2]
|
rectangleOnPlane[j].z - rectangleOnPlane[i].z
|
||||||
);
|
);
|
||||||
float dl = Dot(d, d);
|
float dl = Dot(d, d);
|
||||||
float b = Dot(m, d) / dl;
|
float b = Dot(m, d) / dl;
|
||||||
|
@ -361,8 +361,8 @@ namespace DotRecast.Recast
|
||||||
{
|
{
|
||||||
t1 = Math.Max(0, t1);
|
t1 = Math.Max(0, t1);
|
||||||
t2 = Math.Min(1, t2);
|
t2 = Math.Min(1, t2);
|
||||||
float y1 = rectangleOnPlane[i][1] + t1 * d.y;
|
float y1 = rectangleOnPlane[i].y + t1 * d.y;
|
||||||
float y2 = rectangleOnPlane[i][1] + t2 * d.y;
|
float y2 = rectangleOnPlane[i].y + t2 * d.y;
|
||||||
float[] y = { Math.Min(y1, y2), Math.Max(y1, y2) };
|
float[] y = { Math.Min(y1, y2), Math.Max(y1, y2) };
|
||||||
s = MergeIntersections(s, y);
|
s = MergeIntersections(s, y);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue