public override void ProcessFrame(Playable playable, FrameData info, object playerData) { objectStatus.Clear(); for (int i = 0; i < playable.GetInputCount(); i++) { ScriptPlayable <EZActivationBehaviour> inputPlayable = (ScriptPlayable <EZActivationBehaviour>)playable.GetInput(i); EZActivationBehaviour inputBehaviour = inputPlayable.GetBehaviour(); if (inputBehaviour.gameObject == null) { continue; } if (objectStatus.ContainsKey(inputBehaviour.gameObject)) { objectStatus[inputBehaviour.gameObject] |= inputPlayable.GetPlayState() == PlayState.Playing; } else { objectStatus[inputBehaviour.gameObject] = inputPlayable.GetPlayState() == PlayState.Playing; } } foreach (var status in objectStatus) { status.Key.SetActive(status.Value); } }
// NOTE: This function is called at runtime and edit time. Keep that in mind when setting the values of properties. public override void ProcessFrame(Playable playable, FrameData info, object playerData) { int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { ScriptPlayable <TimelineAnimatorBehaviour> inputPlayable = (ScriptPlayable <TimelineAnimatorBehaviour>)playable.GetInput(i); TimelineAnimatorBehaviour input = inputPlayable.GetBehaviour(); if (!input.target || !input.target.activeSelf) { continue; } if (inputPlayable.GetPlayState() != PlayState.Playing) { continue; } // Use the above variables to process each frame of this playable. float timeNormalized = (float)(inputPlayable.GetTime() / input.duration); Animate(input, timeNormalized); } }