public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <MyPlayableBehaviousBehaviour> .Create(graph, template); MyPlayableBehaviousBehaviour clone = playable.GetBehaviour(); MyActorManager.exposedName = GetInstanceID().ToString(); clone.am = MyActorManager.Resolve(graph.GetResolver()); return(playable); }
public void PlayTimeLine(string timelineName, ActorManager attacker, ActorManager victimer) { if (pd.playableAsset != null) { return; } if (timelineName == "FrontStab") { pd.playableAsset = Instantiate(frontstab); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "AttackAnimation") { pd.SetGenericBinding(track, attacker.ac._animator); } else if (track.name == "VicTimAnimation") { pd.SetGenericBinding(track, victimer.ac._animator); } else if (track.name == "AttackScript") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MyPlayableBehaviousClip myclip = (MyPlayableBehaviousClip)clip.asset; MyPlayableBehaviousBehaviour mybehav = myclip.template; mybehav.MyFloat = 777; pd.SetReferenceValue(myclip.MyActorManager.exposedName, attacker); } } else if (track.name == "VicTimScript") { pd.SetGenericBinding(track, victimer); foreach (var clip in track.GetClips()) { MyPlayableBehaviousClip myclip = (MyPlayableBehaviousClip)clip.asset; MyPlayableBehaviousBehaviour mybehav = myclip.template; mybehav.MyFloat = 666; pd.SetReferenceValue(myclip.MyActorManager.exposedName, victimer); } } } pd.Play(); } }
// 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) { ActorManager trackBinding = playerData as ActorManager; if (!trackBinding) { return; } int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable <MyPlayableBehaviousBehaviour> inputPlayable = (ScriptPlayable <MyPlayableBehaviousBehaviour>)playable.GetInput(i); MyPlayableBehaviousBehaviour input = inputPlayable.GetBehaviour(); // Use the above variables to process each frame of this playable. } }