// -- // public override void ProcessFrame(Playable playable, FrameData info, object playerData) { int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <EventTriggerBehaviour> inputPlayable = (ScriptPlayable <EventTriggerBehaviour>)playable.GetInput(i); EventTriggerBehaviour input = inputPlayable.GetBehaviour(); if (!input.Triggered && inputWeight > 0) { if (input.onStartPlaying != null) { Trigger(input.onStartPlaying, input.invoker); input.Triggered = true; lastEvent = input; } } else if (input.Triggered && inputWeight == 0) { if (input.onFinishedPlaying != null) { Trigger(input.onFinishedPlaying, input.invoker); } input.Triggered = false; lastEvent = null; } } }
// -- // public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <EventTriggerBehaviour> .Create(graph, template); EventTriggerBehaviour clone = playable.GetBehaviour(); clone.onStartPlaying = onStartPlaying; clone.onFinishedPlaying = onFinishedPlaying; clone.invoker = invoker.Resolve(graph.GetResolver()); return(playable); }