TERPGDemo/RPGDemo/Assets/Plugins/RootMotion/Editor/FinalIK/UniversalPoserInspector.cs
2025-04-22 17:16:40 +08:00

53 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace RootMotion.FinalIK
{
[CustomEditor(typeof(UniversalPoser))]
public class UniversalPoserInspector : Editor
{
private UniversalPoser script { get { return target as UniversalPoser; } }
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(serializedObject.FindProperty("fixTransforms"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("poseRoot"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("weight"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("localRotationWeight"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("localPositionWeight"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("targetAxis1"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("targetAxis2"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("axis1"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("axis2"));
var bones = serializedObject.FindProperty("bones");
EditorGUILayout.PropertyField(bones);
if (GUILayout.Button("Auto-Assign Bones"))
{
var children = script.GetComponentsInChildren<Transform>();
if (children.Length > 1)
{
bones.ClearArray();
for (int i = 1; i < children.Length; i++)
{
bones.InsertArrayElementAtIndex(i - 1);
bones.GetArrayElementAtIndex(i - 1).FindPropertyRelative("bone").objectReferenceValue = children[i];
}
}
}
if (serializedObject.ApplyModifiedProperties())
{
EditorUtility.SetDirty(script);
}
}
}
}