Files
KopMap/Assets/NatureManufacture Assets/WorldStreamer/Scritps/Editor/ColliderStreamerEditor.cs
2025-09-02 18:55:19 +08:00

103 lines
2.7 KiB
C#

using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Collections.Generic;
using System.IO;
namespace WorldStreamer2
{
[CustomEditor(typeof(ColliderStreamer))]
class ColliderStreamerEditor : Editor
{
#if UNITY_5_3 || UNITY_5_3_OR_NEWER
public override void OnInspectorGUI()
{
DrawDefaultInspector();
ColliderStreamer myTarget = (ColliderStreamer)target;
if (string.IsNullOrEmpty(myTarget.sceneName))
{
EditorGUILayout.HelpBox("Set scene name", MessageType.Error, true);
}
else
{
List<EditorBuildSettingsScene> scenesList = new List<EditorBuildSettingsScene>();
scenesList.AddRange(EditorBuildSettings.scenes);
if (!string.IsNullOrEmpty(myTarget.scenePath) && !File.Exists(myTarget.scenePath))
{
EditorGUILayout.HelpBox("Scene collider doesn't exist.", MessageType.Error, true);
return;
}
// myTarget.sceneName
bool addScene = true;
foreach (var item in scenesList)
{
if (myTarget.scenePath == item.path && item.enabled)
{
addScene = false;
break;
}
}
if (addScene)
{
EditorGUILayout.HelpBox("Add scenes from scene collection to build settings.", MessageType.Error, true);
if (GUILayout.Button("Add scenes to build settings"))
{
AddScenesToBuild(myTarget.scenePath);
}
}
}
}
/// <summary>
/// Adds the scenes to build.
/// </summary>
void AddScenesToBuild(string scenePath)
{
List<EditorBuildSettingsScene> scenesList = new List<EditorBuildSettingsScene>();
scenesList.AddRange(EditorBuildSettings.scenes);
List<string> scenesToAdd = new List<string>();
scenesToAdd.Add(scenePath);
foreach (var item in scenesList)
{
if (scenesToAdd.Contains(item.path))
{
scenesToAdd.Remove(item.path);
item.enabled = true;
}
}
foreach (var item in scenesToAdd)
{
scenesList.Add(new EditorBuildSettingsScene(item, true));
}
EditorBuildSettings.scenes = scenesList.ToArray();
}
#endif
}
}