void CCameraHandler::UpdateController(CCameraController& camCon, bool keyMove, bool wheelMove, bool edgeMove) { if (keyMove) { // NOTE: z-component contains speed scaling factor, xy is movement const float3 camMoveVector = camera->GetMoveVectorFromState(true); // key scrolling if ((camMoveVector * XYVector).SqLength() > 0.0f) { if (camCon.DisableTrackingByKey()) unitTracker.Disable(); camCon.KeyMove(camMoveVector); } } if (edgeMove) { const float3 camMoveVector = camera->GetMoveVectorFromState(false); // screen edge scrolling if ((camMoveVector * XYVector).SqLength() > 0.0f) { unitTracker.Disable(); camCon.ScreenEdgeMove(camMoveVector); } } if (wheelMove) { // mouse wheel zoom float mouseWheelDist = 0.0f; mouseWheelDist += float(camera->GetMovState()[CCamera::MOVE_STATE_UP]); mouseWheelDist += -float(camera->GetMovState()[CCamera::MOVE_STATE_DWN]); mouseWheelDist *= 0.2f * globalRendering->lastFrameTime; if (mouseWheelDist == 0.0f) return; camCon.MouseWheelMove(mouseWheelDist); } }