mischief-render-0.1.0.0: src/Mischief/Render/Sprite/Common.hs
module Mischief.Render.Sprite.Common where
import Linear (V2 (..))
import Mischief.ECS
import Mischief.Math (Transform)
import Mischief.Render.Buffer
import Mischief.Render.Layers (RenderLayers)
import Mischief.Shader.Internal.Buffers
import Mischief.Shader.Types (Vec)
import Mischief.Shader.Types qualified as ST
newtype Sprite = Sprite {image :: Entity}
instance Component Sprite where
required = require @(SpriteFlip, Anchor, Transform, RenderLayers)
data SpriteSlice = SpriteSlice {start :: V2 Int, size :: V2 Int} deriving (Component, Eq, Show)
data SpriteFlip = SpriteFlip {x :: Bool, y :: Bool} deriving (Component)
instance Default SpriteFlip where
def = SpriteFlip {x = False, y = False}
newtype Anchor = Anchor (V2 Float) deriving anyclass (Component)
instance Default Anchor where
def = Anchor $ V2 0.5 0.5