Init
This commit is contained in:
78
Assets/ThirdParty/DestroyIt/Scripts/Editor/DestructionManagerEditor.cs
vendored
Normal file
78
Assets/ThirdParty/DestroyIt/Scripts/Editor/DestructionManagerEditor.cs
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
using UnityEditor;
|
||||
using UnityEditor.SceneManagement;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace DestroyIt
|
||||
{
|
||||
[CustomEditor(typeof(DestructionManager))]
|
||||
public class DestructionManagerEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
DestructionManager destManager = target as DestructionManager;
|
||||
|
||||
EditorGUILayout.Separator();
|
||||
EditorGUILayout.BeginVertical("Box");
|
||||
EditorGUILayout.Separator();
|
||||
EditorGUILayout.LabelField(new GUIContent("Auto-Deactivate", "Provides options to gain better performance by deactivating Destructible scripts when they are far away from the player."), EditorStyles.boldLabel);
|
||||
|
||||
GUILayout.BeginHorizontal();
|
||||
destManager.autoDeactivateDestructibles = EditorGUILayout.Toggle(destManager.autoDeactivateDestructibles, GUILayout.Width(20));
|
||||
EditorGUILayout.LabelField(new GUIContent("Destructible Objects", "If true, Destructible scripts will be deactivated on start, and will re-activate any time they are inside a trigger collider with the ActivateDestructibles script on it."));
|
||||
GUILayout.EndHorizontal();
|
||||
if (destManager.autoDeactivateDestructibles)
|
||||
{
|
||||
GUILayout.Label(new GUIContent("NOTE: You'll need to put a trigger collider with ActivateDestructibles script to re-activate Destructibles within range. See the ActivateDestructiblesArea prefab for an example."), EditorStyles.helpBox);
|
||||
}
|
||||
GUILayout.BeginHorizontal();
|
||||
destManager.autoDeactivateDestructibleTerrainObjects = EditorGUILayout.Toggle(destManager.autoDeactivateDestructibleTerrainObjects, GUILayout.Width(20));
|
||||
EditorGUILayout.LabelField(new GUIContent("Destructible Terrain Objects", "If true, Destructible terrain object scripts will be deactivated on start, and will activate any time they are inside a trigger collider with the ActivateDestructibles script on it."));
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
if (destManager.autoDeactivateDestructibleTerrainObjects)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("", GUILayout.Width(15));
|
||||
destManager.destructibleTreesStayDeactivated = EditorGUILayout.Toggle(destManager.destructibleTreesStayDeactivated, GUILayout.Width(20));
|
||||
EditorGUILayout.LabelField(new GUIContent("Don't Reactivate Terrain Objects", "If true, Destructible terrain object scripts will not be re-activated by ActivateDestructibles scripts. Recommended to leave this true for performance, unless you need to move terrain objects during the game or use progressive damage textures on them."));
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
if (destManager.autoDeactivateDestructibles || destManager.autoDeactivateDestructibleTerrainObjects)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField(new GUIContent("Deactivate After", "The time in seconds to automatically deactivate Destructible scripts when they are active and outside an ActivateDestructibles trigger area."), GUILayout.Width(100));
|
||||
destManager.deactivateAfter = EditorGUILayout.FloatField(destManager.deactivateAfter, GUILayout.Width(30));
|
||||
EditorGUILayout.LabelField("seconds", GUILayout.Width(50));
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
EditorGUILayout.Separator();
|
||||
EditorGUILayout.EndVertical();
|
||||
EditorGUILayout.Separator();
|
||||
|
||||
base.OnInspectorGUI();
|
||||
|
||||
destManager.useCameraDistanceLimit = EditorGUILayout.Toggle(new GUIContent("Camera Distance Limit", "If true, destructible objects beyond the specified distance from the main camera will be destroyed in a more limiting (ie, higher performance) way, such as the fallback particle effect."), destManager.useCameraDistanceLimit);
|
||||
if (destManager.useCameraDistanceLimit)
|
||||
{
|
||||
GUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("", GUILayout.Width(15));
|
||||
destManager.cameraDistanceLimit = EditorGUILayout.IntField("If distance to camera >", destManager.cameraDistanceLimit);
|
||||
GUILayout.EndHorizontal();
|
||||
GUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("", GUILayout.Width(15));
|
||||
EditorGUILayout.LabelField("Limit destruction to", GUILayout.Width(100));
|
||||
EditorGUILayout.EnumPopup(DestructionType.ParticleEffect);
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
if (GUI.changed && !Application.isPlaying)
|
||||
{
|
||||
EditorUtility.SetDirty(destManager);
|
||||
EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user