// 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