Files
loop/src/Dodge/WorldLoad.hs
T
2025-08-10 08:09:03 +01:00

24 lines
846 B
Haskell

module Dodge.WorldLoad (postUniverseLoadSideEffect) 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