@@ -23,6 +23,7 @@ ResourceLoader::~ResourceLoader() {
23
23
}
24
24
25
25
void ResourceLoader::RegisterGlobalResourceFactories () {
26
+ // include strings so we register types for mResourceTypes
26
27
RegisterResourceFactory (static_cast <uint32_t >(ResourceType::Texture), std::make_shared<TextureFactory>());
27
28
RegisterResourceFactory (static_cast <uint32_t >(ResourceType::Vertex), std::make_shared<VertexFactory>());
28
29
RegisterResourceFactory (static_cast <uint32_t >(ResourceType::DisplayList), std::make_shared<DisplayListFactory>());
@@ -31,17 +32,19 @@ void ResourceLoader::RegisterGlobalResourceFactories() {
31
32
RegisterResourceFactory (static_cast <uint32_t >(ResourceType::Blob), std::make_shared<BlobFactory>());
32
33
}
33
34
34
- bool ResourceLoader::RegisterResourceFactory (uint32_t resourceType, std::shared_ptr<ResourceFactory> factory) {
35
- if (mFactories .contains (resourceType )) {
35
+ bool ResourceLoader::RegisterResourceFactory (std::shared_ptr<ResourceFactory> factory, uint32_t format, std::string typeName, uint32_t type, uint32_t version ) {
36
+ if (mResourceTypes .contains (typeName )) {
36
37
return false ;
37
38
}
39
+ mResourceTypes [typeName] = type;
38
40
39
- mFactories [resourceType] = factory;
40
- return true ;
41
- }
41
+ ResourceFactoryKey key = {resourceFormat: format, resourceType: type, resourceVersion: version};
42
+ if (mFactories .contains (key)) {
43
+ return false ;
44
+ }
45
+ mFactories [key] = factory;
42
46
43
- uint32_t ResourceLoader::GetVersionFromString (const std::string& version) {
44
- return mFactoriesTypes [version];
47
+ return true ;
45
48
}
46
49
47
50
std::shared_ptr<IResource> ResourceLoader::LoadResource (std::shared_ptr<File> fileToLoad) {
@@ -57,6 +60,10 @@ std::shared_ptr<IResource> ResourceLoader::LoadResource(std::shared_ptr<File> fi
57
60
return result;
58
61
}
59
62
63
+ // call method to get factory based on factorykey (generate using params)
64
+ // make a method that takes in a string instead of an int for the type too
65
+ // make those protected
66
+
60
67
auto factory = mFactories [fileToLoad->InitData ->Type ];
61
68
if (factory == nullptr ) {
62
69
SPDLOG_ERROR (" Failed to load resource: Factory does not exist ({} - {})" , fileToLoad->InitData ->Type ,
0 commit comments