Skip to content

Commit 9d5a1a2

Browse files
committed
Fix middle mouse button click detection to use real-time instead of frames
1 parent 35b3f01 commit 9d5a1a2

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

Generals/Code/GameEngine/Include/GameClient/LookAtXlat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class LookAtTranslator : public GameMessageTranslator
7575
Bool m_isRotating; // set to true if we are in the act of MMB rotating
7676
Bool m_isPitching; // set to true if we are in the act of ALT pitch rotation
7777
Bool m_isChangingFOV; // set to true if we are in the act of changing the field of view
78-
UnsignedInt m_timestamp; // set when button goes down
78+
UnsignedInt m_middleButtonDownTimeMS; // real-time in milliseconds when middle button goes down
7979
DrawableID m_lastPlaneID;
8080
ViewLocation m_viewLocation[ MAX_VIEW_LOCS ];
8181
ScrollType m_scrollType;

Generals/Code/GameEngine/Source/GameClient/MessageStream/LookAtXlat.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,8 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
281281
{
282282
stopScrolling();
283283
}
284-
break;
285-
}
284+
break;
285+
}
286286

287287
//-----------------------------------------------------------------------------
288288
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN:
@@ -293,7 +293,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
293293
m_anchor = msg->getArgument( 0 )->pixel;
294294
m_originalAnchor = msg->getArgument( 0 )->pixel;
295295
m_currentPos = msg->getArgument( 0 )->pixel;
296-
m_timestamp = TheGameClient->getFrame();
296+
m_middleButtonDownTimeMS = timeGetTime();
297297
break;
298298
}
299299

@@ -302,7 +302,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
302302
{
303303
m_lastMouseMoveFrame = TheGameLogic->getFrame();
304304

305-
const UnsignedInt CLICK_DURATION = 5;
305+
const UnsignedInt CLICK_DURATION_MS = 167;
306306
const UnsignedInt PIXEL_OFFSET = 5;
307307

308308
m_isRotating = false;
@@ -311,7 +311,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
311311
Int dy = m_currentPos.y-m_originalAnchor.y;
312312
Bool didMove = dx>PIXEL_OFFSET || dy>PIXEL_OFFSET;
313313
// if middle button is "clicked", reset to "home" orientation
314-
if (!didMove && TheGameClient->getFrame() - m_timestamp < CLICK_DURATION)
314+
if (!didMove && timeGetTime() - m_middleButtonDownTimeMS < CLICK_DURATION_MS)
315315
{
316316
TheTacticalView->setAngleAndPitchToDefault();
317317
TheTacticalView->setZoomToDefault();

GeneralsMD/Code/GameEngine/Include/GameClient/LookAtXlat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class LookAtTranslator : public GameMessageTranslator
7575
Bool m_isRotating; // set to true if we are in the act of MMB rotating
7676
Bool m_isPitching; // set to true if we are in the act of ALT pitch rotation
7777
Bool m_isChangingFOV; // set to true if we are in the act of changing the field of view
78-
UnsignedInt m_timestamp; // set when button goes down
78+
UnsignedInt m_middleButtonDownTimeMS; // real-time in milliseconds when middle button goes down
7979
DrawableID m_lastPlaneID;
8080
ViewLocation m_viewLocation[ MAX_VIEW_LOCS ];
8181
ScrollType m_scrollType;

GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/LookAtXlat.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,8 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
280280
{
281281
stopScrolling();
282282
}
283-
break;
284-
}
283+
break;
284+
}
285285

286286
//-----------------------------------------------------------------------------
287287
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN:
@@ -292,7 +292,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
292292
m_anchor = msg->getArgument( 0 )->pixel;
293293
m_originalAnchor = msg->getArgument( 0 )->pixel;
294294
m_currentPos = msg->getArgument( 0 )->pixel;
295-
m_timestamp = TheGameClient->getFrame();
295+
m_middleButtonDownTimeMS = timeGetTime();
296296
break;
297297
}
298298

@@ -301,7 +301,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
301301
{
302302
m_lastMouseMoveFrame = TheGameLogic->getFrame();
303303

304-
const UnsignedInt CLICK_DURATION = 5;
304+
const UnsignedInt CLICK_DURATION_MS = 167;
305305
const UnsignedInt PIXEL_OFFSET = 5;
306306

307307
m_isRotating = false;
@@ -310,7 +310,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
310310
Int dy = m_currentPos.y-m_originalAnchor.y;
311311
Bool didMove = dx>PIXEL_OFFSET || dy>PIXEL_OFFSET;
312312
// if middle button is "clicked", reset to "home" orientation
313-
if (!didMove && TheGameClient->getFrame() - m_timestamp < CLICK_DURATION)
313+
if (!didMove && timeGetTime() - m_middleButtonDownTimeMS < CLICK_DURATION_MS)
314314
{
315315
TheTacticalView->setAngleAndPitchToDefault();
316316
TheTacticalView->setZoomToDefault();

0 commit comments

Comments
 (0)