module Rattletrap.Encode.CamSettingsAttribute
  ( putCamSettingsAttribute
  )
where

import Rattletrap.Encode.Float32le
import Rattletrap.Type.CamSettingsAttribute

import qualified Data.Binary.Bits.Put as BinaryBits

putCamSettingsAttribute :: CamSettingsAttribute -> BinaryBits.BitPut ()
putCamSettingsAttribute :: CamSettingsAttribute -> BitPut ()
putCamSettingsAttribute CamSettingsAttribute
camSettingsAttribute = do
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeFov CamSettingsAttribute
camSettingsAttribute)
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeHeight CamSettingsAttribute
camSettingsAttribute)
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeAngle CamSettingsAttribute
camSettingsAttribute)
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeDistance CamSettingsAttribute
camSettingsAttribute)
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeStiffness CamSettingsAttribute
camSettingsAttribute)
  Float32le -> BitPut ()
putFloat32Bits (CamSettingsAttribute -> Float32le
camSettingsAttributeSwivelSpeed CamSettingsAttribute
camSettingsAttribute)
  case CamSettingsAttribute -> Maybe Float32le
camSettingsAttributeTransitionSpeed CamSettingsAttribute
camSettingsAttribute of
    Maybe Float32le
Nothing -> () -> BitPut ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
    Just Float32le
transitionSpeed -> Float32le -> BitPut ()
putFloat32Bits Float32le
transitionSpeed