112 lines
5.0 KiB
C#
112 lines
5.0 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEditor.SceneManagement;
|
|
|
|
namespace WorldStreamer2
|
|
{
|
|
[CustomEditor(typeof(SceneCollectionManager))]
|
|
class SceneCollectionManagerEditor : Editor
|
|
{
|
|
SerializedProperty activeProp;
|
|
SerializedProperty priorityProp;
|
|
SerializedProperty maxParallelSceneLoadingProp;
|
|
SerializedProperty loadingRangegProp;
|
|
SerializedProperty useLoadingRangeMinProp;
|
|
SerializedProperty deloadingRangeProp;
|
|
|
|
SerializedProperty loadingRangeMinProp;
|
|
SerializedProperty useUnloadRangeConnectProp;
|
|
SerializedProperty unloadRangeConnectProp;
|
|
|
|
void OnEnable()
|
|
{
|
|
// Fetch the objects from the GameObject script to display in the inspector
|
|
activeProp = serializedObject.FindProperty("active");
|
|
priorityProp = serializedObject.FindProperty("priority");
|
|
maxParallelSceneLoadingProp = serializedObject.FindProperty("maxParallelSceneLoading");
|
|
|
|
loadingRangegProp = serializedObject.FindProperty("loadingRange");
|
|
useLoadingRangeMinProp = serializedObject.FindProperty("useLoadingRangeMin");
|
|
deloadingRangeProp = serializedObject.FindProperty("deloadingRange");
|
|
|
|
loadingRangeMinProp = serializedObject.FindProperty("loadingRangeMin");
|
|
useUnloadRangeConnectProp = serializedObject.FindProperty("useUnloadRangeConnect");
|
|
unloadRangeConnectProp = serializedObject.FindProperty("unloadRangeConnect");
|
|
}
|
|
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
SceneCollectionManager myTarget = (SceneCollectionManager)target;
|
|
|
|
// DrawDefaultInspector();
|
|
EditorGUILayout.Space();
|
|
GUILayout.Label("Main", EditorStyles.boldLabel);
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
|
|
|
EditorGUILayout.PropertyField(activeProp, new GUIContent("Active"));
|
|
EditorGUILayout.PropertyField(priorityProp, new GUIContent("Priority", "Priority for streaming of scenes."));
|
|
EditorGUILayout.PropertyField(maxParallelSceneLoadingProp, new GUIContent("Max Parallel Scene Loading", "Amount of max grid elements that you want to start loading in one frame."));
|
|
|
|
|
|
EditorGUILayout.EndVertical();
|
|
EditorGUILayout.Space();
|
|
|
|
GUILayout.Label("Ranges", EditorStyles.boldLabel);
|
|
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
|
|
|
EditorGUILayout.PropertyField(loadingRangegProp, new GUIContent("Loading Range", "Distance in grid elements that you want hold loaded."));
|
|
|
|
|
|
EditorGUILayout.PropertyField(useLoadingRangeMinProp, new GUIContent("Use Loading Range Min", "Area that you want to cutout from loading range."));
|
|
|
|
if (useLoadingRangeMinProp.boolValue)
|
|
{
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(loadingRangeMinProp, new GUIContent("Loading Range Min", "Area that you want to cutout from loading range."));
|
|
|
|
EditorGUILayout.PropertyField(useUnloadRangeConnectProp, new GUIContent("Sync with other layer", "Enables ccene collection elements to unload when scene loaded."));
|
|
|
|
if (useUnloadRangeConnectProp.boolValue)
|
|
{
|
|
//EditorGUILayout.HelpBox("Sync with other layer may generate small lag when turned on.", MessageType.Warning, true);
|
|
EditorGUILayout.PropertyField(unloadRangeConnectProp, new GUIContent("Sync Layer", "Area that you want to cutout from loading range."));
|
|
}
|
|
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
|
|
|
|
EditorGUILayout.PropertyField(deloadingRangeProp, new GUIContent("Deloading Range", "Distance in grid elements after which you want to unload assets."));
|
|
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
|
|
|
EditorGUILayout.EndVertical();
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
Undo.RegisterCompleteObjectUndo(myTarget, "UI change streamer collection");
|
|
Undo.FlushUndoRecordObjects();
|
|
|
|
if (!Application.isPlaying)
|
|
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
|
|
}
|
|
|
|
bool warningCheckingEmpty = false;
|
|
if ((myTarget.loadingRange.x > 0 || myTarget.deloadingRange.x > 0) && !myTarget.xSplitIs)
|
|
warningCheckingEmpty = true;
|
|
if ((myTarget.loadingRange.y > 0 || myTarget.deloadingRange.y > 0) && !myTarget.ySplitIs)
|
|
warningCheckingEmpty = true;
|
|
if ((myTarget.loadingRange.z > 0 || myTarget.deloadingRange.z > 0) && !myTarget.zSplitIs)
|
|
warningCheckingEmpty = true;
|
|
|
|
if (warningCheckingEmpty)
|
|
EditorGUILayout.HelpBox("Loading Range for streaming is setup for axis that has tile size of 0", MessageType.Warning, true);
|
|
}
|
|
}
|
|
} |