diff --git a/inc/hgl/graph/module/GraphModule.h b/inc/hgl/graph/module/GraphModule.h index 1443a05c..615ae582 100644 --- a/inc/hgl/graph/module/GraphModule.h +++ b/inc/hgl/graph/module/GraphModule.h @@ -34,6 +34,8 @@ public: template T *GetModule(bool create=false){return (T *)GetModule(T::GetModuleName(),create);} ///<获取指定类型的模块 + void ReleaseModule(GraphModule *); ///<释放指定模块 + const bool IsLoaded(const AnsiIDName &name){return graph_module_map.ContainsKey(name);} ///<是否已经加载了指定类型的模块 template diff --git a/src/SceneGraph/module/GraphModuleManager.cpp b/src/SceneGraph/module/GraphModuleManager.cpp index 87a3e7df..f9d23525 100644 --- a/src/SceneGraph/module/GraphModuleManager.cpp +++ b/src/SceneGraph/module/GraphModuleManager.cpp @@ -97,6 +97,15 @@ GraphModuleManager::~GraphModuleManager() } } +void GraphModuleManager::ReleaseModule(GraphModule *gm) +{ + if(!gm) + return; + + graph_module_map.DeleteByValue(gm); + delete gm; +} + void GraphModuleManager::OnResize(const VkExtent2D &extent) { if(graph_module_map.IsEmpty())