feat: Implement resource system Phase 2 - Concrete resource types

- Add Material class with shader/texture bindings and property system
- Add MaterialLoader for .mat/.json format
- Add Shader class (Vertex/Fragment/Geometry/Compute)
- Add ShaderLoader for .vert/.frag/.glsl/.hlsl
- Add AudioClip class (WAV/OGG/MP3/FLAC support)
- Add AudioLoader for audio files
- Add Texture/Mesh classes and loaders (from design doc)
- Fix HashMap iterator and String API usage
- Fix Mutex compatibility with std::lock_guard
- Update CMakeLists.txt with new resource files
- All tests pass: 11 Resources + 51 Containers
This commit is contained in:
2026-03-17 22:32:27 +08:00
parent 05c879a818
commit 4710e6ba60
33 changed files with 1339 additions and 47 deletions

View File

@@ -151,19 +151,39 @@ add_library(XCEngine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLRenderTargetView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/OpenGL/OpenGLDepthStencilView.cpp
# Resources - TEMPORARILY DISABLED
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Resources.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceTypes.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResource.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceHandle.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResourceLoader.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceManager.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceCache.h
# ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AsyncLoader.h
# ${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceManager.cpp
# ${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceCache.cpp
# ${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AsyncLoader.cpp
# ${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceTypes.cpp
# Resources
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Resources.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceTypes.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResource.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceHandle.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/IResourceLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceManager.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ResourceCache.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AsyncLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Texture.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Mesh.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/TextureLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/MeshLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Material.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/MaterialLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/Shader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/ShaderLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AudioClip.h
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Resources/AudioLoader.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceCache.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AsyncLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ResourceTypes.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Texture.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Mesh.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/TextureLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/MeshLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Material.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/MaterialLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/Shader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ShaderLoader.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AudioClip.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/AudioLoader.cpp
)
target_include_directories(XCEngine PUBLIC