{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.KeyFrame
  ( KeyFrame(..)
  )
where

import Rattletrap.Type.Common
import Rattletrap.Type.Float32le
import Rattletrap.Type.Word32le

data KeyFrame = KeyFrame
  { KeyFrame -> Float32le
keyFrameTime :: Float32le
  -- ^ When this key frame occurs, in seconds.
  , KeyFrame -> Word32le
keyFrameFrame :: Word32le
  -- ^ The frame number of this key frame, starting from 0.
  , KeyFrame -> Word32le
keyFramePosition :: Word32le
  -- ^ The bit position of this key frame in the stream.
  } deriving (KeyFrame -> KeyFrame -> Bool
(KeyFrame -> KeyFrame -> Bool)
-> (KeyFrame -> KeyFrame -> Bool) -> Eq KeyFrame
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyFrame -> KeyFrame -> Bool
$c/= :: KeyFrame -> KeyFrame -> Bool
== :: KeyFrame -> KeyFrame -> Bool
$c== :: KeyFrame -> KeyFrame -> Bool
Eq, Eq KeyFrame
Eq KeyFrame
-> (KeyFrame -> KeyFrame -> Ordering)
-> (KeyFrame -> KeyFrame -> Bool)
-> (KeyFrame -> KeyFrame -> Bool)
-> (KeyFrame -> KeyFrame -> Bool)
-> (KeyFrame -> KeyFrame -> Bool)
-> (KeyFrame -> KeyFrame -> KeyFrame)
-> (KeyFrame -> KeyFrame -> KeyFrame)
-> Ord KeyFrame
KeyFrame -> KeyFrame -> Bool
KeyFrame -> KeyFrame -> Ordering
KeyFrame -> KeyFrame -> KeyFrame
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: KeyFrame -> KeyFrame -> KeyFrame
$cmin :: KeyFrame -> KeyFrame -> KeyFrame
max :: KeyFrame -> KeyFrame -> KeyFrame
$cmax :: KeyFrame -> KeyFrame -> KeyFrame
>= :: KeyFrame -> KeyFrame -> Bool
$c>= :: KeyFrame -> KeyFrame -> Bool
> :: KeyFrame -> KeyFrame -> Bool
$c> :: KeyFrame -> KeyFrame -> Bool
<= :: KeyFrame -> KeyFrame -> Bool
$c<= :: KeyFrame -> KeyFrame -> Bool
< :: KeyFrame -> KeyFrame -> Bool
$c< :: KeyFrame -> KeyFrame -> Bool
compare :: KeyFrame -> KeyFrame -> Ordering
$ccompare :: KeyFrame -> KeyFrame -> Ordering
$cp1Ord :: Eq KeyFrame
Ord, Int -> KeyFrame -> ShowS
[KeyFrame] -> ShowS
KeyFrame -> String
(Int -> KeyFrame -> ShowS)
-> (KeyFrame -> String) -> ([KeyFrame] -> ShowS) -> Show KeyFrame
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [KeyFrame] -> ShowS
$cshowList :: [KeyFrame] -> ShowS
show :: KeyFrame -> String
$cshow :: KeyFrame -> String
showsPrec :: Int -> KeyFrame -> ShowS
$cshowsPrec :: Int -> KeyFrame -> ShowS
Show)

$(deriveJson ''KeyFrame)