public static VarHandleTemplateEditor GetCreateEditor(VarHandleTemplate vh)
        {
            VarHandleTemplateEditor vhe = SODatabase.GetSubObjectOfType <VarHandleTemplateEditor>(vh);

            if (vhe)
            {
                return(vhe);
            }

            vhe           = CreateInstance <VarHandleTemplateEditor>();
            vhe.varHandle = vh;
            vhe.name      = vh.name + "Editor";
            AssetDatabase.AddObjectToAsset(vhe, vh);

            return(vhe);
        }
        public override void OnInspectorGUI()
        {
            VarHandleTemplateEditor varHandle = (VarHandleTemplateEditor)target;
            int toRemove = -1;

            //show variable settings (if not hidden)
            for (int i = 0; i < varHandle.varHandle.Count; ++i)
            {
                if (varHandle.fold[i] = EditorGUILayout.Foldout(varHandle.fold[i], varHandle.varHandle[i].name))
                {
                    EditorGUI.indentLevel++;

                    CreateEditor(varHandle.varHandle[i]).OnInspectorGUI();
                    if (GUILayout.Button("Remove"))
                    {
                        toRemove = i;
                    }

                    EditorGUI.indentLevel--;
                }
            }

            if (toRemove >= 0)
            {
                varHandle.Remove(toRemove);
            }

            GUILayout.FlexibleSpace();
            //show add variable popup
            if (GUILayout.Button("Add"))
            {
                PopupWindow.Show(buttonRect, new AddVariablePopup(varHandle));
            }
            if (Event.current.type == EventType.Repaint)
            {
                buttonRect = GUILayoutUtility.GetLastRect();
            }
        }
Пример #3
0
 //create popup for handle
 public AddVariablePopup(VarHandleTemplateEditor handle)
 {
     this.handle = handle;
 }