refactor(scene): dispatch events via typed handlers and move pause toggle to WorldScene

This commit is contained in:
2026-07-14 11:55:01 +08:00
parent 03f539eb9f
commit 969c78ce5e
7 changed files with 161 additions and 36 deletions

View File

@@ -20,5 +20,20 @@ public:
virtual bool handle_event(const Event& e) = 0;
virtual void on_enter() {};
virtual void on_leave() {};
protected:
virtual bool handle_mouse_move_event(const MouseMoveEvent&) {
return false;
}
virtual bool handle_mouse_button_event(const MouseButtonEvent&) {
return false;
}
virtual bool handle_window_resize_event(const WindowResizeEvent&) {
return false;
}
virtual bool handle_mouse_wheel_event(const MouseWheelEvent&) {
return false;
}
virtual bool handle_key_event(const KeyEvent&) { return false; }
};
} // namespace Cubed

View File

@@ -33,6 +33,12 @@ public:
void set_pause(bool pause);
private:
bool handle_mouse_move_event(const MouseMoveEvent& e) override;
bool handle_mouse_button_event(const MouseButtonEvent& e) override;
bool handle_window_resize_event(const WindowResizeEvent& e) override;
bool handle_mouse_wheel_event(const MouseWheelEvent& e) override;
bool handle_key_event(const KeyEvent& e) override;
SceneManager& m_scene_manager;
DevPanel m_dev_panel;
Camera m_camera;

View File

@@ -14,7 +14,5 @@ public:
private:
WorldScene& m_scene;
bool handle_key_event(const KeyEvent& e) override;
};
} // namespace Cubed

View File

@@ -21,13 +21,14 @@ public:
virtual Widget* get_widget(std::string name);
protected:
std::unique_ptr<Widget> m_root_widget;
std::unordered_map<std::string, Widget*> m_widgets;
virtual bool handle_mouse_move_event(const MouseMoveEvent& e);
virtual bool handle_mouse_button_event(const MouseButtonEvent& e);
virtual bool handle_window_resize_event(const WindowResizeEvent& e);
virtual bool handle_mouse_wheel_event(const MouseWheelEvent& e);
virtual bool handle_key_event(const KeyEvent& e);
protected:
std::unique_ptr<Widget> m_root_widget;
std::unordered_map<std::string, Widget*> m_widgets;
};
} // namespace Cubed