Adds functionality to control the target FPS of the engine via the ImGui settings panel.
This includes:
- Adding target FPS variables and accessors in the application class.
- Adding a set_target_fps function to the fps_limiter class.
- Updating the ImGui engine settings panel to include a target FPS setting.
- Modifying the main loop to make use of the fps limiter and the engine target FPS.
Implements dynamic adjustment of screen depth and near clipping plane distances via the ImGui interface.
This allows users to modify the perspective projection in real-time, affecting the rendering of the scene.
The changes involve:
- Adding screen depth and near variables to the application class.
- Exposing these variables in the ImGui settings window.
- Adding functions to the application and d3d classes to update the projection matrix based on new screen depth and near values.
- Updates the sky sphere size to use world scale.
Refactors the Engine Settings window into a tabbed interface, enhancing usability.
Updates the sky sphere implementation to use a configurable distance.
Adjusts ImGui layout for better docking and window arrangement.
Implements a build versioning system to track and display the engine's build information.
- Adds a version header file defining version constants.
- Increments the build number automatically from a configuration file on each build in the binary folder.
- Displays the build version in the ImGui menu bar for easy identification.
- Persists version information by reading/writing to the config file
This provides better tracking and identification of specific engine builds.
Adds scene saving and loading functionality, using a component factory for dynamic component creation and serialization.
This allows users to save and load the state of entities, including their components and textures.
A new component factory is introduced to register and create different component types.
Each component implements serialization and deserialization methods, which are used to store and restore the component's state.
A new .ker scene file format is introduced to serialize entity data and to load it back into memory to restore the scene.
Also adds a DemoScene_V12.9.0.ker file to showcase the engine.
Adds serialization and deserialization functionality to the ECS component system.
This allows components to be saved and loaded, enabling scene persistence.
The IdentityComponent is updated to support serialization/deserialization.
The scene saving logic in scene_manager is updated to serialize components instead of hardcoded values.