{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Prop where import Color import Control.Lens import Data.Aeson import Data.Aeson.TH import Geometry.Data import qualified Quaternion as Q import ShapePicture.Data data Prop = ShapeProp { _prPos :: Point2 , _prDraw :: SPic , _prID :: Int , _prRot :: Float } data DebrisType = Gib { _gibSize :: Float , _gibColor :: Color } | BlockDebris {_bdColor :: Color} | MetalDebris {_bdColor :: Color} | GlassDebris data Debris = DebrisChunk { _dbPos :: Point3 , _dbType :: DebrisType , _dbVel :: Point3 , _dbRot :: Q.Quaternion Float , _dbSpin :: Q.Quaternion Float } makeLenses ''Prop makeLenses ''Debris makeLenses ''DebrisType deriveJSON defaultOptions ''DebrisType deriveJSON defaultOptions ''Debris deriveJSON defaultOptions ''Prop