From 81330a6b68d307937c262368a42a3fa4e9ad4207 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:10:23 +0800 Subject: + NavMeshTest --- .../NavMeshComponents/Scripts/NavMeshModifier.cs | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs (limited to 'Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs') diff --git a/Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs b/Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs new file mode 100644 index 0000000..f32e80c --- /dev/null +++ b/Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; + +namespace UnityEngine.AI +{ + [ExecuteInEditMode] + [AddComponentMenu("Navigation/NavMeshModifier", 32)] + [HelpURL("https://github.com/Unity-Technologies/NavMeshComponents#documentation-draft")] + public class NavMeshModifier : MonoBehaviour + { + [SerializeField] + bool m_OverrideArea; + public bool overrideArea { get { return m_OverrideArea; } set { m_OverrideArea = value; } } + + [SerializeField] + int m_Area; + public int area { get { return m_Area; } set { m_Area = value; } } + + [SerializeField] + bool m_IgnoreFromBuild; + public bool ignoreFromBuild { get { return m_IgnoreFromBuild; } set { m_IgnoreFromBuild = value; } } + + // List of agent types the modifier is applied for. + // Special values: empty == None, m_AffectedAgents[0] =-1 == All. + [SerializeField] + List m_AffectedAgents = new List(new int[] { -1 }); // Default value is All + + static readonly List s_NavMeshModifiers = new List(); + + public static List activeModifiers + { + get { return s_NavMeshModifiers; } + } + + void OnEnable() + { + if (!s_NavMeshModifiers.Contains(this)) + s_NavMeshModifiers.Add(this); + } + + void OnDisable() + { + s_NavMeshModifiers.Remove(this); + } + + public bool AffectsAgentType(int agentTypeID) + { + if (m_AffectedAgents.Count == 0) + return false; + if (m_AffectedAgents[0] == -1) + return true; + return m_AffectedAgents.IndexOf(agentTypeID) != -1; + } + } +} -- cgit v1.1-26-g67d0