module Rattletrap.Encode.Frame ( putFrames ) where import Rattletrap.Encode.Float32le import Rattletrap.Encode.Replication import Rattletrap.Type.Frame import qualified Data.Binary.Bits.Put as BinaryBits putFrames :: [Frame] -> BinaryBits.BitPut () putFrames frames = case frames of [] -> pure () [frame] -> putFrame frame first : rest -> do putFrame first putFrames rest putFrame :: Frame -> BinaryBits.BitPut () putFrame frame = do putFloat32Bits (frameTime frame) putFloat32Bits (frameDelta frame) putReplications (frameReplications frame)