public static bool Save(string fileName, Graph graph) { var asset = ScriptableObject.CreateInstance <EncounterAsset>(); CustomEditorUtils.SaveAsset(asset, "Assets/Resources/Encounters/", graph.GetEncounterTag()); for (int i = 0; i < graph.GetNodeCount(); i++) { var node = graph.GetNodeAt(i) as EncounterNodeBase; asset.AddNode(node.Encounter); CustomEditorUtils.AddAssetToAsset(node.Encounter, asset); foreach (var allower in node.Encounter.Allowers) { CustomEditorUtils.AddAssetToAsset(allower, asset); } foreach (var @event in node.Encounter.Events) { CustomEditorUtils.AddAssetToAsset(@event, asset); } } EditorUtility.SetDirty(asset); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.DisplayDialog("Saved", "Encounter Saved!", "OK"); return(true); }
private void OnGUI() { if (this._encounterInfo != null) { this._allowerTypeIndex = EditorGUILayout.Popup(this._allowerTypeIndex, this._allowerTypeNames); if (EditorWindowBase.GetButton("Add Allower", 80, Color.green)) { if (this._allowerTypeIndex < 0) { return; } AllowerInfoBase allowerInfoBase = CreateInstance(this._allowerTypeNames[this._allowerTypeIndex]) as AllowerInfoBase; if (allowerInfoBase != null) { this._encounterInfo.Allowers.Add(allowerInfoBase); CustomEditorUtils.AddAssetToAsset(allowerInfoBase, this._encounterInfo); } else { throw new ArgumentException("component is NULL."); } } this._scrollPos = EditorGUILayout.BeginScrollView(this._scrollPos); GUILayout.Space(10); if (this._encounterInfo.Allowers.Count > 0) { int indexToDelete = -1; for (int i = 0; i < this._encounterInfo.Allowers.Count; i++) { var allower = this._encounterInfo.Allowers[i]; if (allower != null) { EditorGUILayout.BeginVertical(GUI.skin.box); Editor.CreateEditor(this._encounterInfo.Allowers[i]).OnInspectorGUI(); if (EditorWindowBase.GetButton("-", 20, Color.red)) { indexToDelete = i; } EditorGUILayout.EndVertical(); if (indexToDelete > -1) { bool result = EditorUtility.DisplayDialog("Delete", "Delete Event", "OK", "Cancel"); if (result) { this._encounterInfo.Allowers.Remove(this._encounterInfo.Allowers[indexToDelete]); DestroyImmediate(this._encounterInfo.Allowers[indexToDelete], true); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } this.Repaint(); } } } } EditorGUILayout.EndScrollView(); } }
private void OnGUI() { if (this._item != null) { this._scrollPos = EditorGUILayout.BeginScrollView(this._scrollPos); Editor.CreateEditor(this._item).DrawDefaultInspector(); GUILayout.Space(10); if (GUILayout.Button("Rename Asset File")) { this.OnRename(); } EditorGUILayout.BeginHorizontal(); this._componentTypeIndex = EditorGUILayout.Popup(this._componentTypeIndex, this._componentTypeNames); Color prevAddComponenButtonColor = GUI.color; GUI.color = Color.green; if (GUILayout.Button("Add Component")) { if (this._componentTypeIndex < 0) { return; } ComponentInfoBase componentBase = CreateInstance(this._componentTypeNames[this._componentTypeIndex]) as ComponentInfoBase; if (componentBase != null) { this._item.AddComponent(componentBase); CustomEditorUtils.AddAssetToAsset(componentBase, this._item); } else { throw new ArgumentException("component is NULL."); } } GUI.color = prevAddComponenButtonColor; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginVertical(); GUILayout.Label("Item Components", EditorStyles.boldLabel); int indexToDelete = -1; for (int i = 0; i < this._item.ComponentInfos.Count; i++) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); if (this._item.ComponentInfos[i] != null) { Editor.CreateEditor(this._item.ComponentInfos[i]).OnInspectorGUI(); } Color prevDeleteComponentButtonColor = GUI.color; GUI.color = Color.red; if (GUILayout.Button("Delete Component")) { indexToDelete = i; } GUI.color = prevDeleteComponentButtonColor; EditorGUILayout.EndVertical(); } if (indexToDelete > -1) { bool result = EditorUtility.DisplayDialog("Delete component", "Delete component: {0}".F( this._item.ComponentInfos[ indexToDelete ].GetType()), "OK", "Cancel"); if (result) { this._item.RemoveComponent(this._item.ComponentInfos[indexToDelete]); DestroyImmediate(this._item.ComponentInfos[indexToDelete], true); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); } }