From 32bc068f7f57f141c19a2d8f554028d5ea48500f Mon Sep 17 00:00:00 2001 From: Olathuss Date: Mon, 24 Mar 2025 12:04:36 -0600 Subject: [PATCH] Added PlatformTimer for mouse callbacks Added PlatformTimer to GameTSCtrl to limit mouse move/drag callbacks. --- Engine/source/T3D/gameTSCtrl.cpp | 25 +++++++++++++++++++++---- Engine/source/T3D/gameTSCtrl.h | 3 +++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Engine/source/T3D/gameTSCtrl.cpp b/Engine/source/T3D/gameTSCtrl.cpp index 8f103db85..f2e1f0b7a 100644 --- a/Engine/source/T3D/gameTSCtrl.cpp +++ b/Engine/source/T3D/gameTSCtrl.cpp @@ -215,6 +215,7 @@ IMPLEMENT_CALLBACK(GameTSCtrl, onMouseMove, void, (const char* screenPosition, c GameTSCtrl::GameTSCtrl() { + mFrameTime = PlatformTimer::create(); } //--------------------------------------------------------------------------- @@ -358,21 +359,33 @@ void GameTSCtrl::onMouseDragged(const GuiEvent &evt) { Parent::onMouseDragged(evt); - sendMouseEvent("onMouseDragged", evt); + if (mFrameTime && mFrameTime->getElapsedMs() > 16) + { + sendMouseEvent("onMouseDragged", evt); + mFrameTime->reset(); + } } void GameTSCtrl::onRightMouseDragged(const GuiEvent &evt) { Parent::onRightMouseDragged(evt); - sendMouseEvent("onRightMouseDragged", evt); + if (mFrameTime && mFrameTime->getElapsedMs() > 16) + { + sendMouseEvent("onRightMouseDragged", evt); + mFrameTime->reset(); + } } void GameTSCtrl::onMiddleMouseDragged(const GuiEvent &evt) { Parent::onMiddleMouseDragged(evt); - sendMouseEvent("onMiddleMouseDragged", evt); + if (mFrameTime && mFrameTime->getElapsedMs() > 16) + { + sendMouseEvent("onMiddleMouseDragged", evt); + mFrameTime->reset(); + } } bool GameTSCtrl::onMouseWheelUp(const GuiEvent &evt) @@ -410,7 +423,11 @@ void GameTSCtrl::onMouseMove(const GuiEvent &evt) } } - sendMouseEvent("onMouseMove", evt); + if (mFrameTime->getElapsedMs() > 16) + { + sendMouseEvent("onMouseMove", evt); + mFrameTime->reset(); + } } void GameTSCtrl::onRender(Point2I offset, const RectI &updateRect) diff --git a/Engine/source/T3D/gameTSCtrl.h b/Engine/source/T3D/gameTSCtrl.h index 39a00c8c7..72f2b2633 100644 --- a/Engine/source/T3D/gameTSCtrl.h +++ b/Engine/source/T3D/gameTSCtrl.h @@ -43,6 +43,9 @@ private: void sendMouseEvent(const char *name, const GuiEvent &evt); +protected: + PlatformTimer *mFrameTime; + public: GameTSCtrl();