using System; using System.Collections.Generic; using UnityEditor.Actions; using UnityEditor.EditorTools; using UnityEditor.Overlays; using UnityEditor.ProBuilder.Actions; using UnityEditor.Search; using UnityEngine; using UnityEngine.ProBuilder; using UnityEngine.UIElements; using UnityEditor.SettingsManagement; namespace UnityEditor.ProBuilder { class ProBuilderActionButton : VisualElement { const string k_UxmlPath = "Packages/com.unity.probuilder/Editor/Overlays/UXML/ActionButton.uxml"; static VisualTreeAsset s_ButtonAsset; bool m_Initialized = false; MenuAction m_Action; private MenuAction action { get => m_Action; set { m_Action = value; m_IconTexture = null; } } Button m_Button; Label m_Label; VisualElement m_Color; Image m_Icon; Action m_ClickHandler; Texture2D m_IconTexture = null; Texture2D iconTexture { get { if (m_IconTexture == null && m_Action != null) m_IconTexture = m_Action.icon; if (m_IconTexture == null) m_IconTexture = IconUtility.GetIcon("Tools/EditShape"); return m_IconTexture; } } internal ProBuilderActionButton() { Initialize(); } internal ProBuilderActionButton(MenuAction act) : this() { Bind(act); } void Initialize() { if (s_ButtonAsset == null) s_ButtonAsset = AssetDatabase.LoadAssetAtPath(k_UxmlPath); if (s_ButtonAsset != null) { m_Initialized = true; s_ButtonAsset.CloneTree(this); m_Button = this.Q