lib/gamnit: divide frame_core_flat in 2 parts to draw particles in between
[nit.git] / lib / gamnit / flat.nit
index b598f01..ab433bf 100644 (file)
@@ -184,10 +184,14 @@ redef class App
        end
 
        # Draw the whole screen, all `glDraw...` calls should be executed here
-       protected fun frame_core_draw(display: GamnitDisplay) do frame_core_flat display
+       protected fun frame_core_draw(display: GamnitDisplay)
+       do
+               frame_core_world_sprites display
+               frame_core_ui_sprites display
+       end
 
-       # Draw sprites in `sprites` and `ui_sprites`
-       protected fun frame_core_flat(display: GamnitDisplay)
+       # Draw world sprites from `sprites`
+       protected fun frame_core_world_sprites(display: GamnitDisplay)
        do
                simple_2d_program.use
 
@@ -200,6 +204,17 @@ redef class App
                # World sprites
                simple_2d_program.mvp.uniform world_camera.mvp_matrix
                for sprite in sprites do sprite.draw
+       end
+
+       # Draw UI sprites from `ui_sprites`
+       protected fun frame_core_ui_sprites(display: GamnitDisplay)
+       do
+               simple_2d_program.use
+
+               # Set constant configs
+               simple_2d_program.coord.array_enabled = true
+               simple_2d_program.tex_coord.array_enabled = true
+               simple_2d_program.color.array_enabled = false
 
                # Reset only the depth buffer
                glClear gl_DEPTH_BUFFER_BIT
@@ -227,7 +242,7 @@ redef class App
                var display = display
                assert display != null
                glClear gl_COLOR_BUFFER_BIT
-               frame_core_flat display
+               frame_core_ui_sprites display
                display.flip
 
                ui_sprites.remove splash