Usage example
Below presented an example of how to search for a path from A to B using Nav3DPath.
using Nav3D.API;
using System;
using System.Linq;
using UnityEngine;
class YourGameScenario : MonoBehaviour
{
#region Attributes
Vector3[] m_FoundPath;
#endregion
#region Unity events
void Start()
{
Nav3DManager.OnNav3DInit += () =>
{
Vector3 a = new Vector3(-10, -10, -10);
Vector3 b = new Vector3(10, 10, 10);
FindPath(a, b, PrintPath);
};
}
void OnDrawGizmos()
{
if (!Application.isPlaying || !enabled)
return;
if (m_FoundPath != null && m_FoundPath.Any())
{
for (int i = 0; i < m_FoundPath.Length - 1; i++)
Gizmos.DrawLine(m_FoundPath[i], m_FoundPath[i + 1]);
}
}
#endregion
#region Service methods
//your method for pathfinding from A to B
void FindPath(Vector3 _A, Vector3 _B, Action _OnPathFound)
{
//create Nav3DPathPath instance
Nav3DPath path = new Nav3DPath(gameObject.name);
//perform pathfinding from _A to _B
path.Find(
_A,
_B,
_OnSuccess: () =>
{
//notify that path was found
Debug.Log("Path successfully found!");
//invoke callback
_OnPathFound(path.Trajectory);
//finish work with Nav3DPath instance
path.Dispose();
}
);
}
void PrintPath(Vector3[] _Path)
{
m_FoundPath = _Path;
Debug.Log($"Path points: {string.Join(", ", m_FoundPath)}");
}
#endregion
}