public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <TimeMachineBehavior> .Create(graph, template); TimeMachineBehavior clone = playable.GetBehaviour(); clone.trigger = trigger.Resolve(graph.GetResolver()); clone.markerToJumpTo = markerToJumpTo; clone.action = action; clone.condition = condition; clone.markerLabel = markerLabel; clone.timeToJumpTo = timeToJumpTo; return(playable); }
public override void ProcessFrame(Playable playable, FrameData info, object playerData) { //ScriptPlayable<TimeMachineBehaviour> inputPlayable = (ScriptPlayable<TimeMachineBehaviour>)playable.GetInput(i); //Debug.Log(PlayableExtensions.GetTime<ScriptPlayable<TimeMachineBehaviour>>(inputPlayable)); if (!Application.isPlaying) { return; } int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <TimeMachineBehavior> inputPlayable = (ScriptPlayable <TimeMachineBehavior>)playable.GetInput(i); TimeMachineBehavior input = inputPlayable.GetBehaviour(); if (inputWeight > 0f) { if (!input.clipExecuted) { switch (input.action) { case TimeMachineBehavior.TimeMachineAction.JumpToTime: case TimeMachineBehavior.TimeMachineAction.JumpToMarker: if (input.ConditionMet()) { //Rewind if (input.action == TimeMachineBehavior.TimeMachineAction.JumpToTime) { //Jump to time (playable.GetGraph().GetResolver() as PlayableDirector).time = (double)input.timeToJumpTo; } else { //Jump to marker double t = markerClips[input.markerToJumpTo]; (playable.GetGraph().GetResolver() as PlayableDirector).time = t; } input.clipExecuted = false; //we want the jump to happen again! } break; } } } } }