Files
XericLibrary-WebGL-Publish/Editor/DrawDebugLibrary/VisualizerScreenspaceParentInspector.cs
T
2026-07-06 08:47:33 +08:00

88 lines
4.8 KiB
C#

namespace DrawXXL
{
using System;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(VisualizerScreenspaceParent))]
[CanEditMultipleObjects]
public class VisualizerScreenspaceParentInspector : VisualizerParentInspector
{
public string tooltip_explaining_relativeToViewPortHeight = "This is relative to the viewport height.";
public VisualizerScreenspaceParent visualizerScreenspaceParentMonoBehaviour_unserialized;
void OnEnable()
{
OnEnable_base();
OnEnable_ofScreenspaceParent();
}
public void OnEnable_ofScreenspaceParent()
{
visualizerScreenspaceParentMonoBehaviour_unserialized = (VisualizerScreenspaceParent)target;
}
public bool DrawCameraChooser(bool drawWarningBox_forDisabledCamComponents)
{
SerializedProperty sP_screenspaceDefiningCamera = serializedObject.FindProperty("screenspaceDefiningCamera");
SerializedProperty sP_usedCameraIsAvailable = serializedObject.FindProperty("usedCameraIsAvailable");
EditorGUILayout.PropertyField(sP_screenspaceDefiningCamera, new GUIContent("Camera for drawing", "The viewport space of this camera is used for drawing."));
switch (sP_screenspaceDefiningCamera.enumValueIndex)
{
case (int)VisualizerScreenspaceParent.ScreenspaceDefiningCameras.cameraAtThisGameobject:
if (sP_usedCameraIsAvailable.boolValue == false)
{
EditorGUILayout.HelpBox("Drawing is skipped: There is no camera component attached to this gameobject.", MessageType.Warning, true);
return false;
}
break;
case (int)VisualizerScreenspaceParent.ScreenspaceDefiningCameras.manuallyAssignedCamera:
SerializedProperty sP_manuallyAssignedCamera = serializedObject.FindProperty("manuallyAssignedCamera");
EditorGUILayout.PropertyField(sP_manuallyAssignedCamera, new GUIContent("Manually assigned camera"));
if (sP_manuallyAssignedCamera.objectReferenceValue == null)
{
EditorGUILayout.HelpBox("Assign a camera to start drawing.", MessageType.Info, true);
return false;
}
break;
case (int)VisualizerScreenspaceParent.ScreenspaceDefiningCameras.automaticallySearchForMainGameViewCamera:
if (sP_usedCameraIsAvailable.boolValue == false)
{
EditorGUILayout.HelpBox("Drawing is skipped: No camera could be found.", MessageType.Warning, true);
return false;
}
break;
case (int)VisualizerScreenspaceParent.ScreenspaceDefiningCameras.sceneViewCamera:
if (sP_usedCameraIsAvailable.boolValue == false)
{
EditorGUILayout.HelpBox("Drawing is skipped: There is no Scene View Window available.", MessageType.Warning, true);
return false;
}
else
{
EditorGUI.indentLevel = EditorGUI.indentLevel + 1;
EditorGUILayout.PropertyField(serializedObject.FindProperty("alwaysChangeToCurrentlyActiveSceneView_insteadOfStayingAtTheSelectedOne"), new GUIContent("Always change to the currently active Scene View.", "Always change to the currently active Scene View:" + Environment.NewLine + Environment.NewLine + "This affects the situation when there is more then one Scene View window docked in the Editor." + Environment.NewLine + Environment.NewLine + "If it is disabled:" + Environment.NewLine + "The visualized camera will always remain the one of the same Scene View window, also if the focus changes between multiple Scene View windows." + Environment.NewLine + Environment.NewLine + "If it is enabled:" + Environment.NewLine + "The visualized camera will ongoingly switch to be the one of the Scene View window that has focus."));
EditorGUI.indentLevel = EditorGUI.indentLevel - 1;
}
break;
default:
break;
}
if (drawWarningBox_forDisabledCamComponents)
{
if (visualizerScreenspaceParentMonoBehaviour_unserialized.CheckIf_usedCameraIsActiveAndEnabled() == false)
{
EditorGUILayout.HelpBox("The drawing may be invisible, because the used camera component is inactive or disabled.", MessageType.Warning, true);
}
}
return true;
}
}
#endif
}