RoboticArms/Library/PackageCache/com.unity.animation.rigging@68167b505d2b/Editor/AnimationRig/RigBuilderEditor.cs
2025-11-17 15:16:36 +07:00

62 lines
2.2 KiB
C#

using UnityEngine;
using UnityEngine.Animations.Rigging;
using UnityEditorInternal;
namespace UnityEditor.Animations.Rigging
{
[CustomEditor(typeof(RigBuilder))]
class RigBuilderEditor : Editor
{
static readonly GUIContent k_RigLabel = new GUIContent("Rig Layers");
SerializedProperty m_Rigs;
ReorderableList m_ReorderableList;
void OnEnable()
{
m_Rigs = serializedObject.FindProperty("m_RigLayers");
m_ReorderableList = ReorderableListHelper.Create(serializedObject, m_Rigs, true, true);
if (m_ReorderableList.count == 0)
((RigBuilder)serializedObject.targetObject).layers.Add(new RigLayer(null));
m_ReorderableList.drawHeaderCallback = (Rect rect) => EditorGUI.LabelField(rect, k_RigLabel);
m_ReorderableList.onAddCallback = (ReorderableList list) =>
{
((RigBuilder)(serializedObject.targetObject)).layers.Add(new RigLayer(null, true));
};
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.Separator();
m_ReorderableList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
}
[MenuItem("CONTEXT/RigBuilder/Transfer motion to constraint", false, 611)]
public static void TransferMotionToConstraint(MenuCommand command)
{
var rigBuilder = command.context as RigBuilder;
BakeUtils.TransferMotionToConstraint(rigBuilder);
}
[MenuItem("CONTEXT/RigBuilder/Transfer motion to skeleton", false, 612)]
public static void TransferMotionToSkeleton(MenuCommand command)
{
var rigBuilder = command.context as RigBuilder;
BakeUtils.TransferMotionToSkeleton(rigBuilder);
}
[MenuItem("CONTEXT/RigBuilder/Transfer motion to constraint", true)]
[MenuItem("CONTEXT/RigBuilder/Transfer motion to skeleton", true)]
public static bool TransferMotionValidate(MenuCommand command)
{
var rigBuilder = command.context as RigBuilder;
return BakeUtils.TransferMotionValidate(rigBuilder);
}
}
}