From 6edb307e9c3d213b02e463a681d33bcb01d4d502 Mon Sep 17 00:00:00 2001 From: max Date: Wed, 26 Jul 2023 23:52:13 +0200 Subject: [PATCH] Update ScenePartitionEditorWindow.cs - Draw scene partition in scene partition editor window --- Editor/ScenePartitionEditorWindow.cs | 101 +++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 5 deletions(-) diff --git a/Editor/ScenePartitionEditorWindow.cs b/Editor/ScenePartitionEditorWindow.cs index c22de0a..37cf301 100644 --- a/Editor/ScenePartitionEditorWindow.cs +++ b/Editor/ScenePartitionEditorWindow.cs @@ -11,6 +11,9 @@ public class ScenePartitionEditorWindow : EditorWindow private Vector2 scrollPos = Vector2.zero; private bool foldoutGroupEnabled = false; + private ulong id = 0; + private int gridId = 0; + [MenuItem("Window/ScenePartition")] public static void ShowExample() { @@ -19,6 +22,99 @@ public static void ShowExample() } private void OnGUI() + { + using (new EditorGUILayout.VerticalScope()) + { + DrawScenePartition(); + + GUILayout.FlexibleSpace(); + + DrawSceneDataCache(); + } + } + + private void DrawScenePartition() + { + if (!ScenePartitionUtils.TryGetScenePartitionSOForActiveScene(out var scenePartitionSO)) return; + + EditorGUILayout.LabelField($"ScenePartition | {scenePartitionSO.SceneName}", EditorStyles.boldLabel); + + if (scenePartitionSO.SceneAsset == null) + { + if (GUILayout.Button("Create Scene")) + { + scenePartitionSO.CreateScene(); + } + } + else + { + if (GUILayout.Button("Load All")) + { + scenePartitionSO.LoadAll(); + } + + using (new EditorGUILayout.HorizontalScope()) + { + if (GUILayout.Button(new GUIContent("Unload", "Empty the scene and save it (so it has no changes in source control)."), EditorStyles.miniButtonLeft)) + { + scenePartitionSO.Unload(); + } + + if (GUILayout.Button(new GUIContent("Reload", "Discard changes and reload loaded partitions."), EditorStyles.miniButtonRight)) + { + scenePartitionSO.Reload(); + } + } + + if (GUILayout.Button("Save")) + { + scenePartitionSO.Save(); + } + + EditorGUIUtils.HorizontalLine(); + + using (new EditorGUILayout.HorizontalScope()) + { + id = (ulong)EditorGUILayout.LongField("id", (long)id); + + if (GUILayout.Button("Load Id")) + { + scenePartitionSO.LoadPartitions(new ulong[1] { id }); + } + } + + EditorGUIUtils.HorizontalLine(); + + ScenePartitionSceneViewEditor.cellSize = EditorGUILayout.IntSlider("cellSize", ScenePartitionSceneViewEditor.cellSize, 10, 1000); + + if (GUILayout.Button("GenerateSceneGrid")) + { + scenePartitionSO.GenerateSceneGridData(); + } + + if (scenePartitionSO.Data.SceneGrid != null) + { + using (new EditorGUILayout.HorizontalScope()) + { + gridId = EditorGUILayout.IntField("gridId", gridId); + + if (GUILayout.Button("LoadSceneGrid")) + { + scenePartitionSO.LoadCell(gridId); + } + } + } + + EditorGUIUtils.HorizontalLine(); + + if (GUILayout.Button("Open Scene Data Folder")) + { + EditorUtility.RevealInFinder(ScenePartitionUtils.GetDataPath(scenePartitionSO)); + } + } + } + + private void DrawSceneDataCache() { EditorGUILayout.LabelField("Cache", EditorStyles.boldLabel); @@ -37,11 +133,6 @@ private void OnGUI() EditorGUIUtils.HorizontalLine(); - DrawSceneDataCache(); - } - - private void DrawSceneDataCache() - { using (EditorGUIUtils.FoldoutHeaderScope foldoutGroup = new EditorGUIUtils.FoldoutHeaderScope("SceneDataCache", ref foldoutGroupEnabled)) { if (!foldoutGroupEnabled) return;