void Tile() { GUILayout.BeginVertical("box"); showTile = GUILayout.Toggle(showTile, "Tile", "boxhead"); if (showTile) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Load")) { string path = TinyFileDialogs.OpenFileDialog("Load Tile", Edit.GetDirectory(), new[] { "*.rtile" }, "Reptile Tiles (*.rtile)", false); if (!string.IsNullOrEmpty(path)) { actQueue.Enqueue(new LoadTileAct(System.IO.File.ReadAllBytes(path))); } } if (GUILayout.Button("Save")) { string path = TinyFileDialogs.SaveFileDialog("Save Tile", Edit.GetDirectory(), new[] { "*.rtile" }, "Reptile Tiles (*.rtile)"); if (!string.IsNullOrEmpty(path)) { if (!path.Contains(".")) { path += ".rtile"; } System.IO.File.WriteAllBytes(path, new BinaryWriter(Edit.use.tile).GetOutput()); } } if (GUILayout.Button("New")) { actQueue.Enqueue(new NewTileAct()); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.Label("Width"); int w; if (int.TryParse(GUILayout.TextField(Edit.width.ToString()), out w)) { if (w != ed.tile.GetWidth()) { Edit.width = w; } } ; GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Height"); int h; if (int.TryParse(GUILayout.TextField(Edit.height.ToString()), out h)) { if (h != ed.tile.GetHeight()) { Edit.height = h; } } ; GUILayout.EndVertical(); GUILayout.BeginVertical(); GUILayout.Label("Depth"); int d; if (int.TryParse(GUILayout.TextField(Edit.depth.ToString()), out d)) { if (d != ed.tile.GetDepth()) { Edit.depth = d; } } ; GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUI.enabled = Edit.width != ed.tile.GetWidth() || Edit.height != ed.tile.GetHeight() || Edit.depth != ed.tile.GetDepth(); if (GUILayout.Button("Apply")) { actQueue.Enqueue(new ResizeTileAct(Edit.width, Edit.height, Edit.depth)); } GUI.enabled = true; GUILayout.Label("Presets"); GUILayout.BeginHorizontal(); if (GUILayout.Button("8³")) { actQueue.Enqueue(new ResizeTileAct(8, 8, 8)); } if (GUILayout.Button("16³")) { actQueue.Enqueue(new ResizeTileAct(16, 16, 16)); } if (GUILayout.Button("32³")) { actQueue.Enqueue(new ResizeTileAct(32, 32, 32)); } GUILayout.EndHorizontal(); GUILayout.Label("Import"); GUILayout.BeginHorizontal(); if (GUILayout.Button("VOX")) { string path = TinyFileDialogs.OpenFileDialog("Import VOX", Edit.GetDirectory(), new[] { "*.vox" }, "MagicaVoxel Model (*.vox)", false); if (!string.IsNullOrEmpty(path)) { actQueue.Enqueue(new LoadTileAct(new BinaryWriter(ExportUtil.VoxToTile(System.IO.File.ReadAllBytes(path))).GetOutput())); } } GUILayout.EndHorizontal(); GUILayout.Label("Export"); GUILayout.BeginHorizontal(); if (GUILayout.Button("OBJ")) { string path = TinyFileDialogs.SaveFileDialog("Export OBJ", Edit.GetDirectory(), new[] { "*.obj" }, "Wavefront OBJ (*.obj)"); if (!string.IsNullOrEmpty(path)) { if (!path.Contains(".")) { path += ".obj"; } System.IO.File.WriteAllText(path, ExportUtil.TileToObj(Edit.use.tile)); System.IO.File.WriteAllBytes(path.Substring(0, path.LastIndexOf('.')) + ".png", ExportUtil.PaletteToPng(Edit.use.tile.GetPalette())); } } if (GUILayout.Button("VOX")) { string path = TinyFileDialogs.SaveFileDialog("Export VOX", Edit.GetDirectory(), new[] { "*.vox" }, "MagicaVoxel Model (*.vox)"); if (!string.IsNullOrEmpty(path)) { if (!path.Contains(".")) { path += ".vox"; } System.IO.File.WriteAllBytes(path, ExportUtil.TileToVox(Edit.use.tile)); } } if (GUILayout.Button("PNG")) { string path = TinyFileDialogs.SaveFileDialog("Export PNG", Edit.GetDirectory(), new[] { "*.png" }, "Portable Network Graphics (*.png)"); if (!string.IsNullOrEmpty(path)) { if (!path.Contains(".")) { path += ".png"; } System.IO.File.WriteAllBytes(path, ExportUtil.PaletteToPng(Edit.use.tile.GetPalette())); } } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); if (repaint) { boxRects.Add(GUILayoutUtility.GetLastRect()); } }