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")}"); } }
public static void HorizontalLine() => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, DEFAULT_LINE_HEIGHT, DEFAULT_LINE_MARGIN);
public static void HorizontalLine(Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, DEFAULT_LINE_HEIGHT, margin);
public static void HorizontalLine(float height) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, height, DEFAULT_LINE_MARGIN);
public static void HorizontalLine(Color color) => EditorGuiLayoutUtility.HorizontalLine(color, DEFAULT_LINE_HEIGHT, DEFAULT_LINE_MARGIN);
public static void HorizontalLine(float height, Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(DEFAULT_COLOR, height, margin);
public static void HorizontalLine(Color color, Vector2 margin) => EditorGuiLayoutUtility.HorizontalLine(color, DEFAULT_LINE_HEIGHT, margin);
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(); }