Refactorise l'accès aux interfaces Direct3D pour plus de clarté et d'efficacité, en utilisant des accesseurs `const` et en déplaçant certaines fonctions directement dans l'en-tête.
Cela simplifie l'utilisation des ressources D3D et améliore la lisibilité du code.
Optimizes entity management in ImGui by deferring updates to the entity list until necessary.
Changes include:
- Sets the entity list as dirty upon adding or deleting entities to ensure the list is only updated when needed
- Changes the type of entity ID stored in CachedEntity
- Adjusts ImGui window size
Optimizes entity list updates in the ImGui interface by caching entity names and IDs.
This reduces unnecessary string operations during rendering and improves performance, especially when dealing with a large number of entities.
The initial ImGui window size has also been reduced for performance reasons.
Implémente un système de culling basé sur la position de la lumière du soleil pour améliorer les performances du rendu des ombres.
Crée un thread dédié au culling des objets non visibles par la lumière du soleil.
Ajoute une structure de frustum spécifique au culling par la lumière du soleil.
Modifie le RenderComponent pour suivre si un objet est visible par la lumière du soleil.
Ajoute la possibilité de rendre une shadow map pour les objets de la scène.
Supprime la dépendance de la texture du depth shader et ajoute une option pour caster les ombres sur les RenderComponents.
Modifie la taille de la fenêtre dans l'imgui.ini
Avoids duplicated ImGui labels in the object list by adding the entity ID to the item label.
Also, corrects ImGui layout issues, preventing window overlap.
Refactors camera input handling for smoother and more intuitive control.
This change introduces a dedicated CameraInput structure and updates the
camera class to use it for movement and rotation based on user input.
It removes the old position class camera related logic and integrates mouse
delta for precise rotation control and scroll wheel for speed adjustments.
Updates ImGui layout to reflect the new size for the docked space.
Addresses minor issues across the engine to improve stability and UI.
- Updates ImGui window size for better rendering
- Adds macro for boolean returns (R_TRUE and R_FALSE)
- Adds missing includes and removes unused code
- Updates shader code to use the new macros and improve readability
Introduces a macro to streamline logging, enhancing code readability and maintainability.
The new macro replaces direct Logger calls with more concise and expressive `LOG_INFO`, `LOG_ERROR` etc. calls, reducing boilerplate code and improving consistency in logging practices across the engine.
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.
Introduces a skysphere entity to the scene.
Creates the skysphere during application initialization and manages its visibility via Z-buffer enabling/disabling in the render system.
The skysphere is now an ECS entity.
The culling thread skips the skybox entity to avoid unnecessary calculations since it's always visible.
The position of the skybox is updated with the active camera.
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.
Configures Git LFS to properly track and manage binary files such as Lua libraries and DLLs.
This ensures that large binary files are stored efficiently and do not bloat the Git repository.
Adds a Lua scripting component to the engine, allowing users to attach Lua scripts to entities.
Includes necessary Lua headers and library files.
Also integrates the Lua scripting component into the editor, allowing it to be added via ImGui.
Improves the scene editor by adding an inspector window to view and modify entity components.
Adds audio component support with basic playback controls integrated into the inspector.
Adds default audio files.
Adds precompiled FMOD audio library binaries for various platforms (x86, x64, arm64) and build configurations (Debug, Release).
Also adds a basic audio component header file.