public void Test3DCollision() { PolygonMesh.PolygonMeshCollisionResult Result = PolygonMesh.PolygonCollisionSAT(Player, CollisionBox, Vector3.Zero); Assert.IsTrue(Result.Collided); Player.Offset(0, 5, 0); Result = PolygonMesh.PolygonCollisionSAT(Player, CollisionBox, Vector3.Zero); Assert.AreEqual(-1, Result.Distance); }
private void LinkAITunnelTogether() { foreach (AITunnel ActiveTunnel in ListAITunnel) { for (int T = ListAITunnel.Count - 1; T >= 0; --T) { if (ListAITunnel[T] == ActiveTunnel) { continue; } float CurrentPosition = Vector3.Dot(ListAITunnel[T].Forward, ActiveTunnel.Position); float OtherPosition = Vector3.Dot(ListAITunnel[T].Forward, ListAITunnel[T].Position); if (CurrentPosition < OtherPosition && PolygonMesh.PolygonCollisionSAT(ActiveTunnel.CollisionBox, ListAITunnel[T].CollisionBox, Vector3.Zero).Collided) { ActiveTunnel.ListNextAITunnel.Add(ListAITunnel[T]); } } } }