Introduces a new asset management system for loading and managing game assets, including textures and models.
This system includes:
- Asset scanning and indexing with background loading.
- Virtual file system for asset identification.
- Resource tree for UI file browsing.
- Lazy loading of textures with garbage collection.
- OBJ model loading via Assimp integration
Fixes file browser integration and asset handling.
Updates asset scanning to remove orphaned entries and improve texture loading.
The asset manager now removes missing assets from the metadata map and loaded assets, preventing stale references.
Texture loading is enhanced with better format handling, swizzle configuration, and error handling. This ensures correct texture display and prevents crashes due to invalid data.
Obj loader now supports material names with spaces and quoted texture paths.
Adds a 3D gizmo to visualize selected point lights in the editor,
including a sphere representing the light's range and cross lines
indicating the X, Y, and Z axes.
Also introduces helper functions to the Core class for accessing
the editor layer and selected game object. These functions provide
a central point for editor-related queries without tightly coupling
the core engine to editor-specific functionalities.
The renderer is refactored into its own file.
Refactors the mesh rendering pipeline to leverage MeshComponent's VAO/VBO/EBO.
Introduces material binding, texture support, and submesh rendering with associated materials.
Adds fallback textures, simplifying shader uniform management.
Includes an option to import a mesh as a set of child GameObjects, one per submesh, each with its own MeshComponent and material.
Improves inspector UI by providing the ability to extract submeshes.
Enhances asset manager to improve performance and stability:
- Fixes resource scanning by using a snapshot to avoid race conditions.
- Adds more logging, especially for asset loading failures and filesystem errors.
- Improves performance by counting textures before the scan loop.
- Fixes an issue where namespace definitions were not placed on the same line.
- Switches case block braces to next line
Removes unnecessary "Move:" prefix from drag and drop
text in the SceneExplorer. This simplifies the displayed
text and improves clarity during drag and drop operations.
Adds a transform component to game objects, allowing for position, rotation, and scale manipulation.
Implements serialization and deserialization for the transform component using YAML.
Updates game object to manage components and hierarchy with parent-child relationships.
The new component enables scene objects to be positioned, rotated, and scaled within the scene.
Adds the initial structure for the InspectorWindow and
SceneExplorer editor windows, providing a foundation for
implementing editor functionality.
Also adds file browser and other editor windows
Adds a basic README file with project information, features, and a project layout example.
Adds a dictionary configuration file to specify project-specific words.
Uses `std::ranges::find_if` for searching in `removeRootObject`, modernizing the code.
Removes an unnecessary comment in CMakeLists.txt.
Simplifies a comment in the Scene.h header file.
Implements a basic scene management system with GameObject and Component structure.
Adds initial support for TagComponent serialization.
Includes Scene class in Core and an AssetManager profiling scope.
Adds scene management system with GameObjects and Components.
Improves asset loading by scanning assets in a background thread and queuing textures for upload. Also displays a progress bar in the file browser for texture loading.
Adds basic component system with TagComponent to identify GameObjects
by a user defined name.
Replaces raw pointers with smart pointers for managing editor windows.
This change improves memory management by ensuring proper deallocation of the Viewport and FileBrowser objects when the Editor shuts down, preventing potential memory leaks.
Improves asset management by adding a shutdown procedure that safely terminates the asset scanning thread. This prevents crashes and ensures a clean exit.
Enhances shader management by introducing shader naming and improved error logging. This makes debugging easier. Also renames the sprite shader.
Fixes a minor bug related to sprite drawing position.
Adds Git mappings for submodules.
Adds shader class to core and modifies the renderer to use it,
while also adding profiling macros and fixing resize issues.
The changes ensure the render target is resized only when the
requested size is different from the current size and also clears
the screen to a dark gray color.
Adds background asset scanning and loading to improve editor responsiveness.
Updates the file browser with grid and list views, filtering, and callbacks for file selection.
Fixes an issue where the asset manager would block the main thread during asset loading.
Removes Assimp dependency.
Changes the asset loading process to use a queue system for texture uploads to OpenGL, which improves performance by offloading the texture loading to the main thread.
The asset manager now directly loads texture data using stb_image and uploads it to the GPU in the main thread, eliminating the need for Assimp.