Files
loop/src/Dodge/WorldLoad.hs
T
2025-07-30 09:20:41 +01:00

29 lines
870 B
Haskell

module Dodge.WorldLoad where
import Control.Lens
import Control.Monad
import Data.Preload.Render
import Dodge.Data.Universe
import Shader.Bind
import Shader.Data
import Shader.Poke.Floor
postUniverseLoadSideEffect :: Universe -> Universe
postUniverseLoadSideEffect = uvIOEffects %~ (\f uv -> (uvWorld . cWorld) (postWorldLoad (uv ^. preloadData . renderData)) uv >>= f)
postWorldLoad :: RenderData -> CWorld -> IO CWorld
postWorldLoad rdata cw = do
nfloorvxs <-
foldM
(pokeTile (rdata ^. floorVBO . vboPtr))
0
(cw ^. cwTiles)
bufferPokedVBO (rdata ^. floorVBO) nfloorvxs
nchasmvxs <- foldM (pokeChasm (rdata ^. chasmVBO . vboPtr))
0
(cw ^. chasms)
bufferPokedVBO (rdata ^. chasmVBO) nchasmvxs
return $ cw & numberFloorVerxs .~ nfloorvxs
& numberChasmVerxs .~ nchasmvxs