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
}
}