Ejemplo n.º 1
0
    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.
        }
    }