module Rattletrap.KeyFrame where

import Rattletrap.Float32
import Rattletrap.Word32

import qualified Data.Binary as Binary

data KeyFrame = KeyFrame
  { keyFrameTime :: Float32
  , keyFrameFrame :: Word32
  , keyFramePosition :: Word32
  } deriving (Eq, Ord, Show)

getKeyFrame :: Binary.Get KeyFrame
getKeyFrame = do
  time <- getFloat32
  frame <- getWord32
  position <- getWord32
  pure
    KeyFrame
    {keyFrameTime = time, keyFrameFrame = frame, keyFramePosition = position}

putKeyFrame :: KeyFrame -> Binary.Put
putKeyFrame keyFrame = do
  putFloat32 (keyFrameTime keyFrame)
  putWord32 (keyFrameFrame keyFrame)
  putWord32 (keyFramePosition keyFrame)