MaterialFactoryMap改用ObjectMap

This commit is contained in:
hyzboy 2025-05-07 00:35:43 +08:00
parent e88facf834
commit 33976d9bf6

View File

@ -1,12 +1,12 @@
#include<hgl/graph/mtl/MaterialLibrary.h> #include<hgl/graph/mtl/MaterialLibrary.h>
#include<hgl/type/IDName.h> #include<hgl/type/IDName.h>
#include<tsl/robin_map.h> #include<hgl/type/Map.h>
STD_MTL_NAMESPACE_BEGIN STD_MTL_NAMESPACE_BEGIN
namespace namespace
{ {
using MaterialFactoryMap=tsl::robin_map<AnsiString,MaterialFactory *>; using MaterialFactoryMap=ObjectMap<AnsiString,MaterialFactory>;
using MaterialFactoryMapPtr=MaterialFactoryMap *; using MaterialFactoryMapPtr=MaterialFactoryMap *;
MaterialFactoryMapPtr material_factory_map=nullptr; MaterialFactoryMapPtr material_factory_map=nullptr;
@ -21,13 +21,13 @@ bool RegistryMaterialFactory(MaterialFactory *mf)
if(!material_factory_map) if(!material_factory_map)
{ {
material_factory_map=new MaterialFactoryMap; material_factory_map=new MaterialFactoryMap();
} }
if(material_factory_map->contains(name)) if(material_factory_map->ContainsKey(name))
return(false); return(false);
material_factory_map->insert({name,mf}); material_factory_map->Add(name,mf);
return(true); return(true);
} }
@ -37,23 +37,12 @@ MaterialFactory *GetMaterialFactory(const AnsiString &name)
if(!material_factory_map) if(!material_factory_map)
return(nullptr); return(nullptr);
auto it=material_factory_map->find(name); return (*material_factory_map)[name];
if(it==material_factory_map->end())
return(nullptr);
return(it->second);
} }
void ClearMaterialFactory() void ClearMaterialFactory()
{ {
if(!material_factory_map) SAFE_CLEAR(material_factory_map);
return;
SAFE_CLEAR_STD_MAP(*material_factory_map)
delete material_factory_map;
material_factory_map=nullptr;
} }
MaterialCreateInfo *CreateMaterialCreateInfo(const AnsiString &name,MaterialCreateConfig *cfg,const VILConfig *vil_cfg) MaterialCreateInfo *CreateMaterialCreateInfo(const AnsiString &name,MaterialCreateConfig *cfg,const VILConfig *vil_cfg)