public void UnselectedGUI()
        {
            //EditorGUILayout.LabelField("To load an existing map, select a map in scene or use the load button on the map asset in the project folder.");

            currentData = (RoMapData)EditorGUILayout.ObjectField("Map File", currentData, typeof(RoMapData), false);

            if (GUILayout.Button("Load") && currentData != null)
            {
                LoadDataInScene();
            }

            EditorGuiLayoutUtility.HorizontalLine();

            EditorGUILayout.LabelField("Create a new map:");

            const int stepSize = 64;

            createWidth  = stepSize * ((EditorGUILayout.IntSlider("Width", createWidth, stepSize, 512)) / stepSize);
            createHeight = stepSize * ((EditorGUILayout.IntSlider("Height", createHeight, stepSize, 512)) / stepSize);

            if (GUILayout.Button("Create New"))
            {
                var path = EditorUtility.SaveFilePanelInProject("Create New Map", "mapname", "asset", "Map Asset");
                if (!string.IsNullOrEmpty(path))
                {
                    CreateNewMap(path);
                }
            }
        }
        public void EditModeSettings()
        {
            if (GUILayout.Button("Rebuild Map"))
            {
                currentEditor.Reload();
            }

            if (GUILayout.Button("Rebuild Atlas"))
            {
                currentData.RebuildAtlas();
                currentEditor.UpdateAtlasTexture();
            }

            if (GUILayout.Button("Refresh Texture Lookup"))
            {
                currentData.RefreshTextureLookup();
            }

            if (GUILayout.Button("Rebuild Secondary UVs"))
            {
                currentEditor.RebuildUVDataInArea(currentData.Rect);
            }

            var paint = GUILayout.Toggle(currentEditor.PaintEmptyTileColorsBlack, "Black Out Empty Tile Vertex Colors");

            if (paint != currentEditor.PaintEmptyTileColorsBlack)
            {
                currentEditor.PaintEmptyTileColorsBlack = paint;
                currentEditor.Reload();
            }

            if (currentEditor.MapData.IsWalkTable)
            {
                EditorGuiLayoutUtility.HorizontalLine();

                if (currentEditor.IsEditorStartupMode)
                {
                    if (GUILayout.Button("Cancel Debug Startup"))
                    {
                        currentEditor.IsEditorStartupMode = false;
                    }
                }
                else
                {
                    if (GUILayout.Button("Enter Debug Startup"))
                    {
                        currentEditor.IsEditorStartupMode = true;
                        currentEditor.HasSelection        = false;
                    }
                }
            }
        }
        public void EditModeMesh()
        {
            currentEditor.DragSeparated = EditorGUILayout.Toggle("Vertical Segments", currentEditor.DragSeparated);

            currentEditor.HeightSnap = EditorGUILayout.DelayedFloatField("Snap Interval", currentEditor.HeightSnap);

            EditorGuiLayoutUtility.HorizontalLine();

            var newMode = EditorGUILayout.Popup("Current brush", CurrentBrushId, mapBrushNames);

            if (newMode != CurrentBrushId)
            {
                SwapMapBrushes(newMode);
            }

            EditorGuiLayoutUtility.HorizontalLine();

            if (mapBrushList == null || mapBrushList.Length == 0)
            {
                EditorGUILayout.LabelField("No brushes exist in the project to use.");
                return;
            }
            else
            {
                EnsureBrushEnabled();

                currentBrush.EditorUI();
            }

            EditorGuiLayoutUtility.HorizontalLine();

            if (currentEditor.CursorVisible)
            {
                var cell = currentData.Cell(currentEditor.HoveredTile);
                EditorStyles.label.wordWrap = true;
                EditorGUILayout.LabelField($"Hover Tile: {currentEditor.HoveredTile}\n{cell.ToString().Replace("|", "\n")}");
            }
        }
Exemple #4
0
 public static void HorizontalLine() => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, DEFAULT_LINE_HEIGHT, DEFAULT_LINE_MARGIN);
Exemple #5
0
 public static void HorizontalLine(Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, DEFAULT_LINE_HEIGHT, margin);
