forked from mirror/DotRecast
VDot -> Vector3f.Dot
This commit is contained in:
parent
e68d6ab5fa
commit
e55f37abca
|
@ -37,7 +37,7 @@ namespace DotRecast.Core
|
||||||
|
|
||||||
// Compute denominator d. If d <= 0, segment is parallel to or points
|
// Compute denominator d. If d <= 0, segment is parallel to or points
|
||||||
// away from triangle, so exit early
|
// away from triangle, so exit early
|
||||||
float d = VDot(qp, norm);
|
float d = Vector3f.Dot(qp, norm);
|
||||||
if (d <= 0.0f)
|
if (d <= 0.0f)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -47,7 +47,7 @@ namespace DotRecast.Core
|
||||||
// intersects iff 0 <= t. Segment intersects iff 0 <= t <= 1. Delay
|
// intersects iff 0 <= t. Segment intersects iff 0 <= t <= 1. Delay
|
||||||
// dividing by d until intersection has been found to pierce triangle
|
// dividing by d until intersection has been found to pierce triangle
|
||||||
Vector3f ap = sp.Subtract(a);
|
Vector3f ap = sp.Subtract(a);
|
||||||
float t = VDot(ap, norm);
|
float t = Vector3f.Dot(ap, norm);
|
||||||
if (t < 0.0f)
|
if (t < 0.0f)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
@ -60,13 +60,13 @@ namespace DotRecast.Core
|
||||||
|
|
||||||
// Compute barycentric coordinate components and test if within bounds
|
// Compute barycentric coordinate components and test if within bounds
|
||||||
Vector3f e = Vector3f.Cross(qp, ap);
|
Vector3f e = Vector3f.Cross(qp, ap);
|
||||||
v = VDot(ac, e);
|
v = Vector3f.Dot(ac, e);
|
||||||
if (v < 0.0f || v > d)
|
if (v < 0.0f || v > d)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = -VDot(ab, e);
|
w = -Vector3f.Dot(ab, e);
|
||||||
if (w < 0.0f || v + w > d)
|
if (w < 0.0f || v + w > d)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -52,10 +52,6 @@ namespace DotRecast.Core
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static float VDot(Vector3f v1, Vector3f v2)
|
|
||||||
{
|
|
||||||
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float Sqr(float f)
|
public static float Sqr(float f)
|
||||||
{
|
{
|
||||||
|
@ -125,8 +121,6 @@ namespace DotRecast.Core
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void VSet(ref Vector3f @out, float a, float b, float c)
|
public static void VSet(ref Vector3f @out, float a, float b, float c)
|
||||||
{
|
{
|
||||||
@out.x = a;
|
@out.x = a;
|
||||||
|
|
|
@ -93,13 +93,13 @@ namespace DotRecast.Core
|
||||||
default: throw new IndexOutOfRangeException($"{index}-{value}");
|
default: throw new IndexOutOfRangeException($"{index}-{value}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public readonly float Length()
|
public readonly float Length()
|
||||||
{
|
{
|
||||||
return (float)Math.Sqrt(x * x + y * y + z * z);
|
return (float)Math.Sqrt(x * x + y * y + z * z);
|
||||||
}
|
}
|
||||||
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
public readonly Vector3f Subtract(Vector3f right)
|
public readonly Vector3f Subtract(Vector3f right)
|
||||||
{
|
{
|
||||||
|
@ -230,6 +230,11 @@ namespace DotRecast.Core
|
||||||
return (float)Math.Sqrt(dx * dx + dy * dy + dz * dz);
|
return (float)Math.Sqrt(dx * dx + dy * dy + dz * dz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static float Dot(Vector3f v1, Vector3f v2)
|
||||||
|
{
|
||||||
|
return (v1.x * v2.x) + (v1.y * v2.y)
|
||||||
|
+ (v1.z * v2.z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -226,7 +226,7 @@ public class TestNavmeshTool : Tool
|
||||||
|
|
||||||
// Find movement delta.
|
// Find movement delta.
|
||||||
Vector3f delta = steerTarget.steerPos.Subtract(iterPos);
|
Vector3f delta = steerTarget.steerPos.Subtract(iterPos);
|
||||||
float len = (float)Math.Sqrt(VDot(delta, delta));
|
float len = (float)Math.Sqrt(Vector3f.Dot(delta, delta));
|
||||||
// If the steer target is end of path or off-mesh link, do not move past the location.
|
// If the steer target is end of path or off-mesh link, do not move past the location.
|
||||||
if ((endOfPath || offMeshConnection) && len < STEP_SIZE)
|
if ((endOfPath || offMeshConnection) && len < STEP_SIZE)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue