Files
sbox-public/engine/Sandbox.Test/System/PlaneTest.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

47 lines
1.1 KiB
C#

namespace TestSystem;
[TestClass]
public class PlaneTest
{
[TestMethod]
public void TraceStraightDown()
{
var plane = new Plane( Vector3.Down * 10.0f, Vector3.Up );
var tr = plane.Trace( new Ray( Vector3.Zero, Vector3.Down ) );
Assert.IsTrue( tr.HasValue );
Assert.AreEqual( tr.Value, Vector3.Down * 10.0f );
}
[TestMethod]
public void TraceStraightUp()
{
var plane = new Plane( Vector3.Up * 10.0f, Vector3.Down );
var tr = plane.Trace( new Ray( Vector3.Zero, Vector3.Up ) );
Assert.IsTrue( tr.HasValue );
Assert.AreEqual( tr.Value, Vector3.Up * 10.0f );
}
[TestMethod]
public void TraceBackSide()
{
var plane = new Plane( Vector3.Down * 10.0f, Vector3.Up );
var tr = plane.Trace( new Ray( Vector3.Zero, Vector3.Up ) );
Assert.IsFalse( tr.HasValue );
tr = plane.Trace( new Ray( Vector3.Zero, Vector3.Right ) );
Assert.IsFalse( tr.HasValue );
// Plane is behind ray origin, ray is facing away, it shouldn't hit
tr = plane.Trace( new Ray( Vector3.Zero, Vector3.Up ), true );
Assert.IsFalse( tr.HasValue );
tr = plane.Trace( new Ray( Vector3.One, Vector3.Right ), true );
Assert.IsFalse( tr.HasValue );
}
}