From 3a1feb4d6bfcbcca90e5f12fc5d951079c73e2a0 Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Wed, 6 Nov 2024 22:27:46 +0800 Subject: [PATCH] event: updated event, added event source for better filtering --- docs/screenshots/quickviz-v0.1.png | Bin 0 -> 84899 bytes .../component/event/async_event_emitter.hpp | 6 +++--- .../include/imview/component/event/event.hpp | 17 ++++++++++++++-- .../imview/component/event/event_emitter.hpp | 6 +++--- .../component/opengl/camera_controller.hpp | 1 + .../component/opengl/camera_controller.cpp | 19 ++++++++++-------- src/imview/test/test_async_event.cpp | 11 +++++----- src/imview/test/test_camera.cpp | 4 ++-- src/imview/test/test_event.cpp | 7 ++++--- 9 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 docs/screenshots/quickviz-v0.1.png diff --git a/docs/screenshots/quickviz-v0.1.png b/docs/screenshots/quickviz-v0.1.png new file mode 100644 index 0000000000000000000000000000000000000000..dd743640b37d3e1fa319082966b9a2b155aedac7 GIT binary patch literal 84899 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 z

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

S*&4RFMI|-l*WA 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 literal 0 HcmV?d00001 diff --git a/src/imview/include/imview/component/event/async_event_emitter.hpp b/src/imview/include/imview/component/event/async_event_emitter.hpp index 8b08fdf..d8ba6e2 100644 --- a/src/imview/include/imview/component/event/async_event_emitter.hpp +++ b/src/imview/include/imview/component/event/async_event_emitter.hpp @@ -13,9 +13,9 @@ namespace quickviz { class AsyncEventEmitter { public: - template - void Emit(const std::string& event_name, Args... args) { - auto event = std::make_shared(event_name, args...); + template + void Emit(EventSource type, const std::string& event_name, Args... args) { + auto event = std::make_shared(type, event_name, args...); AsyncEventDispatcher::GetInstance().Dispatch(event); } }; diff --git a/src/imview/include/imview/component/event/event.hpp b/src/imview/include/imview/component/event/event.hpp index cd789b4..e5b6602 100644 --- a/src/imview/include/imview/component/event/event.hpp +++ b/src/imview/include/imview/component/event/event.hpp @@ -14,9 +14,20 @@ #include namespace quickviz { +enum class EventSource : int { + kNone = 0, + kKeyboard, + kMouse, + kMouseButton, + kUiElement, + kApplicaton, + kCustomEvent +}; + class BaseEvent { public: virtual ~BaseEvent() = default; + virtual EventSource GetSource() const = 0; virtual std::string GetName() const = 0; }; @@ -24,10 +35,11 @@ template class Event : public BaseEvent { public: // Constructor to create an event with given arguments - Event(std::string name, Args... args) - : name_(name), data_(std::make_tuple(args...)) {} + Event(EventSource type, const std::string& name, Args... args) + : type_(type), name_(name), data_(std::make_tuple(args...)) {} // Get the stored data + EventSource GetSource() const override { return type_; } std::string GetName() const override { return name_; } const std::tuple& GetData() const { return data_; } @@ -39,6 +51,7 @@ class Event : public BaseEvent { } private: + EventSource type_; std::string name_; std::tuple data_; diff --git a/src/imview/include/imview/component/event/event_emitter.hpp b/src/imview/include/imview/component/event/event_emitter.hpp index 45e57f5..ec66b6b 100644 --- a/src/imview/include/imview/component/event/event_emitter.hpp +++ b/src/imview/include/imview/component/event/event_emitter.hpp @@ -13,9 +13,9 @@ namespace quickviz { class EventEmitter { public: - template - void Emit(const std::string& event_name, Args... args) { - auto event = std::make_shared(event_name, args...); + template + void Emit(EventSource type, const std::string& event_name, Args... args) { + auto event = std::make_shared(type, event_name, args...); EventDispatcher::GetInstance().Dispatch(event); } }; diff --git a/src/imview/include/imview/component/opengl/camera_controller.hpp b/src/imview/include/imview/component/opengl/camera_controller.hpp index d0573f8..5657533 100644 --- a/src/imview/include/imview/component/opengl/camera_controller.hpp +++ b/src/imview/include/imview/component/opengl/camera_controller.hpp @@ -20,6 +20,7 @@ class CameraController { public: CameraController(Camera& camera); + void Reset(); void SetMode(Mode mode); void ProcessKeyboard(CameraMovement direction, float delta_time); void ProcessMouseMovement(float x_offset, float y_offset); diff --git a/src/imview/src/component/opengl/camera_controller.cpp b/src/imview/src/component/opengl/camera_controller.cpp index cddf8e2..0c1d29a 100644 --- a/src/imview/src/component/opengl/camera_controller.cpp +++ b/src/imview/src/component/opengl/camera_controller.cpp @@ -11,6 +11,8 @@ namespace quickviz { CameraController::CameraController(Camera& camera) : camera_(camera) {} +void CameraController::Reset() { camera_.Reset(); } + void CameraController::SetMode(CameraController::Mode mode) { mode_ = mode; if (mode == Mode::kTopDown) { @@ -26,15 +28,16 @@ void CameraController::ProcessKeyboard( if (mode_ == Mode::kTopDown) { float velocity = camera_.GetMovementSpeed() * delta_time; glm::vec3 position = camera_.GetPosition(); - // Move only along X and Z axes - if (direction == CameraMovement::kForward) position.z -= velocity; - if (direction == CameraMovement::kBackward) position.z += velocity; - if (direction == CameraMovement::kLeft) position.x -= velocity; - if (direction == CameraMovement::kRight) position.x += velocity; - - camera_.SetPosition(position); // Update position without changing height + if (direction == CameraMovement::kUp) position.y -= velocity; + if (direction == CameraMovement::kDown) position.y += velocity; + if (direction == CameraMovement::kForward) position.x -= velocity; + if (direction == CameraMovement::kBackward) position.x += velocity; + if (direction == CameraMovement::kLeft) position.z += velocity; + if (direction == CameraMovement::kRight) position.z -= velocity; + camera_.SetPosition(position); + } else { + camera_.ProcessKeyboard(direction, delta_time); } - camera_.ProcessKeyboard(direction, delta_time); } void CameraController::ProcessMouseMovement(float x_offset, float y_offset) { diff --git a/src/imview/test/test_async_event.cpp b/src/imview/test/test_async_event.cpp index a1da4f2..22b335e 100644 --- a/src/imview/test/test_async_event.cpp +++ b/src/imview/test/test_async_event.cpp @@ -15,7 +15,8 @@ using namespace quickviz; int main(int argc, char* argv[]) { - Event event("test_event", 42, 3.14, "hello"); + Event event(EventSource::kApplicaton, "test_event", + 42, 3.14, "hello"); event.Print(); auto name = event.GetName(); @@ -38,10 +39,10 @@ int main(int argc, char* argv[]) { }); AsyncEventEmitter emitter; - emitter.Emit>("test_event", 42, 3.14, - "hello"); - emitter.Emit>("test_event", 21, 6.28, - "hello again"); + emitter.Emit>( + EventSource::kApplicaton, "test_event", 42, 3.14, "hello"); + emitter.Emit>( + EventSource::kApplicaton, "test_event", 21, 6.28, "hello again"); // AsyncEventDispatcher::GetInstance().HandleEvents(); std::thread handler_thread(&AsyncEventDispatcher::HandleEvents, diff --git a/src/imview/test/test_camera.cpp b/src/imview/test/test_camera.cpp index c815137..6aeeefa 100644 --- a/src/imview/test/test_camera.cpp +++ b/src/imview/test/test_camera.cpp @@ -72,7 +72,7 @@ void ProcessInput(GLFWwindow* window) { deltaTime); } if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) { - camera.Reset(); + camera_controller.Reset(); } } @@ -103,7 +103,7 @@ int main(int argc, char* argv[]) { int height = 1080; Window win("Test Window", width, height); - camera_controller.SetMode(CameraController::Mode::kTopDown); + camera_controller.SetMode(CameraController::Mode::kOrbit); glfwSetCursorPosCallback(win.GetWindowObject(), MouseCallback); glfwSetScrollCallback(win.GetWindowObject(), ScrollCallback); glfwSetInputMode(win.GetWindowObject(), GLFW_CURSOR, GLFW_CURSOR_DISABLED); diff --git a/src/imview/test/test_event.cpp b/src/imview/test/test_event.cpp index 0ba71df..f1bc03c 100644 --- a/src/imview/test/test_event.cpp +++ b/src/imview/test/test_event.cpp @@ -15,7 +15,8 @@ using namespace quickviz; int main(int argc, char* argv[]) { - Event event("test_event", 42, 3.14, "hello"); + Event event(EventSource::kApplicaton, "test_event", + 42, 3.14, "hello"); event.Print(); auto name = event.GetName(); @@ -39,8 +40,8 @@ int main(int argc, char* argv[]) { }); EventEmitter emitter; - emitter.Emit>("test_event", 42, 3.14, - "hello"); + emitter.Emit>( + EventSource::kApplicaton, "test_event", 42, 3.14, "hello"); return 0; }