using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace VertexColor.ScenePartition.Editor { [CustomEditor(typeof(ScenePartitionSO))] public class ScenePartitionSOEditor : UnityEditor.Editor { private long id = 0; private int gridId = 0; public override void OnInspectorGUI() { ScenePartitionSO scenePartitionSO = (target as ScenePartitionSO); DrawDefaultInspector(); serializedObject.Update(); //EditorGUILayout.PropertyField(sceneAssetProperty); serializedObject.ApplyModifiedProperties(); EditorGUILayout.Space(); if (scenePartitionSO.SceneAsset == null) { if (GUILayout.Button("Create Scene")) { scenePartitionSO.CreateScene(); } } else { if (GUILayout.Button("Load All")) { scenePartitionSO.LoadAll(); } if (GUILayout.Button("Reload")) { scenePartitionSO.Reload(); } if (GUILayout.Button("Save")) { scenePartitionSO.Save(); } if (GUILayout.Button("Unload")) { scenePartitionSO.Unload(); } EditorGUILayout.Space(); if (GUILayout.Button("Open Scene Data Folder")) { EditorUtility.RevealInFinder(ScenePartitionUtils.GetDataPath(scenePartitionSO)); } EditorGUILayout.Space(); id = EditorGUILayout.LongField("id", id); if (GUILayout.Button("Load Section")) { scenePartitionSO.LoadPartitions(new long[1] { (long)id }); } if (GUILayout.Button("GenerateSceneGrid")) { scenePartitionSO.GenerateSceneGridData(); } gridId = EditorGUILayout.IntField("gridId", gridId); if (GUILayout.Button("LoadSceneGrid")) { scenePartitionSO.LoadCell(gridId); } if (scenePartitionSO.Data.SceneGrid != null) { EditorGUILayout.LabelField($"generatedSceneGrid"); foreach (KeyValuePair> item in scenePartitionSO.Data.SceneGrid.Grid) { EditorGUILayout.LongField("gridId", item.Key); EditorGUI.indentLevel++; foreach (long id in item.Value) { EditorGUILayout.LongField(id); } EditorGUI.indentLevel--; } } if (GUILayout.Button("ClearCache")) { scenePartitionSO.ClearCache(); ScenePartitionSS.instance.SceneDataCache.Clear(); } } } } }