View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004535 | The Dark Mod | GUI | public | 17.05.2017 04:25 | 02.07.2017 06:58 |
Reporter | stgatilov | Assigned To | stgatilov | ||
Priority | normal | Severity | normal | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
Product Version | SVN | ||||
Target Version | TDM 2.06 | Fixed in Version | TDM 2.06 | ||
Summary | 0004535: Showing video for its full duration | ||||
Description | Right now length of the video must be set manually in GUI scripts. If the video is longer: it is interrupted. If the video is shorter: it is looped / blackscreen. Ideally, there must be an option to play video for its natural duration. | ||||
Tags | No tags attached. | ||||
Implemented SVN revision 6931. Added idCinematic::GetStatus virtual function, which returns whether the video is playing (FMV_PLAY), has not started playing yet (FMV_IDLE), or has finished playing already (FMV_EOF). Note that this function simply returns FMV_PLAY for legacy ROQ cinematics implementation. Previously this status could only be obtained from the result of ImageForTime call, but that call needs proper renderer backend time argument, and in any case it might have side effects. Each GUI window regularly checks status of its background cinematics in its "time" function (idWindow::Time). If status is FMV_EOF, then named event "CinematicEnd" of the window is triggered immediately. This allows to change GUI exactly when the video ends without the need to hard-code video duration. Note that the video is also closed (idCinematic::Close) when CinematicEnd is issued. This is necessary for idCinematicFFmpeg for two reasons: 1. Avoid triggering the event again during next frames (because status changes to FMV_IDLE after idCinematic::Close). 2. Avoid triggering the event when the video is restarted. The problem here is that when video is restarted, idWindow::Time happens before idCinematic::ResetTime method is called. At that moment cinematics is still in FMV_EOF state if we do not call idCinematic::Close explicitly. It is worth noting that calling idCinematic::Close for legacy ROQ cinematic prevents the video from being played ever in future, because it cleans even the filename. Luckily, we call idCinematic::Close only when idCinematic::GetStatus returns FMV_EOF, and legavy ROQ cinematic always returns FMV_PLAY status. |
|
This forum post describes well how to use the feature from GUI scripts: http://forums.thedarkmod.com/topic/18820-why-roq/?p=407624 |
|
Due to related issue 4547, now Close method is called only when CinematicEnd event handler is actually present. If no one listens to this event, then cinematics is not closed. | |
Date Modified | Username | Field | Change |
---|---|---|---|
17.05.2017 04:25 | stgatilov | New Issue | |
17.05.2017 04:25 | stgatilov | Relationship added | related to 0004519 |
10.06.2017 17:46 | stgatilov | Assigned To | => stgatilov |
10.06.2017 17:46 | stgatilov | Status | new => assigned |
12.06.2017 06:14 | stgatilov | Note Added: 0008895 | |
12.06.2017 06:16 | stgatilov | Note Edited: 0008895 | |
12.06.2017 06:16 | stgatilov | Note Edited: 0008895 | |
12.06.2017 06:17 | stgatilov | Note Added: 0008896 | |
12.06.2017 06:26 | stgatilov | Fixed in Version | => TDM 2.06 |
12.06.2017 06:26 | stgatilov | Target Version | => TDM 2.06 |
12.06.2017 06:26 | stgatilov | Status | assigned => resolved |
12.06.2017 06:26 | stgatilov | Resolution | open => fixed |
12.06.2017 07:59 | stgatilov | Relationship added | related to 0004541 |
26.06.2017 17:17 | stgatilov | Relationship added | related to 0004547 |
02.07.2017 06:58 | stgatilov | Note Added: 0008944 |