Skip to content

Commit d6074b7

Browse files
committed
Fix middle mouse button click detection to use real-time instead of frames
1 parent f4608df commit d6074b7

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

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

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

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ LookAtTranslator::LookAtTranslator() :
137137
m_isRotating(false),
138138
m_isPitching(false),
139139
m_isChangingFOV(false),
140-
m_timestamp(0),
140+
m_middleButtonDownTimeMS(0),
141141
m_lastPlaneID(INVALID_DRAWABLE_ID),
142142
m_lastMouseMoveFrame(0),
143143
m_scrollType(SCROLL_NONE)
@@ -278,8 +278,8 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
278278
{
279279
stopScrolling();
280280
}
281-
break;
282-
}
281+
break;
282+
}
283283

284284
//-----------------------------------------------------------------------------
285285
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN:
@@ -291,7 +291,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
291291
m_anchorAngle = TheTacticalView->getAngle();
292292
m_originalAnchor = msg->getArgument( 0 )->pixel;
293293
m_currentPos = msg->getArgument( 0 )->pixel;
294-
m_timestamp = TheGameClient->getFrame();
294+
m_middleButtonDownTimeMS = timeGetTime();
295295
break;
296296
}
297297

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

303-
const UnsignedInt CLICK_DURATION = 5;
303+
const UnsignedInt CLICK_DURATION_MS = 167;
304304
const UnsignedInt PIXEL_OFFSET = 5;
305305

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

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

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

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ LookAtTranslator::LookAtTranslator() :
137137
m_isRotating(false),
138138
m_isPitching(false),
139139
m_isChangingFOV(false),
140-
m_timestamp(0),
140+
m_middleButtonDownTimeMS(0),
141141
m_lastPlaneID(INVALID_DRAWABLE_ID),
142142
m_lastMouseMoveFrame(0),
143143
m_scrollType(SCROLL_NONE)
@@ -277,8 +277,8 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
277277
{
278278
stopScrolling();
279279
}
280-
break;
281-
}
280+
break;
281+
}
282282

283283
//-----------------------------------------------------------------------------
284284
case GameMessage::MSG_RAW_MOUSE_MIDDLE_BUTTON_DOWN:
@@ -290,7 +290,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
290290
m_anchorAngle = TheTacticalView->getAngle();
291291
m_originalAnchor = msg->getArgument( 0 )->pixel;
292292
m_currentPos = msg->getArgument( 0 )->pixel;
293-
m_timestamp = TheGameClient->getFrame();
293+
m_middleButtonDownTimeMS = timeGetTime();
294294
break;
295295
}
296296

@@ -299,7 +299,7 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage
299299
{
300300
m_lastMouseMoveFrame = TheGameLogic->getFrame();
301301

302-
const UnsignedInt CLICK_DURATION = 5;
302+
const UnsignedInt CLICK_DURATION_MS = 167;
303303
const UnsignedInt PIXEL_OFFSET = 5;
304304

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

0 commit comments

Comments
 (0)