1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-17 01:10:10 +00:00
This commit is contained in:
Petr Mikheev 2023-02-15 09:52:26 +01:00
parent 0ed1310417
commit 0c3237ad78
2 changed files with 14 additions and 7 deletions

View File

@ -213,7 +213,10 @@ namespace MWRender
void Camera::setMode(Mode newMode, bool force)
{
if (mMode == newMode)
{
mQueuedMode = std::nullopt;
return;
}
Mode oldMode = mMode;
if (!force && (newMode == Mode::FirstPerson || oldMode == Mode::FirstPerson) && mAnimation
&& !mAnimation->upperBodyReady())

View File

@ -76,6 +76,12 @@ local function updatePOV(dt)
end
end
camera.setMode(primaryMode)
if camera.getMode() == MODE.Preview then
-- If Preview -> FirstPerson change is queued (because of 3rd person animation),
-- then first exit Preview by switching to ThirdPerson, and then queue the switch to FirstPerson.
camera.setMode(MODE.ThirdPerson)
camera.setMode(MODE.FirstPerson)
end
previewTimer = 0
end
end
@ -186,17 +192,15 @@ local function onFrame(dt)
if core.isWorldPaused() then return end
updateIdleTimer(dt)
local mode = camera.getMode()
if mode == MODE.FirstPerson or mode == MODE.ThirdPerson then
if (mode == MODE.FirstPerson or mode == MODE.ThirdPerson) and not camera.getQueuedMode() then
primaryMode = mode
end
if mode ~= MODE.Static then
if not camera.getQueuedMode() or camera.getQueuedMode() == MODE.Preview then
if noModeControl == 0 then
updatePOV(dt)
updateVanity(dt)
end
updateStandingPreview()
if noModeControl == 0 then
updatePOV(dt)
updateVanity(dt)
end
updateStandingPreview()
updateCrosshair()
end
applyControllerZoom(dt)