module Rattletrap.Encode.RigidBodyStateAttribute ( putRigidBodyStateAttribute ) where import Rattletrap.Encode.Rotation import Rattletrap.Encode.Vector import Rattletrap.Type.RigidBodyStateAttribute import qualified Data.Binary.Bits.Put as BinaryBits putRigidBodyStateAttribute :: RigidBodyStateAttribute -> BinaryBits.BitPut () putRigidBodyStateAttribute :: RigidBodyStateAttribute -> BitPut () putRigidBodyStateAttribute RigidBodyStateAttribute rigidBodyStateAttribute = do Bool -> BitPut () BinaryBits.putBool (RigidBodyStateAttribute -> Bool rigidBodyStateAttributeSleeping RigidBodyStateAttribute rigidBodyStateAttribute) Vector -> BitPut () putVector (RigidBodyStateAttribute -> Vector rigidBodyStateAttributeLocation RigidBodyStateAttribute rigidBodyStateAttribute) Rotation -> BitPut () putRotation (RigidBodyStateAttribute -> Rotation rigidBodyStateAttributeRotation RigidBodyStateAttribute rigidBodyStateAttribute) case RigidBodyStateAttribute -> Maybe Vector rigidBodyStateAttributeLinearVelocity RigidBodyStateAttribute rigidBodyStateAttribute of Maybe Vector Nothing -> () -> BitPut () forall (f :: * -> *) a. Applicative f => a -> f a pure () Just Vector linearVelocity -> Vector -> BitPut () putVector Vector linearVelocity case RigidBodyStateAttribute -> Maybe Vector rigidBodyStateAttributeAngularVelocity RigidBodyStateAttribute rigidBodyStateAttribute of Maybe Vector Nothing -> () -> BitPut () forall (f :: * -> *) a. Applicative f => a -> f a pure () Just Vector angularVelocity -> Vector -> BitPut () putVector Vector angularVelocity