using System; using UnityEngine; namespace UnityEditor.U2D.Sprites { /// /// Structure to hold the edit capability of a sprite in Sprite Editor Window. /// [Serializable] public struct EditCapability { /// /// Default editing capability where all capability is allowed. /// public static EditCapability defaultCapability = new EditCapability() { m_Capability = EEditCapability.None }; [SerializeField] EEditCapability m_Capability; /// /// Constructor to create EditCapability with specific capabilities. /// /// Capabilities allowed. public EditCapability(params EEditCapability[] capabilities) { m_Capability = EEditCapability.None; if (capabilities != null) { for (int i = 0; i < capabilities.Length; ++i) { SetCapability(capabilities[i], true); } } } /// /// Check if the capability is enabled. /// /// Capability to check. /// True if capability is enabled. False otherwise. public bool HasCapability(EEditCapability hasCapability) { return m_Capability.HasFlag(hasCapability); } /// /// Enable or disable a capability. /// /// Capability to modify. /// True to enable. False otherwise. public void SetCapability(EEditCapability capability, bool on) { if(on) m_Capability |= capability; else m_Capability &= ~capability; } } /// /// Edit capability flags. /// [Flags] public enum EEditCapability { /// No capability. None = 0, /// Edit sprite's name capability. EditSpriteName = 1 << 0, /// Edit sprite's rect capability. EditSpriteRect = 1 << 1, /// Edit sprite's border capability. EditBorder = 1 << 2, /// Edit sprite's pivot capability. EditPivot = 1 << 3, /// Allow creation and deletion of sprite. CreateAndDeleteSprite = 1 << 4, /// Allow slicing of Sprites on import of asset. SliceOnImport = 1 << 5, /// All capabilities are enabled. All = EditSpriteRect | EditBorder | EditPivot | EditSpriteName | CreateAndDeleteSprite | SliceOnImport } }