public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <MySuperPlayableBehaviour> .Create(graph, template); MySuperPlayableBehaviour clone = playable.GetBehaviour(); clone.actorManager = actorManager.Resolve(graph.GetResolver()); return(playable); }
public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) { var playable = ScriptPlayable <MySuperPlayableBehaviour> .Create(graph, template); MySuperPlayableBehaviour clone = playable.GetBehaviour(); myActor.exposedName = GetInstanceID().ToString(); clone.myActor = myActor.Resolve(graph.GetResolver()); return(playable); }
// 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 <MySuperPlayableBehaviour> inputPlayable = (ScriptPlayable <MySuperPlayableBehaviour>)playable.GetInput(i); MySuperPlayableBehaviour input = inputPlayable.GetBehaviour(); // Use the above variables to process each frame of this playable. } }
public void PlayTimeline(string timelineName, ActorManager attacker, ActorManager victim) { if (playableDirector.state == PlayState.Playing) { return; } if (timelineName == "frontStab") { playableDirector.playableAsset = Instantiate(frontStab); //找到相应的timeline给导演 TimelineAsset timeline = (TimelineAsset)playableDirector.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Attacker Script") { playableDirector.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myBehav.myFloat = 111; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, attacker); } } else if (track.name == "Victim Script") { playableDirector.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myBehav.myFloat = 222; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, victim); } } else if (track.name == "Attacker Animation") { playableDirector.SetGenericBinding(track, attacker.actorController.animator); } else if (track.name == "Victim Animation") { playableDirector.SetGenericBinding(track, victim.actorController.animator); } } playableDirector.Evaluate(); playableDirector.Play(); } else if (timelineName == "openBox") { playableDirector.playableAsset = Instantiate(openBox); //找到相应的timeline给导演 TimelineAsset timeline = (TimelineAsset)playableDirector.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { playableDirector.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, attacker); } } else if (track.name == "Box Script") { playableDirector.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, victim); } } else if (track.name == "Player Animation") { playableDirector.SetGenericBinding(track, attacker.actorController.animator); } else if (track.name == "Box Animation") { playableDirector.SetGenericBinding(track, victim.actorController.animator); } } playableDirector.Evaluate(); playableDirector.Play(); } else if (timelineName == "leverUp") { playableDirector.playableAsset = Instantiate(leverUp); //找到相应的timeline给导演 TimelineAsset timeline = (TimelineAsset)playableDirector.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { playableDirector.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, attacker); } } else if (track.name == "Lever Script") { playableDirector.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); playableDirector.SetReferenceValue(myClip.actorManager.exposedName, victim); } } else if (track.name == "Player Animation") { playableDirector.SetGenericBinding(track, attacker.actorController.animator); } else if (track.name == "Lever Animation") { playableDirector.SetGenericBinding(track, victim.actorController.animator); } } playableDirector.Evaluate(); playableDirector.Play(); } }
public void PlayFrontStab(string timelineName, ActorManager attacker, ActorManager victim) { if (timelineName == "frontStab") { pd.playableAsset = Instantiate(frontStab); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Attacker Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, attacker); } } else if (track.name == "Victim Script") { pd.SetGenericBinding(track, victim); pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, victim); } } else if (track.name == "Attacker Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Victim Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); } else if (timelineName == "openBox") { pd.playableAsset = Instantiate(openBox); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, attacker); } } else if (track.name == "Box Script") { pd.SetGenericBinding(track, victim); pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, victim); } } else if (track.name == "Player Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Box Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); } else if (timelineName == "leverUp") { pd.playableAsset = Instantiate(leverUp); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, attacker); } } else if (track.name == "Lever Script") { pd.SetGenericBinding(track, victim); pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehave = myclip.template; pd.SetReferenceValue(myclip.myActor.exposedName, victim); } } else if (track.name == "Player Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Lever Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); } }
public void PlayFrontStab(ActorManager attacker, ActorManager victim) { if (IsPlaying) { return; } pd.playableAsset = Instantiate(frontStab); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { Object obj = null; switch (track.name) { case "Attacker Animation": obj = attacker.actorController.anim; break; case "Attacker Script": obj = attacker; foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = clip.asset as MySuperPlayableClip; MySuperPlayableBehaviour myBehav = myClip.template; myBehav.myFloat = 777; //给他一个单独的KEY 防止地址重复 myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myClip.actorManager.exposedName, attacker); } break; case "Victim Animation": obj = victim.actorController.anim; break; case "Victim Script": foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = clip.asset as MySuperPlayableClip; MySuperPlayableBehaviour myBehav = myClip.template; myBehav.myFloat = 6666; myClip.actorManager.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myClip.actorManager.exposedName, victim); } break; } if (obj != null) { pd.SetGenericBinding(track, obj); } } // 强行执行一次插值 , 把值初始一次 pd.Evaluate(); pd.Play(); }
public void PlayFrontStab(string timelineName, ActorMgr attacker, ActorMgr Victim) { //if(playDir.state == PlayState.Playing) //{ // return; //} if (timelineName == "frontStab") { playDir.playableAsset = Instantiate(frontStab); TimelineAsset timeline = (TimelineAsset)playDir.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Attacker Script") { playDir.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myBehav.myFloat = 666; //myClips._actMgr.exposedName = GetInstanceID().ToString();//18年版本官方没有初始化,也暂时忘记跟Operator讲述 myClips._actMgr.exposedName = System.Guid.NewGuid().ToString();//这种不会同一获得同一东西 playDir.SetReferenceValue(myClips._actMgr.exposedName, attacker); Debug.Log(myClips._actMgr.exposedName); //不支持加载固件,只能加载资源 } } else if (track.name == "Victim Script") { playDir.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myBehav.myFloat = 777; myClips._actMgr.exposedName = System.Guid.NewGuid().ToString();//这种不会同一获得同一东西 playDir.SetReferenceValue(myClips._actMgr.exposedName, victim); Debug.Log(myClips._actMgr.exposedName); //不支持加载固件,只能加载资源 } } else if (track.name == "Attacker Animation") { playDir.SetGenericBinding(track, attacker.actCtrl.anim); } else if (track.name == "Victim Animation") { playDir.SetGenericBinding(track, victim.actCtrl.anim); } } playDir.Evaluate();//在MySuperPlayableClip的类里,要加入物体数值的初始化,先前官方没有添加 playDir.Play(); } else if (timelineName == "openBox") { playDir.playableAsset = Instantiate(openBox); TimelineAsset timeline = (TimelineAsset)playDir.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { playDir.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myClips._actMgr.exposedName = System.Guid.NewGuid().ToString();//这种不会同一获得同一东西 playDir.SetReferenceValue(myClips._actMgr.exposedName, attacker); Debug.Log(myClips._actMgr.exposedName); } } else if (track.name == "Box Script") { playDir.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myClips._actMgr.exposedName = System.Guid.NewGuid().ToString(); playDir.SetReferenceValue(myClips._actMgr.exposedName, victim); Debug.Log(myClips._actMgr.exposedName); } } else if (track.name == "Player Animation") { playDir.SetGenericBinding(track, attacker.actCtrl.anim); } else if (track.name == "Box Animation") { Debug.Log("this is 123pre on DirectorMgr :" + victim.actCtrl.anim.name); playDir.SetGenericBinding(track, victim.actCtrl.anim); } } playDir.Evaluate();//在MySuperPlayableClip的类里,要加入物体数值的初始化,先前官方没有添加 playDir.Play(); } else if (timelineName == "leverUp") { playDir.playableAsset = Instantiate(leverUp); TimelineAsset timeline = (TimelineAsset)playDir.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { playDir.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myClips._actMgr.exposedName = System.Guid.NewGuid().ToString();//这种不会同一获得同一东西 playDir.SetReferenceValue(myClips._actMgr.exposedName, attacker); //Debug.Log(myClips._actMgr.exposedName); } } else if (track.name == "Lever Script") { playDir.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClips = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClips.template; myClips._actMgr.exposedName = System.Guid.NewGuid().ToString(); playDir.SetReferenceValue(myClips._actMgr.exposedName, victim); } } else if (track.name == "Player Animation") { playDir.SetGenericBinding(track, attacker.actCtrl.anim); //Debug.Log(attacker.actCtrl.anim); } else if (track.name == "Lever Animation") { playDir.SetGenericBinding(track, victim.actCtrl.anim); } } playDir.Evaluate();//在MySuperPlayableClip的类里,要加入物体数值的初始化,先前官方没有添加 playDir.Play(); } }
public void PlayFrontStab(string timelineName, ActorManager attacker, ActorManager victim) { // if(pd.playableAsset != null) // { // return; // } // if(pd.state == PlayState.Playing) // { // return; // } if (timelineName == "frontStab") { pd.playableAsset = Instantiate(frontStab); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Attacker Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, attacker); } } else if (track.name == "Victim Script") { pd.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, victim); } } else if (track.name == "Attacker Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Victim Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); // foreach (var trackBinding in pd.playableAsset.outputs) // { // if (trackBinding.streamName == "Attacker Script") // { // pd.SetGenericBinding(trackBinding.sourceObject, attacker); // } // else if (trackBinding.streamName == "Victim Script") // { // pd.SetGenericBinding(trackBinding.sourceObject, victim); // } // else if (trackBinding.streamName == "Attacker Animation") // { // pd.SetGenericBinding(trackBinding.sourceObject, attacker.ac.anim); // } // else if (trackBinding.streamName == "Victim Animation") // { // pd.SetGenericBinding(trackBinding.sourceObject, victim.ac.anim); // } // } } else if (timelineName == "openBox") { pd.playableAsset = Instantiate(openBox); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, attacker); } } else if (track.name == "Box Script") { pd.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, victim); } } else if (track.name == "Player Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Box Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); } else if (timelineName == "leverUp") { pd.playableAsset = Instantiate(leverUp); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Script") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, attacker); } } else if (track.name == "Lever Script") { pd.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myclip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour mybehav = myclip.template; myclip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(myclip.am.exposedName, victim); } } else if (track.name == "Player Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Lever Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } pd.Evaluate(); pd.Play(); } }
public void PlayFrontStab(string timelineName, ActorManager attacker, ActorManager victim) { if (pd.state == PlayState.Playing) { return; } if (timelineName == "StabTimeline") { pd.playableAsset = frontStab; TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Attacker Track") { pd.SetGenericBinding(track, attacker); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.myAM.exposedName = System.Guid.NewGuid().ToString(); myBehav.myFloat = 777; pd.SetReferenceValue(myClip.myAM.exposedName, attacker); } } else if (track.name == "Victim Track") { pd.SetGenericBinding(track, victim); foreach (var clip in track.GetClips()) { MySuperPlayableClip myClip = (MySuperPlayableClip)clip.asset; MySuperPlayableBehaviour myBehav = myClip.template; myClip.myAM.exposedName = System.Guid.NewGuid().ToString(); myBehav.myFloat = 888; pd.SetReferenceValue(myClip.myAM.exposedName, victim); } } else if (track.name == "Attacker Animation") { pd.SetGenericBinding(track, attacker.ac.anim); } else if (track.name == "Victim Animation") { pd.SetGenericBinding(track, victim.ac.anim); } } //foreach (var trackBinding in pd.playableAsset.outputs) //{ // if (trackBinding.streamName == "Attacker Track") // { // pd.SetGenericBinding(trackBinding.sourceObject, attacker); // } // else if (trackBinding.streamName == "Victim Track") // { // pd.SetGenericBinding(trackBinding.sourceObject, victim); // } // else if (trackBinding.streamName == "Attacker Animation") // { // pd.SetGenericBinding(trackBinding.sourceObject, attacker.ac.anim); // } // else if (trackBinding.streamName == "Victim Animation") // { // pd.SetGenericBinding(trackBinding.sourceObject, victim.ac.anim); // } //} pd.Play(); } }