I have a custom clock source (IMovieSceneCustomClockSource) that we are using to maintain audio/visual sync.
There is some custom code to handle time dilated level sequences. It uses the “InPlayRate” value passed in from both IMovieSceneCustomClockSource::OnTick() and IMovieSceneCustomClockSource::OnRequestCurrentTime() to detect when time dilation is active, and modulate our external clock accordingly
Here is my code:
The play rate is getting toggled between 1.0f and the time dilated keyframe value when in PIE.
The issue seems to be that during PIE, MovieSceneSlomoSystem.cpp calls FSlomoUtil::ApplySlomo(PlaybackContext, TimeDilation);
This function early exits if we are in editor, but it overwrites WorldSettings->CinematicTimeDilation with a value of 1.f every other frame.
Given that IMovieSceneCustomClockSource is used only in the context of a level sequence - I want to use a value that only grabs time dilation relevant to the level sequencer tracks themselves. Is there any way to do this so I can ensure consistency between editor and PIE?
Here is a printout of values when auditioning in editor:
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.987175, Cine Time Dilation: 0.987175, EffectiveTimeDilation: 0.987175
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.957764, Cine Time Dilation: 0.957764, EffectiveTimeDilation: 0.957764
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.913971, Cine Time Dilation: 0.913971, EffectiveTimeDilation: 0.913971
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.863675, Cine Time Dilation: 0.863675, EffectiveTimeDilation: 0.863675
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.808126, Cine Time Dilation: 0.808126, EffectiveTimeDilation: 0.808126
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.752151, Cine Time Dilation: 0.752151, EffectiveTimeDilation: 0.752151
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.692744, Cine Time Dilation: 0.692744, EffectiveTimeDilation: 0.692744
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.640594, Cine Time Dilation: 0.640594, EffectiveTimeDilation: 0.640594
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.588514, Cine Time Dilation: 0.588514, EffectiveTimeDilation: 0.588514
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.542823, Cine Time Dilation: 0.542823, EffectiveTimeDilation: 0.542823
vs when printing the same values when calling this cinematic in PIE:
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.998525, Cine Time Dilation: 0.998525, EffectiveTimeDilation: 0.998525
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.951400, Cine Time Dilation: 0.951400, EffectiveTimeDilation: 0.951400
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.875000, Cine Time Dilation: 0.875000, EffectiveTimeDilation: 0.875000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.774600, Cine Time Dilation: 0.774600, EffectiveTimeDilation: 0.774600
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.600000, Cine Time Dilation: 0.600000, EffectiveTimeDilation: 0.600000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 1.000000, Cine Time Dilation: 1.000000, EffectiveTimeDilation: 1.000000
LogTemp: Warning: XXX: OnRequestCurrentTime() - PlayRate: 0.481600, Cine Time Dilation: 0.481600, EffectiveTimeDilation: 0.481600