evershade/Packages/super-tiled2unity.v2.2.0/Editor/TileIdMath.cs

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