Singularity/Library/PackageCache/com.unity.2d.animation@7.0.10/Editor/SkinningModule/UI/PastePanel.cs
2024-05-06 11:45:45 -07:00

84 lines
2.5 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.U2D.Animation
{
internal class PastePanel : VisualElement
{
public class PastePanelFactory : UxmlFactory<PastePanel, PastePanelUxmlTraits> {}
public class PastePanelUxmlTraits : UxmlTraits {}
public event Action<bool, bool, bool, bool> onPasteActivated = (bones, mesh, flipX, flipY) => {};
private Toggle m_BonesToggle;
private Toggle m_MeshToggle;
private Toggle m_FlipXToggle;
private Toggle m_FlipYToggle;
public bool bones
{
get { return m_BonesToggle.value && m_BonesToggle.enabledSelf; }
set { m_BonesToggle.value = value; }
}
public bool mesh
{
get { return m_MeshToggle.value; }
set { m_MeshToggle.value = value; }
}
public bool flipX
{
get { return m_FlipXToggle.value; }
set { m_FlipXToggle.value = value; }
}
public bool flipY
{
get { return m_FlipYToggle.value; }
set { m_FlipYToggle.value = value; }
}
public PastePanel()
{
styleSheets.Add(ResourceLoader.Load<StyleSheet>("SkinningModule/PastePanelStyle.uss"));
if (EditorGUIUtility.isProSkin)
AddToClassList("Dark");
RegisterCallback<MouseDownEvent>((e) => { e.StopPropagation(); });
RegisterCallback<MouseUpEvent>((e) => { e.StopPropagation(); });
}
public void BindElements()
{
m_BonesToggle = this.Q<Toggle>("BonesField");
m_MeshToggle = this.Q<Toggle>("MeshField");
m_FlipXToggle = this.Q<Toggle>("FlipXField");
m_FlipYToggle = this.Q<Toggle>("FlipYField");
var pasteButton = this.Q<Button>("PasteButton");
pasteButton.clickable.clicked += OnPasteActivated;
}
public void OnPasteActivated()
{
onPasteActivated(bones, mesh, flipX, flipY);
}
public void BonePasteEnable(bool value)
{
m_BonesToggle.SetEnabled(value);
}
public static PastePanel GenerateFromUXML()
{
var visualTree = ResourceLoader.Load<VisualTreeAsset>("SkinningModule/PastePanel.uxml");
var clone = visualTree.CloneTree().Q<PastePanel>("PastePanel");
clone.LocalizeTextInChildren();
clone.BindElements();
return clone;
}
}
}