void OnGUI()
        {
            if (GUILayout.Button("select"))
            {
                if (obj != null)
                {
                    Selection.activeGameObject = obj;
                }
                else
                {
                    TileWorldCreator _c = GameObject.FindObjectOfType <TileWorldCreator>();
                    obj = _c.gameObject;
                    InitWindow(obj);
                }
            }

            if (window != null)
            {
                int _tilesets = 0;
                for (int tp = 0; tp < twc.configuration.presets.Count; tp++)
                {
                    _tilesets += twc.configuration.presets[tp].tiles.Count;
                }

                scrollPosition = GUI.BeginScrollView(new Rect(0, 25, Screen.width, Screen.height - 50), scrollPosition, new Rect(0, 20, Screen.width - 50, (_tilesets * 295f) + 10f));
                TileWorldConfigurationEditor.ShowPresetSettings(twc.configuration);
                GUI.EndScrollView();
            }
        }
        void OnGUI()
        {
            if (GUILayout.Button("select"))
            {
                if (obj != null)
                {
                    Selection.activeGameObject = obj;
                }
                else
                {
                    TileWorldCreator _c = GameObject.FindObjectOfType <TileWorldCreator>();
                    obj = _c.gameObject;
                    InitWindow(obj);
                }
            }

            if (window != null)
            {
                TileWorldConfigurationEditor.ShowGlobalSettings(twc.configuration);
            }
        }
Ejemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        EditorGUILayout.BeginHorizontal("Box");

        GUILayout.Label(topLogo);

        //if (GUILayout.Button(iconStore, GUILayout.Width(40), GUILayout.Height(40)))
        //{
        //    TileWorldTileStore.InitStore();
        //}

        if (GUILayout.Button(iconOptionMenu, GUILayout.Height(40), GUILayout.Width(40)))
        {
            Event evt         = Event.current;
            Rect  contextRect = new Rect(0, 0, Screen.width, 300);

            Vector2 mousePos = evt.mousePosition;
            if (contextRect.Contains(mousePos))
            {
                // create menu
                GenericMenu menu = new GenericMenu();

                menu.AddItem(new GUIContent("Load Map"), false, Callback, "item 1");
                menu.AddItem(new GUIContent("Save Map"), false, Callback, "item 2");
                menu.AddSeparator("");
                //menu.AddItem(new GUIContent("Check for new tiles"), false, Callback, "item 3");
                menu.AddItem(new GUIContent("About"), false, Callback, "item 4");
                menu.AddItem(new GUIContent("Help"), false, Callback, "item 5");

                menu.ShowAsContext();
                evt.Use();
            }
        }

        EditorGUILayout.EndHorizontal();


        if (creator.configuration == null)
        {
            EditorGUILayout.HelpBox("Please create or load an asset configuration file.", MessageType.Info);
        }

        //CONFIGURATION FILE OPTIONS
        EditorGUILayout.BeginHorizontal();

        creator.configuration = (TileWorldConfiguration)EditorGUILayout.ObjectField(creator.configuration, typeof(TileWorldConfiguration), true) as TileWorldConfiguration;

        if (GUILayout.Button("create config.", "ToolBarButton"))
        {
            TileWorldConfigurationEditor.CreateConfigFile(creator);
        }

        if (GUILayout.Button("load config.", "ToolBarButton"))
        {
            var _configPath = EditorUtility.OpenFilePanel("load configuration file", "Assets", "asset");
            //make path relative
            if (_configPath != "")
            {
                _configPath = "Assets" + _configPath.Substring(Application.dataPath.Length);

                creator.configuration = (TileWorldConfiguration)UnityEditor.AssetDatabase.LoadAssetAtPath(_configPath, typeof(TileWorldConfiguration));
            }
        }

        EditorGUILayout.EndHorizontal();



        if (creator.configuration == null)
        {
            if (GUI.changed)
            {
                creator.firstTimeBuild = true;
#if  UNITY_5_3_OR_NEWER || UNITY_5_3
                EditorSceneManager.MarkSceneDirty(this.currentScene);
#else
                EditorApplication.MarkSceneDirty();
#endif
            }

            return;
        }

        // Show configuration editor
        //--------------------------
        TileWorldConfigurationEditor.ShowConfigurationEditor(creator.configuration);


        //SHOW EDIT MAP
        //-------------
        GUI.color = colorGUIFoldout3;
        EditorGUILayout.BeginVertical("Box");
        GUI.color = Color.white;
        GUILayout.BeginHorizontal("Box");
        creator.configuration.ui.showEdit = GUILayout.Toggle(creator.configuration.ui.showEdit, ("Edit map"), GUI.skin.GetStyle("foldout"), GUILayout.ExpandWidth(true), GUILayout.Height(18));

        if (GUILayout.Button(iconUndockWindow, "ToolbarButton", GUILayout.Width(25)))
        {
            TileWorldCreatorEditorEditMapWindow.InitWindow(creator.gameObject);
        }

        GUILayout.EndHorizontal();

        if (creator.configuration.ui.showEdit)
        {
            ShowEdit();
        }
        EditorGUILayout.EndVertical();

        if (GUILayout.Button("Generate New", GUILayout.Height(30)))
        {
            //reset undo stack
            undoStack = new TileWorldUndoStack <bool[]>();
            redoStack = new TileWorldUndoStack <bool[]>();

            //paintRegisterMap = new bool[creator.configuration.global.width, creator.configuration.global.height];


            creator.GenerateMaps();

            for (int li = 0; li < creator.configuration.global.layerCount; li++)
            {
                creator.configuration.worldMap[li].maskMap = new bool[creator.configuration.global.width, creator.configuration.global.height];
                creator.configuration.worldMap[li].maskMap = creator.iMasks[creator.configuration.worldMap[li].selectedMask].ApplyMask(creator.configuration.worldMap[li].cellMap, creator.GetComponent <TileWorldCreator>(), creator.configuration);
            }
        }

        if (GUILayout.Button("Build", GUILayout.Height(30)))
        {
            if (creator.firstTimeBuild)
            {
                //creator.BuildMapEditor();
                creator.BuildMapComplete(false, false, true);
            }
            else
            {
                if (creator.configuration.global.buildOverlappingTiles)
                {
                    //creator.BuildMapPartial(true);
                    //creator.BuildMapPartial(false, false, 0, 0);
                    creator.BuildMapPartial(false, false);
                }
                else
                {
                    creator.firstTimeBuild = true;
                    //creator.BuildMapEditor();
                    creator.BuildMapComplete(false, false, true);
                }
            }
        }


        if (creator.mergeReady)
        {
            GUI.enabled = true;
        }
        else
        {
            GUI.enabled = false;
        }

        if (GUILayout.Button("Merge", GUILayout.Height(30)))
        {
            Merge();
            creator.mergeReady = false;
        }

        GUI.enabled = true;


        SceneView.RepaintAll();

        if (GUI.changed)
        {
            creator.firstTimeBuild = true;
#if  UNITY_5_3_OR_NEWER || UNITY_5_3
            EditorSceneManager.MarkSceneDirty(this.currentScene);
#else
            EditorApplication.MarkSceneDirty();
#endif
        }

        EditorUtility.SetDirty(creator);

        if (creator.configuration != null)
        {
            EditorUtility.SetDirty(creator.configuration);
        }
    }