Files
2026-05-31 14:27:52 -07:00

55 lines
2.3 KiB
C#

using Rukhanka.Hybrid;
using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
////////////////////////////////////////////////////////////////////////////////////////
namespace Rukhanka.Editor
{
[CustomEditor(typeof(RigDefinitionAuthoring))]
public class RigDefinitionAuthoringEditor : UnityEditor.Editor
{
public VisualTreeAsset inspectorXML;
VisualElement boneStrippingMaskElement;
VisualElement rigUserConfigGroupElement;
VisualElement inspector;
////////////////////////////////////////////////////////////////////////////////////////
public override VisualElement CreateInspectorGUI()
{
inspector = new VisualElement();
inspectorXML.CloneTree(inspector);
boneStrippingMaskElement = inspector.Q("boneStrippingMask");
boneStrippingMaskElement.TrackSerializedObjectValue(serializedObject, ShowOrHideBoneStrippingMask);
ShowOrHideBoneStrippingMask(serializedObject);
rigUserConfigGroupElement = inspector.Q("rigUserConfigGroup");
rigUserConfigGroupElement.TrackSerializedObjectValue(serializedObject, ShowOrHideRigUserConfig);
ShowOrHideRigUserConfig(serializedObject);
return inspector;
}
////////////////////////////////////////////////////////////////////////////////////////
void ShowOrHideBoneStrippingMask(SerializedObject so)
{
// Hide bone stripping mask for "None" and "Automatic" modes
var strippingMode = serializedObject.FindProperty("boneEntityStrippingMode");
var showBoneStrippingMask = (RigDefinitionAuthoring.BoneEntityStrippingMode)strippingMode.enumValueIndex == RigDefinitionAuthoring.BoneEntityStrippingMode.Manual;
boneStrippingMaskElement.style.display = showBoneStrippingMask ? DisplayStyle.Flex : DisplayStyle.None;
}
////////////////////////////////////////////////////////////////////////////////////////
void ShowOrHideRigUserConfig(SerializedObject so)
{
var m = serializedObject.FindProperty("rigConfigSource");
var showUserConfig = (RigDefinitionAuthoring.RigConfigSource)m.enumValueIndex == RigDefinitionAuthoring.RigConfigSource.UserDefined;
rigUserConfigGroupElement.style.display = showUserConfig ? DisplayStyle.Flex : DisplayStyle.None;
}
}
}