Remove temporary light sources as separate entity

This commit is contained in:
2024-11-26 13:12:55 +00:00
parent e93a804559
commit cc302a6846
17 changed files with 243 additions and 241 deletions
+44 -42
View File
@@ -1,13 +1,13 @@
module Dodge.LightSource (
tlsTimeRadFunPos,
tlsTimeRadColPos,
-- tlsTimeRadFunPos,
-- tlsTimeRadColPos,
lsRadCol,
lsColPosRad,
lsColPos,
lsPosCol,
lsPosRad,
lsColPosID,
makeTlsTimeRadColPos,
-- makeTlsTimeRadColPos,
destroyLS,
) where
@@ -23,18 +23,18 @@ import LensHelp
lsPosRad :: Point3 -> Float -> LightSource
lsPosRad = lsColPosRad 0.75
tlsTimeRadFunPos :: Int -> Float -> TLSIntensity -> Point3 -> TempLightSource
tlsTimeRadFunPos t rmax intensityF p =
TLS
{ _tlsParam =
LSParam
{ _lsPos = p
, _lsRad = rmax
, _lsCol = 0 -- intensityF t
}
, _tlsUpdate = IntensityTLS intensityF
, _tlsTime = t
}
--tlsTimeRadFunPos :: Int -> Float -> TLSIntensity -> Point3 -> TempLightSource
--tlsTimeRadFunPos t rmax intensityF p =
-- TLS
-- { _tlsParam =
-- LSParam
-- { _lsPos = p
-- , _lsRad = rmax
-- , _lsCol = 0 -- intensityF t
-- }
-- , _tlsUpdate = IntensityTLS intensityF
-- , _tlsTime = t
-- }
-- where
-- upF tls
@@ -66,27 +66,27 @@ lsRadCol r col =
defaultLS & lsParam . lsRad .~ r
& lsParam . lsCol .~ col
tlsTimeRadColPos ::
Int ->
-- | maximal radius
Float ->
Point3 ->
Point3 ->
TempLightSource
tlsTimeRadColPos t rmax col (V3 x y z) =
TLS
{ _tlsParam =
LSParam
{ _lsPos = V3 x y z
, _lsRad = rmax
, _lsCol = col
}
, _tlsUpdate = TimerTLS
, _tlsTime = t
}
makeTlsTimeRadColPos :: Int -> Float -> Point3 -> Point3 -> World -> World
makeTlsTimeRadColPos i rad (V3 r g b) p = cWorld . lWorld . tempLightSources .:~ tlsTimeRadColPos i rad (V3 r g b) p
--tlsTimeRadColPos ::
-- Int ->
-- -- | maximal radius
-- Float ->
-- Point3 ->
-- Point3 ->
-- TempLightSource
--tlsTimeRadColPos t rmax col (V3 x y z) =
-- TLS
-- { _tlsParam =
-- LSParam
-- { _lsPos = V3 x y z
-- , _lsRad = rmax
-- , _lsCol = col
-- }
-- , _tlsUpdate = TimerTLS
-- , _tlsTime = t
-- }
--
--makeTlsTimeRadColPos :: Int -> Float -> Point3 -> Point3 -> World -> World
--makeTlsTimeRadColPos i rad (V3 r g b) p = cWorld . lWorld . tempLightSources .:~ tlsTimeRadColPos i rad (V3 r g b) p
destroyLS :: Int -> World -> World
destroyLS lsid w =
@@ -100,11 +100,13 @@ destroyLS lsid w =
destroyLSFlashAt :: Point3 -> World -> World
destroyLSFlashAt (V3 x' y' z') =
cWorld . lWorld . tempLightSources
.:~ tlsTimeRadFunPos
20
150
(TLSFade 1 10)
(addZ z' p)
cWorld . lWorld . worldEvents .:~ MakeTempLight
(LSParam (addZ z' p) 150 1) 20
-- cWorld . lWorld . tempLightSources
-- .:~ tlsTimeRadFunPos
-- 20
-- 150
-- (TLSFade 1 10)
-- (addZ z' p)
where
p = V2 x' y'