// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // #if UNITY_EDITOR using System; using UnityEditor; using UnityEngine; namespace Animancer.Editor { /// [Editor-Only] A for fields. /// https://kybernetik.com.au/animancer/api/Animancer.Editor/WeightedMaskLayersDefinitionDrawer [CustomPropertyDrawer(typeof(WeightedMaskLayersDefinition), true)] public class WeightedMaskLayersDefinitionDrawer : EditableFieldDrawer { /************************************************************************************************************************/ private static readonly Action OnEditTarget = property => WeightedMaskLayersDefinitionWindow.Open( (WeightedMaskLayers)property.serializedObject.targetObject, false); /************************************************************************************************************************/ /// public override void OnGUI(Rect area, SerializedProperty property, GUIContent label) { try { if (property.serializedObject.targetObject is WeightedMaskLayers) OnEdit += OnEditTarget; base.OnGUI(area, property, label); } finally { OnEdit -= OnEditTarget; } } /************************************************************************************************************************/ /// public override void GetEditButtonLabel(SerializedProperty property, GUIContent label) { var transforms = property.FindPropertyRelative(WeightedMaskLayersDefinition.TransformsField); var weights = property.FindPropertyRelative(WeightedMaskLayersDefinition.WeightsField); var transformCount = transforms.arraySize; var groupCount = transformCount > 0 ? weights.arraySize / transformCount : 0; label.text = $"Edit [{transformCount} Transforms] x [{groupCount} Groups]"; } /************************************************************************************************************************/ } } #endif