123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System;
- using UnityEditor.U2D.Common;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.U2D.Animation
- {
- #if ENABLE_UXML_SERIALIZED_DATA
- [UxmlElement]
- #endif
- internal partial class MeshToolbar : Toolbar
- {
- private const string k_UxmlPath = "SkinningModule/MeshToolbar.uxml";
- private const string k_ToolbarId = "MeshToolbar";
-
- private const string k_SelectGeometryId = "SelectGeometry";
- private const string k_CreateVertexId = "CreateVertex";
- private const string k_CreateEdgeId = "CreateEdge";
- private const string k_SplitEdgeId = "SplitEdge";
- private const string k_GenerateGeometryId = "GenerateGeometry";
-
- #if ENABLE_UXML_TRAITS
- public class MeshToolbarFactory : UxmlFactory<MeshToolbar, MeshToolbarUxmlTraits> {}
- public class MeshToolbarUxmlTraits : UxmlTraits {}
- #endif
-
- public event Action<Tools> SetMeshTool = (mode) => {};
- public SkinningCache skinningCache { get; set; }
-
- public static MeshToolbar GenerateFromUXML()
- {
- var clone = GetClone(k_UxmlPath, k_ToolbarId) as MeshToolbar;
- clone.BindElements();
- clone.SetupShortcutUtility();
- clone.LocalizeTextInChildren();
- clone.AddShortcutsToToolTips();
- return clone;
- }
-
- public MeshToolbar()
- {
- styleSheets.Add(ResourceLoader.Load<StyleSheet>("SkinningModule/MeshToolbarStyle.uss"));
- }
-
- private void BindElements()
- {
- var button = this.Q<Button>(k_SelectGeometryId);
- button.clickable.clicked += () => { SetMeshTool(Tools.EditGeometry); };
-
- button = this.Q<Button>(k_CreateVertexId);
- button.clickable.clicked += () => { SetMeshTool(Tools.CreateVertex); };
-
- button = this.Q<Button>(k_CreateEdgeId);
- button.clickable.clicked += () => { SetMeshTool(Tools.CreateEdge); };
-
- button = this.Q<Button>(k_SplitEdgeId);
- button.clickable.clicked += () => { SetMeshTool(Tools.SplitEdge); };
-
- button = this.Q<Button>(k_GenerateGeometryId);
- button.clickable.clicked += () => { SetMeshTool(Tools.GenerateGeometry); };
- }
-
- private void SetupShortcutUtility()
- {
- m_ShortcutUtility = new ShortcutUtility(ShortcutIds.editGeometry,
- ShortcutIds.createVertex,
- ShortcutIds.createEdge,
- ShortcutIds.splitEdge,
- ShortcutIds.autoGeometry);
- m_ShortcutUtility.OnShortcutChanged = () =>
- {
- RestoreButtonTooltips(k_UxmlPath, k_ToolbarId);
- AddShortcutsToToolTips();
- };
- }
-
- public void UpdateToggleState()
- {
- //TODO: Make UI not be aware of BaseTool, Cache, etc. Use Tool enum
- var button = this.Q<Button>(k_SelectGeometryId);
- SetButtonChecked(button, skinningCache.GetTool(Tools.EditGeometry).isActive);
-
- button = this.Q<Button>(k_CreateVertexId);
- SetButtonChecked(button, skinningCache.GetTool(Tools.CreateVertex).isActive);
-
- button = this.Q<Button>(k_CreateEdgeId);
- SetButtonChecked(button, skinningCache.GetTool(Tools.CreateEdge).isActive);
-
- button = this.Q<Button>(k_SplitEdgeId);
- SetButtonChecked(button, skinningCache.GetTool(Tools.SplitEdge).isActive);
-
- button = this.Q<Button>(k_GenerateGeometryId);
- SetButtonChecked(button, skinningCache.GetTool(Tools.GenerateGeometry).isActive);
- }
-
- private void AddShortcutsToToolTips()
- {
- m_ShortcutUtility.AddShortcutToButtonTooltip(this, k_SelectGeometryId, ShortcutIds.editGeometry);
- m_ShortcutUtility.AddShortcutToButtonTooltip(this, k_CreateVertexId, ShortcutIds.createVertex);
- m_ShortcutUtility.AddShortcutToButtonTooltip(this, k_CreateEdgeId, ShortcutIds.createEdge);
- m_ShortcutUtility.AddShortcutToButtonTooltip(this, k_SplitEdgeId, ShortcutIds.splitEdge);
- m_ShortcutUtility.AddShortcutToButtonTooltip(this, k_GenerateGeometryId, ShortcutIds.autoGeometry);
- }
- }
- }
|