module Graphics.LambdaCube.AnimationState where

import Data.Map

import Graphics.LambdaCube.Types

-- | Represents the state of an animation and the weight of it's influence.
--  remarks
--      Other classes can hold instances of this class to store the state of any animations
--    they are using.
data AnimationState
    = AnimationState
    { asBlendMask       :: [Float]      -- ^ the blend mask (containing per bone weights)
    , asAnimationName   :: String
    , asTimePos         :: FloatType
    , asLength          :: FloatType
    , asWeight          :: FloatType
    , asEnabled         :: Bool
    , asLoop            :: Bool
    }

-- | Class encapsulating a set of AnimationState objects.
data AnimationStateSet
    = AnimationStateSet
    { assDirtyFrameNumber       :: Int
    , assAnimationStates        :: Map String AnimationState
    , assEnabledAnimationStates :: [AnimationState] -- ^ List of enabled animation states
    }