Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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();
            }
        }