rattletrap-0.1.0: library/Rattletrap/AttributeValue/WeldedInfo.hs
module Rattletrap.AttributeValue.WeldedInfo where
import Rattletrap.Float32
import Rattletrap.Int32
import Rattletrap.Int8Vector
import Rattletrap.Vector
import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit
data WeldedInfoAttributeValue = WeldedInfoAttributeValue
{ weldedInfoAttributeValueActive :: Bool
, weldedInfoAttributeValueActorId :: Int32
, weldedInfoAttributeValueOffset :: Vector
, weldedInfoAttributeValueMass :: Float32
, weldedInfoAttributeValueRotation :: Int8Vector
} deriving (Eq, Ord, Show)
getWeldedInfoAttributeValue :: BinaryBit.BitGet WeldedInfoAttributeValue
getWeldedInfoAttributeValue = do
active <- BinaryBit.getBool
actorId <- getInt32Bits
offset <- getVector
mass <- getFloat32Bits
rotation <- getInt8Vector
pure (WeldedInfoAttributeValue active actorId offset mass rotation)
putWeldedInfoAttributeValue :: WeldedInfoAttributeValue -> BinaryBit.BitPut ()
putWeldedInfoAttributeValue weldedInfoAttributeValue = do
BinaryBit.putBool (weldedInfoAttributeValueActive weldedInfoAttributeValue)
putInt32Bits (weldedInfoAttributeValueActorId weldedInfoAttributeValue)
putVector (weldedInfoAttributeValueOffset weldedInfoAttributeValue)
putFloat32Bits (weldedInfoAttributeValueMass weldedInfoAttributeValue)
putInt8Vector (weldedInfoAttributeValueRotation weldedInfoAttributeValue)