From b292f423ba78dd59f6facaeb6bddac254db48bb0 Mon Sep 17 00:00:00 2001 From: Attila Uygun Date: Thu, 10 Aug 2023 12:50:38 +0200 Subject: [PATCH] mouse events --- src/engine/audio/audio_mixer.cc | 4 +++- src/engine/platform/platform_win.cc | 29 ++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/engine/audio/audio_mixer.cc b/src/engine/audio/audio_mixer.cc index 8bc055a..586d083 100644 --- a/src/engine/audio/audio_mixer.cc +++ b/src/engine/audio/audio_mixer.cc @@ -26,7 +26,9 @@ AudioMixer::AudioMixer() #elif defined(__linux__) audio_sink_{std::make_unique(this)} { #elif defined(_WIN32) - audio_sink_{std::make_unique()} { + // TODO: Implement AudioSinkWindows + audio_sink_{std::make_unique()}, + audio_enabled_(false) { #endif bool res = audio_sink_->Initialize(); CHECK(res) << "Failed to initialize audio sink."; diff --git a/src/engine/platform/platform_win.cc b/src/engine/platform/platform_win.cc index fe0b27a..7aa9037 100644 --- a/src/engine/platform/platform_win.cc +++ b/src/engine/platform/platform_win.cc @@ -6,8 +6,8 @@ // #include // #include "base/log.h" -// #include "base/vecmath.h" -// #include "engine/input_event.h" +#include "base/vecmath.h" +#include "engine/input_event.h" #include "engine/platform/platform_observer.h" using namespace base; @@ -69,12 +69,9 @@ void Platform::CreateMainWindow() { Platform::~Platform() { LOG(0) << "Shutting down platform."; - DestroyWindow(wnd_); } void Platform::Update() { - DCHECK(!should_exit_); - MSG msg; while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) { @@ -125,6 +122,28 @@ LRESULT CALLBACK Platform::WndProc(HWND wnd, platform->observer_->OnWindowDestroyed(); PostQuitMessage(0); break; + + case WM_MOUSEMOVE: { + Vector2f v(MAKEPOINTS(lparam).x, MAKEPOINTS(lparam).y); + auto input_event = + std::make_unique(InputEvent::kDrag, 0, v); + platform->observer_->AddInputEvent(std::move(input_event)); + } break; + + case WM_LBUTTONDOWN: { + Vector2f v(MAKEPOINTS(lparam).x, MAKEPOINTS(lparam).y); + auto input_event = + std::make_unique(InputEvent::kDragStart, 0, v); + platform->observer_->AddInputEvent(std::move(input_event)); + } break; + + case WM_LBUTTONUP: { + Vector2f v(MAKEPOINTS(lparam).x, MAKEPOINTS(lparam).y); + auto input_event = + std::make_unique(InputEvent::kDragEnd, 0, v); + platform->observer_->AddInputEvent(std::move(input_event)); + } break; + default: return DefWindowProc(wnd, message, wparam, lparam); }