12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using UnityEngine;
- using UnityEditor;
- namespace Pathfinding {
- [CustomEditor(typeof(RecastMeshObj))]
- [CanEditMultipleObjects]
- public class RecastMeshObjEditor : EditorBase {
- SerializedProperty areaProp;
- SerializedProperty dynamicProp;
- protected override void OnEnable () {
- areaProp = serializedObject.FindProperty("area");
- dynamicProp = serializedObject.FindProperty("dynamic");
- }
- protected override void Inspector () {
- var customValue = 1;
- for (int i = 0; i < targets.Length; i++) {
- var script = targets[i] as RecastMeshObj;
- if (script.area > 0) {
- customValue = script.area;
- }
- }
- EditorGUILayout.IntPopup(areaProp, new GUIContent[] {
- new GUIContent("Unwalkable Surface"),
- new GUIContent("Walkable Surface"),
- new GUIContent("Custom Surface Area")
- }, new int[] {
- -1,
- 0,
- customValue
- },
- new GUIContent("Area Type")
- );
- if (areaProp.intValue < -1) {
- areaProp.intValue = 0;
- }
- if (!areaProp.hasMultipleDifferentValues && areaProp.intValue >= 1) {
- PropertyField(areaProp);
- }
- if (!areaProp.hasMultipleDifferentValues) {
- if (areaProp.intValue == -1) {
- EditorGUILayout.HelpBox("All surfaces on this mesh will be made unwalkable", MessageType.None);
- } else if (areaProp.intValue == 0) {
- EditorGUILayout.HelpBox("All surfaces on this mesh will be walkable", MessageType.None);
- } else if (areaProp.intValue > 0) {
- EditorGUILayout.HelpBox("All surfaces on this mesh will be walkable and a " +
- "seam will be created between the surfaces on this mesh and the surfaces on other meshes", MessageType.None);
- }
- }
- PropertyField(dynamicProp, "Dynamic", "Setting this value to false will give better scanning performance, but you will not be able to move the object during runtime");
- if (!dynamicProp.hasMultipleDifferentValues && !dynamicProp.boolValue) {
- EditorGUILayout.HelpBox("This object must not be moved during runtime since 'dynamic' is set to false", MessageType.Info);
- }
- }
- }
- }
|