Added PlatformTimer for mouse callbacks

Added PlatformTimer to GameTSCtrl to limit mouse move/drag callbacks.
This commit is contained in:
Olathuss 2025-03-24 12:04:36 -06:00
parent d0f5c2e0db
commit 32bc068f7f
2 changed files with 24 additions and 4 deletions

View file

@ -215,6 +215,7 @@ IMPLEMENT_CALLBACK(GameTSCtrl, onMouseMove, void, (const char* screenPosition, c
GameTSCtrl::GameTSCtrl() GameTSCtrl::GameTSCtrl()
{ {
mFrameTime = PlatformTimer::create();
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -358,21 +359,33 @@ void GameTSCtrl::onMouseDragged(const GuiEvent &evt)
{ {
Parent::onMouseDragged(evt); Parent::onMouseDragged(evt);
sendMouseEvent("onMouseDragged", evt); if (mFrameTime && mFrameTime->getElapsedMs() > 16)
{
sendMouseEvent("onMouseDragged", evt);
mFrameTime->reset();
}
} }
void GameTSCtrl::onRightMouseDragged(const GuiEvent &evt) void GameTSCtrl::onRightMouseDragged(const GuiEvent &evt)
{ {
Parent::onRightMouseDragged(evt); Parent::onRightMouseDragged(evt);
sendMouseEvent("onRightMouseDragged", evt); if (mFrameTime && mFrameTime->getElapsedMs() > 16)
{
sendMouseEvent("onRightMouseDragged", evt);
mFrameTime->reset();
}
} }
void GameTSCtrl::onMiddleMouseDragged(const GuiEvent &evt) void GameTSCtrl::onMiddleMouseDragged(const GuiEvent &evt)
{ {
Parent::onMiddleMouseDragged(evt); Parent::onMiddleMouseDragged(evt);
sendMouseEvent("onMiddleMouseDragged", evt); if (mFrameTime && mFrameTime->getElapsedMs() > 16)
{
sendMouseEvent("onMiddleMouseDragged", evt);
mFrameTime->reset();
}
} }
bool GameTSCtrl::onMouseWheelUp(const GuiEvent &evt) 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) void GameTSCtrl::onRender(Point2I offset, const RectI &updateRect)

View file

@ -43,6 +43,9 @@ private:
void sendMouseEvent(const char *name, const GuiEvent &evt); void sendMouseEvent(const char *name, const GuiEvent &evt);
protected:
PlatformTimer *mFrameTime;
public: public:
GameTSCtrl(); GameTSCtrl();