rattletrap-9.0.3: source/library/Rattletrap/Encode/Vector.hs
module Rattletrap.Encode.Vector
( putVector
)
where
import Rattletrap.Encode.CompressedWord
import Rattletrap.Type.CompressedWord
import Rattletrap.Type.Vector
import qualified Data.Binary.Bits.Put as BinaryBits
putVector :: Vector -> BinaryBits.BitPut ()
putVector vector = do
let
bitSize =
round (logBase (2 :: Float) (fromIntegral (vectorBias vector))) - 1 :: Word
dx =
fromIntegral (vectorX vector + fromIntegral (vectorBias vector)) :: Word
dy =
fromIntegral (vectorY vector + fromIntegral (vectorBias vector)) :: Word
dz =
fromIntegral (vectorZ vector + fromIntegral (vectorBias vector)) :: Word
limit = 2 ^ (bitSize + 2) :: Word
putCompressedWord (vectorSize vector)
putCompressedWord (CompressedWord limit dx)
putCompressedWord (CompressedWord limit dy)
putCompressedWord (CompressedWord limit dz)