52 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|