From 3057fc7b6ff8fbd5a0eac6a9a8c0b65350975372 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 11 Jun 2025 01:05:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=A0=E9=80=92MouseCoord=E5=88=B0WorkObject?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/hgl/WorkObject.h | 10 ++++++++++ inc/hgl/graph/RenderFramework.h | 14 +++++++++++++- src/SceneGraph/RenderFramework.cpp | 9 +++------ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/inc/hgl/WorkObject.h b/inc/hgl/WorkObject.h index 28844532..555262ec 100644 --- a/inc/hgl/WorkObject.h +++ b/inc/hgl/WorkObject.h @@ -51,6 +51,8 @@ namespace hgl graph::Camera * GetCamera (){return renderer->GetCamera();} graph::CameraControl * GetCameraControl (){return render_framework->GetDefaultCameraControl();} + bool GetMouseCoord (Vector2i *mc)const{return render_framework->GetMouseCoord(mc);} + public: const bool IsDestroy ()const{return destroy_flag;} @@ -94,6 +96,14 @@ namespace hgl return db->CreateMaterialInstance(mtl_name,mci,vil_cfg); } + AutoDelete GetPrimitiveCreater(graph::Material *mtl) + { + if(!mtl) + return(nullptr); + + return(new graph::PrimitiveCreater(GetDevice(),mtl->GetDefaultVIL())); + } + AutoDelete GetPrimitiveCreater(graph::MaterialInstance *mi) { if(!mi) diff --git a/inc/hgl/graph/RenderFramework.h b/inc/hgl/graph/RenderFramework.h index 5d508a27..c305d7fd 100644 --- a/inc/hgl/graph/RenderFramework.h +++ b/inc/hgl/graph/RenderFramework.h @@ -7,6 +7,7 @@ #include #include #include +#include VK_NAMESPACE_BEGIN @@ -62,7 +63,7 @@ protected: //RenderContext,未来合并成一个RenderContext结构 protected: //InputEvent - ObjectList input_event; + io::MouseEvent *mouse_event=nullptr; public: @@ -92,6 +93,17 @@ public: CameraControl * GetDefaultCameraControl (){return default_camera_control;} Renderer * GetDefaultRenderer (){return default_renderer;} +public: + + bool GetMouseCoord(Vector2i *mc)const + { + if(!mouse_event||!mc) + return(false); + + *mc=mouse_event->GetMouseCoord(); + return(true); + } + public: RenderFramework(const OSString &); diff --git a/src/SceneGraph/RenderFramework.cpp b/src/SceneGraph/RenderFramework.cpp index 768cd230..d9865b3a 100644 --- a/src/SceneGraph/RenderFramework.cpp +++ b/src/SceneGraph/RenderFramework.cpp @@ -138,7 +138,7 @@ bool RenderFramework::Init(uint w,uint h) void RenderFramework::CreateDefaultRenderer() { - input_event.Clear(); + mouse_event=nullptr; SAFE_CLEAR(default_renderer) @@ -160,6 +160,8 @@ void RenderFramework::CreateDefaultRenderer() this->Join(cmc); default_camera_control=fpcc; + + mouse_event=cmc; } default_renderer->SetCameraControl(default_camera_control); @@ -186,11 +188,6 @@ void RenderFramework::Tick() { if(default_camera_control) { - for(auto *ie:input_event) - { - ie->Update(); - } - default_camera_control->Refresh(); } }