107 lines
3.1 KiB
C#
107 lines
3.1 KiB
C#
|
#if UNITY_EDITOR || UNITY_STANDALONE
|
||
|
|
||
|
using System.Collections;
|
||
|
using NUnit.Framework;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.AI;
|
||
|
using UnityEngine.TestTools;
|
||
|
|
||
|
namespace Unity.AI.Navigation.Tests
|
||
|
{
|
||
|
class NavMeshSurfaceAgentTests
|
||
|
{
|
||
|
NavMeshSurface m_Surface;
|
||
|
NavMeshAgent m_Agent;
|
||
|
|
||
|
[SetUp]
|
||
|
public void Setup()
|
||
|
{
|
||
|
m_Surface = GameObject.CreatePrimitive(PrimitiveType.Plane).AddComponent<NavMeshSurface>();
|
||
|
}
|
||
|
|
||
|
[TearDown]
|
||
|
public void TearDown()
|
||
|
{
|
||
|
Object.DestroyImmediate(m_Agent.gameObject);
|
||
|
Object.DestroyImmediate(m_Surface.gameObject);
|
||
|
m_Agent = null;
|
||
|
m_Surface = null;
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
public void AgentIdentifiesSurfaceOwner()
|
||
|
{
|
||
|
m_Surface.BuildNavMesh();
|
||
|
|
||
|
m_Agent = new GameObject("Agent").AddComponent<NavMeshAgent>();
|
||
|
Assert.AreEqual(m_Surface, m_Agent.navMeshOwner);
|
||
|
Assert.IsTrue(m_Agent.isOnNavMesh);
|
||
|
}
|
||
|
|
||
|
[Test]
|
||
|
[Ignore("1012991 : Missing functionality for notifying the NavMeshAgent about the removal of the NavMesh.")]
|
||
|
public void AgentDetachesAndAttachesToSurface()
|
||
|
{
|
||
|
m_Surface.BuildNavMesh();
|
||
|
|
||
|
m_Agent = new GameObject("Agent").AddComponent<NavMeshAgent>();
|
||
|
Assert.AreEqual(m_Surface, m_Agent.navMeshOwner);
|
||
|
Assert.IsTrue(m_Agent.isOnNavMesh);
|
||
|
|
||
|
m_Surface.enabled = false;
|
||
|
Assert.IsNull(m_Agent.navMeshOwner);
|
||
|
Assert.IsFalse(m_Agent.isOnNavMesh);
|
||
|
|
||
|
m_Surface.enabled = true;
|
||
|
Assert.AreEqual(m_Surface, m_Agent.navMeshOwner);
|
||
|
Assert.IsTrue(m_Agent.isOnNavMesh);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
[Test]
|
||
|
public void AgentIsOnNavMeshWhenMatchingAgentTypeID()
|
||
|
{
|
||
|
m_Surface.agentTypeID = 1234;
|
||
|
m_Surface.BuildNavMesh();
|
||
|
|
||
|
m_Agent = new GameObject("Agent").AddComponent<NavMeshAgent>();
|
||
|
Assert.IsFalse(m_Agent.isOnNavMesh);
|
||
|
|
||
|
m_Agent.agentTypeID = 1234;
|
||
|
Assert.IsTrue(m_Agent.isOnNavMesh);
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
[UnityTest]
|
||
|
public IEnumerator AgentAlignsToSurfaceNextFrame()
|
||
|
{
|
||
|
m_Surface.transform.rotation = new Quaternion(-0.679622f, 0.351242f, -0.373845f, 0.524388f);
|
||
|
m_Surface.BuildNavMesh();
|
||
|
|
||
|
m_Agent = new GameObject("Agent").AddComponent<NavMeshAgent>();
|
||
|
|
||
|
yield return null;
|
||
|
|
||
|
var residual = m_Surface.transform.up - m_Agent.transform.up;
|
||
|
Assert.IsTrue(residual.magnitude < 0.01f);
|
||
|
}
|
||
|
|
||
|
[UnityTest]
|
||
|
public IEnumerator AgentDoesNotAlignToSurfaceNextFrame()
|
||
|
{
|
||
|
m_Surface.transform.rotation = new Quaternion(-0.679622f, 0.351242f, -0.373845f, 0.524388f);
|
||
|
m_Surface.BuildNavMesh();
|
||
|
|
||
|
m_Agent = new GameObject("Agent").AddComponent<NavMeshAgent>();
|
||
|
m_Agent.updateUpAxis = false;
|
||
|
|
||
|
yield return null;
|
||
|
|
||
|
var residual = Vector3.up - m_Agent.transform.up;
|
||
|
Assert.IsTrue(residual.magnitude < 0.01f);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|