Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -399,19 +399,15 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage

Int spin = msg->getArgument( 1 )->integer;

// TheSuperHackers @tweak The camera zoom is now decoupled from the render update.
const Real fpsRatio = (Real)BaseFps / TheGameEngine->getUpdateFps();
const Real zoomHeight = (Real)View::ZoomHeightPerSecond * fpsRatio;

if (spin > 0)
{
for ( ; spin > 0; spin--)
TheTacticalView->zoom( -zoomHeight );
TheTacticalView->zoom( -View::ZoomHeightPerSecond );
}
else
{
for ( ;spin < 0; spin++ )
TheTacticalView->zoom( +zoomHeight );
TheTacticalView->zoom( +View::ZoomHeightPerSecond );
}

break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1195,34 +1195,34 @@ void W3DView::update(void)
{
Real desiredHeight = (m_terrainHeightUnderCamera + m_heightAboveGround);
Real desiredZoom = desiredHeight / m_cameraOffset.z;

if (didScriptedMovement || (TheGameLogic->isInReplayGame() && TheGlobalData->m_useCameraInReplay))
{
// if we are in a scripted camera movement, take its height above ground as our desired height.
m_heightAboveGround = m_currentHeightAboveGround;
//DEBUG_LOG(("Frame %d: height above ground: %g %g %g %g", TheGameLogic->getFrame(), m_heightAboveGround,
// m_cameraOffset.z, m_zoom, m_terrainHeightUnderCamera));
}

if (TheInGameUI->isScrolling())
{
// if scrolling, only adjust if we're too close or too far
if (m_scrollAmount.length() < m_scrollAmountCutoff || (m_currentHeightAboveGround < m_minHeightAboveGround) || (TheGlobalData->m_enforceMaxCameraHeight && m_currentHeightAboveGround > m_maxHeightAboveGround))
{
Real zoomAdj = (desiredZoom - m_zoom)*TheGlobalData->m_cameraAdjustSpeed;
if (fabs(zoomAdj) >= 0.0001) // only do positive
Real zoomAdj = (desiredZoom - m_zoom) * TheGlobalData->m_cameraAdjustSpeed * TheGameEngine->getActualLogicTimeScaleOverFpsRatio();
if (fabs(zoomAdj) >= 0.0001f) // only do positive
{
m_zoom += zoomAdj;
recalcCamera = true;
}
}
}
else
else if (!didScriptedMovement)
{
// we're not scrolling; settle toward desired height above ground
Real zoomAdj = (m_zoom - desiredZoom)*TheGlobalData->m_cameraAdjustSpeed;
Real zoomAdjAbs = fabs(zoomAdj);
if (zoomAdjAbs >= 0.0001 && !didScriptedMovement)
Real zoomAdj = (m_zoom - desiredZoom) * TheGlobalData->m_cameraAdjustSpeed * TheGameEngine->getActualLogicTimeScaleOverFpsRatio();
if (fabs(zoomAdj) >= 0.0001f)
{
//DEBUG_LOG(("W3DView::update() - m_zoom=%g, desiredHeight=%g", m_zoom, desiredZoom));
m_zoom -= zoomAdj;
recalcCamera = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -398,19 +398,15 @@ GameMessageDisposition LookAtTranslator::translateGameMessage(const GameMessage

Int spin = msg->getArgument( 1 )->integer;

// TheSuperHackers @tweak The camera zoom is now decoupled from the render update.
const Real fpsRatio = (Real)BaseFps / TheGameEngine->getUpdateFps();
const Real zoomHeight = (Real)View::ZoomHeightPerSecond * fpsRatio;

if (spin > 0)
{
for ( ; spin > 0; spin--)
TheTacticalView->zoom( -zoomHeight );
TheTacticalView->zoom( -View::ZoomHeightPerSecond );
}
else
{
for ( ;spin < 0; spin++ )
TheTacticalView->zoom( +zoomHeight );
TheTacticalView->zoom( +View::ZoomHeightPerSecond );
}

break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1348,34 +1348,34 @@ void W3DView::update(void)
{
Real desiredHeight = (m_terrainHeightUnderCamera + m_heightAboveGround);
Real desiredZoom = desiredHeight / m_cameraOffset.z;

if (didScriptedMovement || (TheGameLogic->isInReplayGame() && TheGlobalData->m_useCameraInReplay))
{
// if we are in a scripted camera movement, take its height above ground as our desired height.
m_heightAboveGround = m_currentHeightAboveGround;
//DEBUG_LOG(("Frame %d: height above ground: %g %g %g %g", TheGameLogic->getFrame(), m_heightAboveGround,
// m_cameraOffset.z, m_zoom, m_terrainHeightUnderCamera));
}

if (TheInGameUI->isScrolling())
{
// if scrolling, only adjust if we're too close or too far
if (m_scrollAmount.length() < m_scrollAmountCutoff || (m_currentHeightAboveGround < m_minHeightAboveGround) || (TheGlobalData->m_enforceMaxCameraHeight && m_currentHeightAboveGround > m_maxHeightAboveGround))
{
Real zoomAdj = (desiredZoom - m_zoom)*TheGlobalData->m_cameraAdjustSpeed;
if (fabs(zoomAdj) >= 0.0001) // only do positive
Real zoomAdj = (desiredZoom - m_zoom) * TheGlobalData->m_cameraAdjustSpeed * TheGameEngine->getActualLogicTimeScaleOverFpsRatio();
if (fabs(zoomAdj) >= 0.0001f) // only do positive
{
m_zoom += zoomAdj;
recalcCamera = true;
}
}
}
else
else if (!didScriptedMovement)
{
// we're not scrolling; settle toward desired height above ground
Real zoomAdj = (m_zoom - desiredZoom)*TheGlobalData->m_cameraAdjustSpeed;
Real zoomAdjAbs = fabs(zoomAdj);
if (zoomAdjAbs >= 0.0001 && !didScriptedMovement)
Real zoomAdj = (m_zoom - desiredZoom) * TheGlobalData->m_cameraAdjustSpeed * TheGameEngine->getActualLogicTimeScaleOverFpsRatio();
if (fabs(zoomAdj) >= 0.0001f)
{
//DEBUG_LOG(("W3DView::update() - m_zoom=%g, desiredHeight=%g", m_zoom, desiredZoom));
m_zoom -= zoomAdj;
recalcCamera = true;
}
Expand Down
Loading