using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace VertexColor.ScenePartition.Editor { public class ScenePartitionEditorWindow : EditorWindow { private const int cellSize = 10; private Vector2 scrollPos = Vector2.zero; [MenuItem("Max/ScenePartitionWindow")] public static void ShowExample() { ScenePartitionEditorWindow window = GetWindow(); window.titleContent = new GUIContent($"{nameof(ScenePartitionEditorWindow)}"); } private void OnGUI() { if (GUILayout.Button("Save")) { ScenePartitionSS.Save(); } DrawSceneDataCache(); } private void DrawSceneDataCache() { using (EditorGUILayout.ScrollViewScope scope = new EditorGUILayout.ScrollViewScope(scrollPos)) { scrollPos = scope.scrollPosition; using (new EditorGUI.DisabledGroupScope(true)) { ScenePartitionSS scenePartitionSS = ScenePartitionSS.instance; foreach (KeyValuePair sceneData in scenePartitionSS.SceneDataCache) { if (sceneData.Key == null || sceneData.Value == null) continue; EditorGUILayout.LabelField($"{sceneData.Key.name}"); if (sceneData.Value.HasCreatedPartitions) { EditorGUILayout.LabelField($"scenePartitions"); foreach (KeyValuePair scenePartition in sceneData.Value.ScenePartitions) { EditorGUILayout.LongField((long)scenePartition.Key); } } EditorGUILayout.Space(); if (sceneData.Value.HasLoadedPartitions) { EditorGUILayout.LabelField($"loadedScenePartitions"); foreach (KeyValuePair scenePartition in sceneData.Value.LoadedScenePartitions) { EditorGUILayout.LongField((long)scenePartition.Value.id); } } if (sceneData.Value.SceneGrid != null) { EditorGUILayout.LabelField($"generatedSceneGrid"); foreach (KeyValuePair item in sceneData.Value.SceneGrid.Grid) { EditorGUILayout.IntField("gridId", item.Key); EditorGUI.indentLevel++; foreach (ulong id in item.Value.list) { EditorGUILayout.LongField((long)id); } EditorGUI.indentLevel--; } } } } } } } }