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(); } }
//create popup for handle public AddVariablePopup(VarHandleTemplateEditor handle) { this.handle = handle; }