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 ls  
        | dist campos (fst2 $ _lsPos ls) > 1000 = Nothing
        | otherwise = Just ( _lsPos ls,  _lsRad ls^(2::Int) , _lsIntensity ls)
    getTLS ls 
        | dist campos (fst2 $ _tlsPos ls) > 1000 = Nothing
        | otherwise = Just ( _tlsPos ls, _tlsRad ls^(2::Int), _tlsIntensity ls)
    campos = _cameraCenter w
    fst2 (V3 a b _) = V2 a b
