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

@@ -65,12 +65,12 @@ Core::uint32 ResourceManager::GetRefCount(ResourceGUID guid) const {
void ResourceManager::RegisterLoader(IResourceLoader* loader) {
std::lock_guard lock(m_mutex);
m_loaders.Insert(loader->GetResourceType(), Core::MakeUnique<IResourceLoader>(loader));
m_loaders.Insert(loader->GetResourceType(), loader);
}
IResourceLoader* ResourceManager::GetLoader(ResourceType type) const {
auto* it = m_loaders.Find(type);
return it != nullptr ? it->get() : nullptr;
return it != nullptr ? *it : nullptr;
}
IResourceLoader* ResourceManager::FindLoader(ResourceType type) {