{-# LANGUAGE TemplateHaskell #-}

module Rattletrap.Type.RigidBodyStateAttribute
  ( RigidBodyStateAttribute(..)
  )
where

import Rattletrap.Type.Common
import Rattletrap.Type.Rotation
import Rattletrap.Type.Vector

data RigidBodyStateAttribute = RigidBodyStateAttribute
  { RigidBodyStateAttribute -> Bool
rigidBodyStateAttributeSleeping :: Bool
  , RigidBodyStateAttribute -> Vector
rigidBodyStateAttributeLocation :: Vector
  , RigidBodyStateAttribute -> Rotation
rigidBodyStateAttributeRotation :: Rotation
  , RigidBodyStateAttribute -> Maybe Vector
rigidBodyStateAttributeLinearVelocity :: Maybe Vector
  , RigidBodyStateAttribute -> Maybe Vector
rigidBodyStateAttributeAngularVelocity :: Maybe Vector
  } deriving (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
(RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> Eq RigidBodyStateAttribute
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c/= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
== :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c== :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
Eq, Eq RigidBodyStateAttribute
Eq RigidBodyStateAttribute
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Ordering)
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> (RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool)
-> (RigidBodyStateAttribute
    -> RigidBodyStateAttribute -> RigidBodyStateAttribute)
-> (RigidBodyStateAttribute
    -> RigidBodyStateAttribute -> RigidBodyStateAttribute)
-> Ord RigidBodyStateAttribute
RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
RigidBodyStateAttribute -> RigidBodyStateAttribute -> Ordering
RigidBodyStateAttribute
-> RigidBodyStateAttribute -> RigidBodyStateAttribute
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: RigidBodyStateAttribute
-> RigidBodyStateAttribute -> RigidBodyStateAttribute
$cmin :: RigidBodyStateAttribute
-> RigidBodyStateAttribute -> RigidBodyStateAttribute
max :: RigidBodyStateAttribute
-> RigidBodyStateAttribute -> RigidBodyStateAttribute
$cmax :: RigidBodyStateAttribute
-> RigidBodyStateAttribute -> RigidBodyStateAttribute
>= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c>= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
> :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c> :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
<= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c<= :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
< :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
$c< :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Bool
compare :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Ordering
$ccompare :: RigidBodyStateAttribute -> RigidBodyStateAttribute -> Ordering
$cp1Ord :: Eq RigidBodyStateAttribute
Ord, Int -> RigidBodyStateAttribute -> ShowS
[RigidBodyStateAttribute] -> ShowS
RigidBodyStateAttribute -> String
(Int -> RigidBodyStateAttribute -> ShowS)
-> (RigidBodyStateAttribute -> String)
-> ([RigidBodyStateAttribute] -> ShowS)
-> Show RigidBodyStateAttribute
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RigidBodyStateAttribute] -> ShowS
$cshowList :: [RigidBodyStateAttribute] -> ShowS
show :: RigidBodyStateAttribute -> String
$cshow :: RigidBodyStateAttribute -> String
showsPrec :: Int -> RigidBodyStateAttribute -> ShowS
$cshowsPrec :: Int -> RigidBodyStateAttribute -> ShowS
Show)

$(deriveJson ''RigidBodyStateAttribute)