UnityLaparoscopicSceneSimul.../Assets/Scripts/Editor/TransformExtensionEditor.cs
2026-03-18 20:09:32 +03:00

52 lines
1.8 KiB
C#

using System;
using System.Reflection;
using UnityEditor;
using UnityEditor.Rendering;
using UnityEngine;
[CustomEditor(typeof(Transform), true)]
public class TransformExtensionEditor : Editor
{
Editor defaultEditor;
Transform transform;
void OnEnable()
{
//When this inspector is created, also create the built-in inspector
defaultEditor = CreateEditor(targets, Type.GetType("UnityEditor.TransformInspector, UnityEditor"));
transform = target as Transform;
}
void OnDisable()
{
//When OnDisable is called, the default editor we created should be destroyed to avoid memory leakage.
//Also, make sure to call any required methods like OnDisable
MethodInfo disableMethod = defaultEditor.GetType().GetMethod("OnDisable", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
if (disableMethod != null)
disableMethod.Invoke(defaultEditor, null);
DestroyImmediate(defaultEditor);
}
public override void OnInspectorGUI()
{
EditorGUILayout.LabelField("Local Space", EditorStyles.boldLabel);
defaultEditor.OnInspectorGUI();
Transform sceneCameraTransform = SceneView.lastActiveSceneView.camera.transform;
if (GUILayout.Button("Set at View Point"))
{
transform.position = sceneCameraTransform.position;
transform.rotation = sceneCameraTransform.rotation;
}
if (GUILayout.Button("Set SceneCamera to selected"))
{
sceneCameraTransform.position = transform.position;
sceneCameraTransform.rotation = transform.rotation;
SceneView.lastActiveSceneView.rotation = transform.rotation;
SceneView.lastActiveSceneView.AlignViewToObject(transform);
}
}
}