public override void ProcessFrame(Playable playable, FrameData info, object playerData) { int inputCount = playable.GetInputCount(); float mixedTimeScale = 0f; float totalWeight = 0f; int currentInputCount = 0; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); if (inputWeight > 0f) { currentInputCount++; } totalWeight += inputWeight; ScriptPlayable <TimeDilationBehaviour> playableInput = (ScriptPlayable <TimeDilationBehaviour>)playable.GetInput(i); TimeDilationBehaviour input = playableInput.GetBehaviour(); mixedTimeScale += inputWeight * input.timeScale; } Time.timeScale = mixedTimeScale + defaultTimeScale * (1f - totalWeight); if (currentInputCount == 0) { Time.timeScale = defaultTimeScale; } }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { int inputCount = playable.GetInputCount <Playable>(); float num = 0f; float num2 = 0f; for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); num2 += inputWeight; TimeDilationBehaviour behaviour = ((ScriptPlayable <T>)playable.GetInput(i)).GetBehaviour(); num += inputWeight * behaviour.timeScale; } Time.timeScale = num + this.m_OldTimeScale * (1f - num2); }