113 lines
3.0 KiB
C#
113 lines
3.0 KiB
C#
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.AI;
|
||
|
using UnityEngine.TestTools;
|
||
|
using NUnit.Framework;
|
||
|
using System.Collections;
|
||
|
|
||
|
[TestFixture]
|
||
|
public class NavMeshSurfaceModifierTests
|
||
|
{
|
||
|
NavMeshSurface surface;
|
||
|
NavMeshModifier modifier;
|
||
|
|
||
|
[SetUp]
|
||
|
public void CreatePlaneWithModifier()
|
||
|
{
|
||
|
var plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||
|
surface = plane.AddComponent<NavMeshSurface>();
|
||
|
modifier = plane.AddComponent<NavMeshModifier>();
|
||
|
}
|
||
|
|
||
|
[TearDown]
|
||
|
public void DestroyPlaneWithModifier()
|
||
|
{
|
||
|
GameObject.DestroyImmediate(modifier.gameObject);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierIgnoreAffectsSelf()
|
||
|
{
|
||
|
modifier.ignoreFromBuild = true;
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
Assert.IsFalse(NavMeshSurfaceTests.HasNavMeshAtOrigin());
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierIgnoreAffectsChild()
|
||
|
{
|
||
|
modifier.ignoreFromBuild = true;
|
||
|
modifier.GetComponent<MeshRenderer>().enabled = false;
|
||
|
|
||
|
var childPlane = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||
|
childPlane.transform.SetParent(modifier.transform);
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
Assert.IsFalse(NavMeshSurfaceTests.HasNavMeshAtOrigin());
|
||
|
GameObject.DestroyImmediate(childPlane);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierIgnoreDoesNotAffectSibling()
|
||
|
{
|
||
|
modifier.ignoreFromBuild = true;
|
||
|
modifier.GetComponent<MeshRenderer>().enabled = false;
|
||
|
|
||
|
var siblingPlane = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin());
|
||
|
GameObject.DestroyImmediate(siblingPlane);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierOverrideAreaAffectsSelf()
|
||
|
{
|
||
|
modifier.area = 4;
|
||
|
modifier.overrideArea = true;
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
var expectedAreaMask = 1 << 4;
|
||
|
Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask));
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierOverrideAreaAffectsChild()
|
||
|
{
|
||
|
modifier.area = 4;
|
||
|
modifier.overrideArea = true;
|
||
|
modifier.GetComponent<MeshRenderer>().enabled = false;
|
||
|
|
||
|
var childPlane = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||
|
childPlane.transform.SetParent(modifier.transform);
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
var expectedAreaMask = 1 << 4;
|
||
|
Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask));
|
||
|
GameObject.DestroyImmediate(childPlane);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void ModifierOverrideAreaDoesNotAffectSibling()
|
||
|
{
|
||
|
modifier.area = 4;
|
||
|
modifier.overrideArea = true;
|
||
|
modifier.GetComponent<MeshRenderer>().enabled = false;
|
||
|
|
||
|
var siblingPlane = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
||
|
|
||
|
surface.BuildNavMesh();
|
||
|
|
||
|
var expectedAreaMask = 1;
|
||
|
Assert.IsTrue(NavMeshSurfaceTests.HasNavMeshAtOrigin(expectedAreaMask));
|
||
|
GameObject.DestroyImmediate(siblingPlane);
|
||
|
}
|
||
|
}
|
||
|
#endif
|