重新命名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();
win->UnregisterEventDispatch(this);
win->RemoveChildDispatcher(this);
SAFE_CLEAR(db);
SAFE_CLEAR_OBJECT_ARRAY_OBJECT(cmd_buf,swap_chain_count);
@@ -154,7 +154,7 @@ public:
InitCommandBuffer();
win->RegisterEventDispatch(this);
win->AddChildDispatcher(this);
{
vp_info.Set(w,h);
@@ -403,8 +403,8 @@ public:
ckc=new CameraKeyboardControl(camera_control);
cmc=new CameraMouseControl(camera_control);
win->RegisterEventDispatch(ckc);
win->RegisterEventDispatch(cmc);
win->AddChildDispatcher(ckc);
win->AddChildDispatcher(cmc);
RefreshCameraInfo(camera_control->GetCameraInfo(),&vp_info,camera);

View File

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

View File

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

View File

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

View File

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

View File

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