63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
namespace SuperTiled2Unity.Editor
|
|
{
|
|
// Helper struct to deal with Tile Id values having burned-in flip flags
|
|
public struct TileIdMath
|
|
{
|
|
// Flip flags from tiled
|
|
private const uint TiledHexagonal120Flag = 0x10000000;
|
|
private const uint TiledDiagonalFlipFlag = 0x20000000;
|
|
private const uint TiledVerticalFlipFlag = 0x40000000;
|
|
private const uint TiledHorizontalFlipFlag = 0x80000000;
|
|
|
|
private uint m_ImportedTileId;
|
|
private FlipFlags m_FlipFlags;
|
|
|
|
public TileIdMath(uint importedTileId)
|
|
{
|
|
m_ImportedTileId = importedTileId;
|
|
|
|
m_FlipFlags = 0;
|
|
m_FlipFlags |= HasHorizontalFlip ? FlipFlags.Horizontal : 0;
|
|
m_FlipFlags |= HasVerticalFlip ? FlipFlags.Vertical : 0;
|
|
m_FlipFlags |= HasDiagonalFlip ? FlipFlags.Diagonal : 0;
|
|
m_FlipFlags |= HasHexagonal120Flip ? FlipFlags.Hexagonal120 : 0;
|
|
}
|
|
|
|
// The tileId with baked in flip flags
|
|
public uint ImportedlTileId { get { return m_ImportedTileId; } }
|
|
|
|
// Just the raw tileId (no flip flags)
|
|
public int JustTileId
|
|
{
|
|
get { return (int)(m_ImportedTileId & ~(TiledHorizontalFlipFlag | TiledVerticalFlipFlag | TiledDiagonalFlipFlag | TiledHexagonal120Flag)); }
|
|
}
|
|
|
|
public FlipFlags FlipFlags { get { return m_FlipFlags; } }
|
|
|
|
public bool HasHorizontalFlip
|
|
{
|
|
get { return (m_ImportedTileId & TiledHorizontalFlipFlag) != 0; }
|
|
}
|
|
|
|
public bool HasVerticalFlip
|
|
{
|
|
get { return (m_ImportedTileId & TiledVerticalFlipFlag) != 0; }
|
|
}
|
|
|
|
public bool HasDiagonalFlip
|
|
{
|
|
get { return (m_ImportedTileId & TiledDiagonalFlipFlag) != 0; }
|
|
}
|
|
|
|
public bool HasHexagonal120Flip
|
|
{
|
|
get { return (m_ImportedTileId & TiledHexagonal120Flag) != 0; }
|
|
}
|
|
|
|
public bool HasFlip
|
|
{
|
|
get { return HasHorizontalFlip || HasVerticalFlip || HasDiagonalFlip || HasHexagonal120Flip; }
|
|
}
|
|
}
|
|
}
|