Skip to content

Commit

Permalink
#5338: Reduce code duplication a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Sep 26, 2020
1 parent ce728f9 commit 1b96369
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 43 deletions.
56 changes: 13 additions & 43 deletions radiant/camera/CamWnd.cpp
Expand Up @@ -1129,76 +1129,46 @@ void CamWnd::handleFreeMoveKeyEvent(KeyEventType eventType, unsigned int movemen
}
}

void CamWnd::onForwardKey(KeyEventType eventType)
void CamWnd::handleKeyEvent(KeyEventType eventType, unsigned int freeMoveFlags, const std::function<void()>& discreteMovement)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_FORWARD);
handleFreeMoveKeyEvent(eventType, freeMoveFlags);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.moveForwardDiscrete(SPEED_MOVE);
discreteMovement();
}
}

void CamWnd::onForwardKey(KeyEventType eventType)
{
handleKeyEvent(eventType, MOVE_FORWARD, [this]() { _camera.moveForwardDiscrete(SPEED_MOVE); });
}

void CamWnd::onBackwardKey(KeyEventType eventType)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_BACK);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.moveBackDiscrete(SPEED_MOVE);
}
handleKeyEvent(eventType, MOVE_BACK, [this]() { _camera.moveBackDiscrete(SPEED_MOVE); });
}

void CamWnd::onLeftKey(KeyEventType eventType)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_STRAFELEFT);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.rotateLeftDiscrete();
}
handleKeyEvent(eventType, MOVE_STRAFELEFT, [this]() { _camera.rotateLeftDiscrete(); });
}

void CamWnd::onRightKey(KeyEventType eventType)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_STRAFERIGHT);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.rotateRightDiscrete();
}
handleKeyEvent(eventType, MOVE_STRAFERIGHT, [this]() { _camera.rotateRightDiscrete(); });
}

void CamWnd::onUpKey(KeyEventType eventType)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_UP);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.moveUpDiscrete(SPEED_MOVE);
}
handleKeyEvent(eventType, MOVE_UP, [this]() { _camera.moveUpDiscrete(SPEED_MOVE); });
}

void CamWnd::onDownKey(KeyEventType eventType)
{
if (freeMoveEnabled())
{
handleFreeMoveKeyEvent(eventType, MOVE_DOWN);
}
else if (eventType == KeyEventType::KeyPressed)
{
_camera.moveDownDiscrete(SPEED_MOVE);
}
handleKeyEvent(eventType, MOVE_DOWN, [this]() { _camera.moveDownDiscrete(SPEED_MOVE); });
}

// -------------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions radiant/camera/CamWnd.h
Expand Up @@ -150,6 +150,7 @@ class CamWnd :

protected:
void handleFreeMoveKeyEvent(KeyEventType eventType, unsigned int movementFlags);
void handleKeyEvent(KeyEventType eventType, unsigned int freeMoveFlags, const std::function<void()>& discreteMovement);

// Required overrides being a MouseToolHandler
virtual MouseTool::Result processMouseDownEvent(const MouseToolPtr& tool, const Vector2& point) override;
Expand Down

0 comments on commit 1b96369

Please sign in to comment.