重新命名EventDispatcher的添加/解决函数

This commit is contained in:
2025-07-17 02:26:00 +08:00
parent 124fd9701f
commit d4643b7427
8 changed files with 23 additions and 14 deletions

2
CMCore

Submodule CMCore updated: a9e37e6219...7139219855

View File

@@ -88,7 +88,7 @@ public:
{ {
CloseShaderCompiler(); CloseShaderCompiler();
win->UnregisterEventDispatch(this); win->RemoveChildDispatcher(this);
SAFE_CLEAR(db); SAFE_CLEAR(db);
SAFE_CLEAR_OBJECT_ARRAY_OBJECT(cmd_buf,swap_chain_count); SAFE_CLEAR_OBJECT_ARRAY_OBJECT(cmd_buf,swap_chain_count);
@@ -154,7 +154,7 @@ public:
InitCommandBuffer(); InitCommandBuffer();
win->RegisterEventDispatch(this); win->AddChildDispatcher(this);
{ {
vp_info.Set(w,h); vp_info.Set(w,h);
@@ -403,8 +403,8 @@ public:
ckc=new CameraKeyboardControl(camera_control); ckc=new CameraKeyboardControl(camera_control);
cmc=new CameraMouseControl(camera_control); cmc=new CameraMouseControl(camera_control);
win->RegisterEventDispatch(ckc); win->AddChildDispatcher(ckc);
win->RegisterEventDispatch(cmc); win->AddChildDispatcher(cmc);
RefreshCameraInfo(camera_control->GetCameraInfo(),&vp_info,camera); RefreshCameraInfo(camera_control->GetCameraInfo(),&vp_info,camera);

View File

@@ -29,12 +29,12 @@ namespace hgl
{ {
render_framework=rf; render_framework=rf;
rf->RegisterEventDispatch(this); rf->AddChildDispatcher(this);
} }
virtual ~WorkManager() virtual ~WorkManager()
{ {
render_framework->UnregisterEventDispatch(this); render_framework->RemoveChildDispatcher(this);
SAFE_CLEAR(cur_work_object); SAFE_CLEAR(cur_work_object);
} }

View File

@@ -1,10 +1,12 @@
#pragma once #pragma once
#include<hgl/type/object/TickObject.h> #include<hgl/type/object/TickObject.h>
#include<hgl/graph/RenderFramework.h> #include<hgl/graph/RenderFramework.h>
#include<hgl/graph/VKRenderResource.h> #include<hgl/graph/VKRenderResource.h>
#include<hgl/graph/mtl/MaterialLibrary.h> #include<hgl/graph/mtl/MaterialLibrary.h>
#include<hgl/graph/Renderer.h> #include<hgl/graph/Renderer.h>
#include<hgl/graph/Scene.h> #include<hgl/graph/Scene.h>
#include<hgl/io/event/WindowEvent.h>
#include<hgl/Time.h> #include<hgl/Time.h>
//#include<iostream> //#include<iostream>
@@ -20,7 +22,7 @@ namespace hgl
* *
* WorkObject被定义为工作对象所有的渲染控制都需要被写在WorkObject的Render函数下。 * WorkObject被定义为工作对象所有的渲染控制都需要被写在WorkObject的Render函数下。
*/ */
class WorkObject:public TickObject class WorkObject:public TickObject,public io::WindowEvent
{ {
graph::RenderFramework *render_framework=nullptr; graph::RenderFramework *render_framework=nullptr;

View File

@@ -65,7 +65,7 @@ protected: //RenderContext,未来合并成一个RenderContext结构
void CreateDefaultRenderer(); void CreateDefaultRenderer();
protected: //EventDispatch protected: //EventDispatcher
io::MouseEvent *mouse_event=nullptr; io::MouseEvent *mouse_event=nullptr;

View File

@@ -112,7 +112,7 @@ bool RenderFramework::Init(uint w,uint h)
if(!device) if(!device)
return(false); return(false);
win->RegisterEventDispatch(this); win->AddChildDispatcher(this);
module_manager=new GraphModuleManager(this); module_manager=new GraphModuleManager(this);
@@ -161,10 +161,10 @@ void RenderFramework::CreateDefaultRenderer()
auto ckc=new CameraKeyboardControl(fpcc); auto ckc=new CameraKeyboardControl(fpcc);
auto cmc=new CameraMouseControl(fpcc); auto cmc=new CameraMouseControl(fpcc);
this->RegisterEventDispatch(fpcc); this->AddChildDispatcher(fpcc);
fpcc->RegisterEventDispatch(ckc); fpcc->AddChildDispatcher(ckc);
fpcc->RegisterEventDispatch(cmc); fpcc->AddChildDispatcher(cmc);
default_camera_control=fpcc; default_camera_control=fpcc;

View File

@@ -23,6 +23,11 @@ namespace hgl
{ {
if(!rf) if(!rf)
{ {
if(render_framework)
{
render_framework->RemoveChildDispatcher(this);
}
render_framework=nullptr; render_framework=nullptr;
db=nullptr; db=nullptr;
} }
@@ -37,6 +42,8 @@ namespace hgl
db=rf->GetRenderResource(); db=rf->GetRenderResource();
scene=rf->GetDefaultScene(); scene=rf->GetDefaultScene();
renderer=rf->GetDefaultRenderer(); renderer=rf->GetDefaultRenderer();
render_framework->AddChildDispatcher(this);
} }
void WorkObject::Render(double delta_time) void WorkObject::Render(double delta_time)