{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE StrictData #-} module Dodge.Data.LightSource where import Geometry import Control.Lens data LightSourceDraw = DefaultLightSourceDraw data TLSIntensity = ConstantIntensity | TLSFade Point3 Int data TLSUpdate = DestroyTLS | TimerTLS | IntensityTLS TLSIntensity data LSParam = LSParam { _lsPos :: !Point3 , _lsRad :: !Float , _lsCol :: !Point3 } data LightSource = LS { _lsID :: Int , _lsParam :: LSParam , _lsDir :: Float , _lsPict :: LightSourceDraw --LightSource -> Picture } data TempLightSource = TLS { _tlsParam :: LSParam , _tlsUpdate :: TLSUpdate --TempLightSource -> Maybe TempLightSource , _tlsTime :: Int } makeLenses ''LSParam makeLenses ''LightSource makeLenses ''TempLightSource