chenxin
2020-12-22 d185e655cd926e45ed7f7ce3f59af7dc23b4c372
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using TowerDefense.MeshCreator;
using UnityEditor;
using UnityEngine;
 
namespace TowerDefense.Nodes.Editor
{
    /// <summary>
    /// Editor for Node
    /// </summary>
    [CustomEditor(typeof(Node))]
    public class NodeEditor : UnityEditor.Editor
    {
        protected Node m_Node;
 
        protected void OnEnable()
        {
            m_Node = (Node)target;
        }
 
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            GUILayout.Space(5);
            if (GUILayout.Button("Select/Add Mesh"))
            {
                AddMeshCreator();
            }
        }
 
        /// <summary>
        /// Creates a new AreaMeshCreator object as a child of the node
        /// </summary>
        protected void AddMeshCreator()
        {
            var meshObject = m_Node.GetComponentInChildren<AreaMeshCreator>();
 
            // AreaMeshCreatorObject already exists so no need to instantiate it again
            if (meshObject != null)
            {
                Selection.activeGameObject = meshObject.gameObject;
                return;
            }
            
            GameObject newGameObject = new GameObject("Node Mesh");
            newGameObject.transform.SetParent(m_Node.transform, false);
            meshObject = newGameObject.AddComponent<AreaMeshCreator>();
            
            Selection.activeGameObject = meshObject.gameObject;
            Undo.RegisterCreatedObjectUndo(meshObject.gameObject, "Created AreaMeshCreator");
        }
    }
}