Exemple #6
0
 public static void HorizontalLine(float height) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, height, DEFAULT_LINE_MARGIN);
Exemple #7
0
 public static void HorizontalLine(Color color) => EditorGuiLayoutUtility.HorizontalLine(color, DEFAULT_LINE_HEIGHT, DEFAULT_LINE_MARGIN);
Exemple #8
0
 public static void HorizontalLine(float height, Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, height, margin);
Exemple #9
0
 public static void HorizontalLine(Color color, Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(color, DEFAULT_LINE_HEIGHT, margin);
Exemple #10
0
 public static void HorizontalLine(Color color, float height) => EditorGuiLayoutUtility.HorizontalLine(color, height, DEFAULT_LINE_MARGIN);
        public void OnGUI()
        {
            if (!isInitialized || mapBrushList == null)
            {
                Initialize();
            }

            var bigStyle = new GUIStyle(GUI.skin.label)
            {
                fontSize = 20, clipping = TextClipping.Overflow
            };

            GUILayout.Space(10);
            EditorGUILayout.LabelField("Map Editor", bigStyle);
            GUILayout.Space(10);
            EditorGuiLayoutUtility.HorizontalLine();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Mesh"))
            {
                EditMode = MapEditMode.Mesh;
            }
            if (GUILayout.Button("Texture"))
            {
                EditMode = MapEditMode.Texture;
            }
            if (GUILayout.Button("Settings"))
            {
                EditMode = MapEditMode.Settings;
            }
            EditorGUILayout.EndHorizontal();

            var hasMap = HasSelectedMap();

            if (hasMap)
            {
                if (currentEditor.gameObject.isStatic && !currentData.IsWalkTable)
                {
                    if (GUILayout.Button("Enter Edit Mode"))
                    {
                        currentEditor.RemoveStatic();
                    }

                    LeaveEditorMode();
                    return;
                }

                if (currentEditor.CurrentMode == Scripts.MapEditor.EditMode.Startup)
                {
                    currentEditor.CurrentMode = Scripts.MapEditor.EditMode.Height;
                }

                EditorGUILayout.BeginHorizontal();

                if (GUILayout.Button("Copy"))
                {
                    if (currentEditor.HasSelection)
                    {
                        currentData.Copy(currentEditor.SelectedRegion);
                    }
                }

                if (GUILayout.Button("Paste"))
                {
                    if (currentEditor.HasSelection && currentEditor.SelectedRegion.size == Vector2Int.one)
                    {
                        if (currentData.Paste(currentEditor.SelectedRegion.min, out var area))
                        {
                            currentEditor.RebuildMeshInArea(area);
                        }
                    }
                }

                if (GUILayout.Button("Undo"))
                {
                    if (currentData.UndoChange(out var changed))
                    {
                        currentEditor.RebuildMeshInArea(changed.ExpandRect(1));
                        currentBrush.Repaint();
                    }
                }

                EditorGUILayout.EndHorizontal();

                if (!currentData.IsWalkTable)
                {
                    if (GUILayout.Button("Leave Edit Mode"))
                    {
                        currentEditor.MakeStatic();
                        currentEditor.LeaveEditMode();
                        return;
                    }
                }
            }

            EditorGuiLayoutUtility.HorizontalLine();
            scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);

            if (!hasMap)
            {
                if (currentBrush != null && currentBrush.IsEnabled())
                {
                    currentBrush.OnDisable();
                }

                if (EditMode == MapEditMode.Texture && currentData != null && currentEditor != null)
                {
                    EditModeTexture();
                }
                else
                {
                    UnselectedGUI();
                }

                GUILayout.EndScrollView();
                return;
            }


            currentEditor.EnterEditMode();
            EnsureBrushEnabled();

            switch (EditMode)
            {
            case MapEditMode.Mesh:
                EditModeMesh();
                break;

            case MapEditMode.Texture:
                EditModeTexture();
                break;

            case MapEditMode.Settings:
                EditModeSettings();
                break;
            }

            GUILayout.EndScrollView();
        }