View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004541||The Dark Mod||GUI||public||12.06.2017 07:58||18.06.2017 03:53|
|Target Version||Fixed in Version|
|Summary||0004541: Glimpse of old frames when cinematic is restarted|
|Description||Sometimes when you play cinematic, a few erratic frames are shown at the very beginning. They go away very soon, and video continues playing from the beginning.|
This does not happen on the first playing, but when you play the same cinematic second time, the issue is visible: a few frames from where you stopped the video the previous time are shown.
|Steps To Reproduce||1. Install "New Job" mission (or other one with cinematic briefing).|
2. Start "New mission" to see the TDM video.
3. Immediately hit Escape twice and click on "New Mission" again.
If you are quick enough, you'll catch a glimpse of TDM logo at the very beginning of video playback (the second time) .
The more reliable way of seeing this is to look into log_cinematics.txt (generated only when cvar r_cinematic_log is set). The problem appears if ImageForTime is called before ResetTime when you start playing video. If the video was played before, then it would display the frame which must had been displayed at this moment if you did not stop cinematic the first time.
|Tags||No tags attached.|
This problem can be fixed by calling resetCinematics in GUI scripts everytime when video is stopped.
Calling resetCinematics later (when the video is restarted) is questionable solution, because it is hard to ensure that GUI event would be handled before renderer's backend updates cinematic material.
I think I was wrong.
If we simply call resetCinematics when the video is interrupted, then after we resume it, it would call ImageForTime immediately, and the same issue would still appear.
Suppose that we play S seconds of video, interrupt it, then start playing the video again after T seconds. With current behavior a frame for time S+T would be displayed, and if we call resetCinematics in interrupt time, then a frame for time T would be displayed.
Currently I do not see how to solve this problem without dirty hacks (like adding new GUI command closeCinematics and adding yet another "reset" method to idCinematic). So I guess I'll simply leave it=(
The best solution to the problem would be: ensure that when video is started , ImageForTime is called AFTER ResetTime.
|12.06.2017 07:58||stgatilov||New Issue|
|12.06.2017 07:59||stgatilov||Relationship added||related to 0004518|
|12.06.2017 07:59||stgatilov||Relationship added||related to 0004535|
|12.06.2017 08:01||stgatilov||Note Added: 0008901|
|18.06.2017 03:52||stgatilov||Note Added: 0008913|
|18.06.2017 03:53||stgatilov||Note Edited: 0008913||View Revisions|