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.
Implements a shutdown mechanism for components and entities,
ensuring proper resource release and preventing memory leaks.
This change introduces a virtual `Shutdown` method to the
`Component` class, allowing derived components to release
specific resources when they are removed from an entity or
when the entity is destroyed. The `Entity` class now calls
the `Shutdown` method on all its components during its own
release process. The `EntityManager` now calls the
`release()` method when destroying an entity.
This enhancement ensures that resources, such as FMOD sound
objects and channels in the `AudioComponent`, are properly
released, preventing potential resource leaks and improving
the stability of the engine.
Refactors scene loading to properly initialize models and textures from the scene file.
Adds audio component deserialization and file path handling.
Fixes model loading and texture application in scene manager.
Addresses potential issues with missing components during scene loading.
Adds serialization/deserialization to components,
allowing saving and loading of entity states.
Provides ImGui widgets for editing component properties,
improving editor usability.
Passes the D3D device and context to entities and
components enabling resource creation within components.
Initializes FMOD sound system within the application class and propagates it to the entity manager and entities. This allows for audio components to access and use the FMOD system for playing sounds.
Removes redundant FMOD system initialization from the audio component.
Adds a new audio component with support for loading, playing, pausing, stopping, and controlling audio properties such as volume, pan, pitch, and looping.
Implements spatialization using FMOD, enabling 3D audio effects based on object and camera positions. Includes file selection dialog and UI controls for audio properties.
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.
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.