using System; using UnityEngine; using UnityEngine.UIElements; namespace UnityEditor.U2D.Sprites.SpriteEditorTool { internal class SpriteOutlineToolOverlayPanel : VisualElement { public class SpriteOutlineToolOverlayPanelFactory : UxmlFactory {} FloatField m_OutlineDetailField; IntegerField m_AlphaToleranceField; Slider m_OutlineDetailSlider; SliderInt m_AlphaToleranceSlider; Toggle m_SnapToggle; Toggle m_OptimizeOutline; Button m_GenerateButton; Button m_CopyButton; Button m_PasteButton; public event Action onGenerateOutline = () => { }; public event Action onAlphaToleranceChanged = _ => { }; public event Action onOutlineDetailChanged = _ => { }; public event Action onCopy = () => { }; public event Action onPaste = () => { }; public event Action onPasteAll = () => { }; public bool snapOn { get { return m_SnapToggle.value; } set { m_SnapToggle.SetValueWithoutNotify(value); } } public float outlineDetail { get { return m_OutlineDetailField.value; } set { m_OutlineDetailField.SetValueWithoutNotify(value); m_OutlineDetailSlider.SetValueWithoutNotify(value); } } public int alphaTolerance { get { return m_AlphaToleranceField.value; } set { m_AlphaToleranceField.SetValueWithoutNotify(value); m_AlphaToleranceSlider.SetValueWithoutNotify(value); } } public bool optimizeOutline { get => m_OptimizeOutline.value; set => m_OptimizeOutline.SetValueWithoutNotify(value); } public SpriteOutlineToolOverlayPanel() { styleSheets.Add(AssetDatabase.LoadAssetAtPath("Packages/com.unity.2d.sprite/Editor/UI/SpriteEditor/SpriteOutlineToolOverlayPanelStyle.uss")); RegisterCallback((e) => { e.StopPropagation(); }); RegisterCallback((e) => { e.StopPropagation(); }); } public void SetPanelMode(bool hasSelection) { if (hasSelection) { m_GenerateButton.text = L10n.Tr("Generate"); m_CopyButton.SetEnabled(true); m_PasteButton.SetEnabled(true); } else { m_GenerateButton.text = L10n.Tr("Generate All"); m_CopyButton.SetEnabled(false); m_PasteButton.SetEnabled(false); } } void GenerateOutline() { onGenerateOutline(); } void OnCopy() { onCopy(); } void OnPaste() { onPaste(); } void OnPasteAll() { onPasteAll(); } private void BindElements() { m_GenerateButton = this.Q