19 lines
602 B
Haskell
19 lines
602 B
Haskell
module Dodge.Render.Lights
|
|
( lightsForGloom
|
|
) where
|
|
import Dodge.Data
|
|
import Geometry
|
|
|
|
import Data.Maybe
|
|
import qualified Data.IntMap.Lazy as IM
|
|
|
|
lightsForGloom :: World -> [(Point3,Float,Point3)]
|
|
lightsForGloom w = mapMaybe getLS (IM.elems $ _lightSources w) ++ mapMaybe getTLS (_tempLightSources w)
|
|
where
|
|
getLS = getlsparam . _lsParam
|
|
getTLS = getlsparam . _tlsParam
|
|
getlsparam ls
|
|
| dist (_cameraCenter w) (fst2 $ _lsPos ls) > _viewDistance w + _lsRad ls = Nothing
|
|
| otherwise = Just ( _lsPos ls, _lsRad ls^(2::Int) , _lsCol ls)
|
|
fst2 (V3 a b _) = V2 a b
|