Some features are missing after the merge:
- In-game menus (both Macroquad and Internal)
- Main menu (Internal only)
- Particles (Internal only)
Main menu has been reimplemented as a game state, so it will just be a matter of transitioning it to egui. The Menu and Panel widgets must also be transitioned to egui (the latter only if we can't use an egui window to draw panels) and a Menu can then be attached to DefaultGameState instances and toggled with input (the input part is disabled but I will fix this).
I think the best course of action will be to just go ahead and transition the menus to egui, while we are at it, as the gui is the only feature that requires the Macroquad backend, at this point. Doing this will let us remove the Macroquad backend from core, which will clean things up a lot and make the code more manageable.
To enable particles we will have to import the particle system from macroquad_particles into core and refactor it to use our OpenGL context, instead of Miniquad. This shouldn't be too hard.
Some bugs that should be corrected:
- Missing character portraits in character selector
- Jump physics are off (too little jump force is applied)
The missing character portraits should be adressed when we transition the main menu to egui. To draw textures with the ui system, we have to set up access for egui to our OpenGL textures, use images (less performant and more hacky solution) or create a new rendering pass, after egui has drawn, that draws textures on top of the ui. We should probably go for the former solution. If we choose the latter, we will have to do some work on the renderer, as the renderer just draws immediately when the batch is full, in stead of collecting draw calls and drawing them at a set time (this should probably be fixed, long term, any ways, so that we can control when, specifically, draws happen).
Jump physics is probably something wrong in the player state handling as the rest of the physics are right. When adressing this, we could also go through all our other physics variables and divide them by two, so that we can up the physics resolution to 120 (it is 60 now). Either that or just divide all forces and velocities by PHYSICS_RESOLUTION and multiply by 60.
Some features are missing after the merge:
Main menu has been reimplemented as a game state, so it will just be a matter of transitioning it to egui. The
MenuandPanelwidgets must also be transitioned to egui (the latter only if we can't use an egui window to draw panels) and aMenucan then be attached toDefaultGameStateinstances and toggled with input (the input part is disabled but I will fix this).I think the best course of action will be to just go ahead and transition the menus to egui, while we are at it, as the gui is the only feature that requires the Macroquad backend, at this point. Doing this will let us remove the Macroquad backend from core, which will clean things up a lot and make the code more manageable.
To enable particles we will have to import the particle system from
macroquad_particlesinto core and refactor it to use our OpenGL context, instead of Miniquad. This shouldn't be too hard.Some bugs that should be corrected:
The missing character portraits should be adressed when we transition the main menu to egui. To draw textures with the ui system, we have to set up access for egui to our OpenGL textures, use images (less performant and more hacky solution) or create a new rendering pass, after egui has drawn, that draws textures on top of the ui. We should probably go for the former solution. If we choose the latter, we will have to do some work on the renderer, as the renderer just draws immediately when the batch is full, in stead of collecting draw calls and drawing them at a set time (this should probably be fixed, long term, any ways, so that we can control when, specifically, draws happen).
Jump physics is probably something wrong in the player state handling as the rest of the physics are right. When adressing this, we could also go through all our other physics variables and divide them by two, so that we can up the physics resolution to 120 (it is 60 now). Either that or just divide all forces and velocities by
PHYSICS_RESOLUTIONand multiply by 60.