PO/Library/PackageCache/com.unity.2d.animation@5.0.7/Editor/SkinningModule/UI/WeightToolbar.cs

69 lines
2.4 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.U2D.Animation
{
internal class WeightToolbar : Toolbar
{
public class CustomUXMLFactor : UxmlFactory<WeightToolbar, UxmlTraits> {}
public event Action<Tools> SetWeightTool = (mode) => {};
public SkinningCache skinningCache { get; set; }
public WeightToolbar()
{
styleSheets.Add(ResourceLoader.Load<StyleSheet>("SkinningModule/WeightToolbarStyle.uss"));
}
public void EnableBoneInfluenceWidget()
{
this.Q<Button>("BoneInfluenceWidget").SetEnabled(true);
}
public void DisableBoneInfluenceWidget()
{
this.Q<Button>("BoneInfluenceWidget").SetEnabled(false);
}
public void BindElements()
{
var button = this.Q<Button>("AutoGenerateWeight");
button.clickable.clicked += () => SetWeightTool(Tools.GenerateWeights);
button = this.Q<Button>("WeightPainterSlider");
button.clickable.clicked += () => SetWeightTool(Tools.WeightSlider);
button = this.Q<Button>("WeightPainterBrush");
button.clickable.clicked += () => SetWeightTool(Tools.WeightBrush);
button = this.Q<Button>("BoneInfluenceWidget");
button.clickable.clicked += () => SetWeightTool(Tools.BoneInfluence);
}
public static WeightToolbar GenerateFromUXML()
{
var visualTree = ResourceLoader.Load<VisualTreeAsset>("SkinningModule/WeightToolbar.uxml");
var clone = visualTree.CloneTree().Q<WeightToolbar>("WeightToolbar");
clone.BindElements();
return clone;
}
public void UpdateToggleState()
{
//TODO: Make UI not be aware of BaseTool, Cache, etc. Use Tool enum
var button = this.Q<Button>("WeightPainterSlider");
SetButtonChecked(button, skinningCache.GetTool(Tools.WeightSlider).isActive);
button = this.Q<Button>("BoneInfluenceWidget");
SetButtonChecked(button, skinningCache.GetTool(Tools.BoneInfluence).isActive);
button = this.Q<Button>("WeightPainterBrush");
SetButtonChecked(button, skinningCache.GetTool(Tools.WeightBrush).isActive);
button = this.Q<Button>("AutoGenerateWeight");
SetButtonChecked(button, skinningCache.GetTool(Tools.GenerateWeights).isActive);
}
}
}