summaryrefslogtreecommitdiff
path: root/Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-23 10:10:23 +0800
committerchai <215380520@qq.com>2024-05-23 10:10:23 +0800
commit81330a6b68d307937c262368a42a3fa4e9ad4207 (patch)
tree0616a08be385794e062fb616df4ffb503631ee08 /Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs
parent8722a9920c1f6119bf6e769cba270e63097f8e25 (diff)
+ NavMeshTest
Diffstat (limited to 'Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs')
-rw-r--r--Other/NavMeshTest/Assets/NavMeshComponents/Scripts/NavMeshModifier.cs54
1 files changed, 54 insertions, 0 deletions
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<int> m_AffectedAgents = new List<int>(new int[] { -1 }); // Default value is All
+
+ static readonly List<NavMeshModifier> s_NavMeshModifiers = new List<NavMeshModifier>();
+
+ public static List<NavMeshModifier> 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;
+ }
+ }
+}