public void Play(EventType eventType, IActorManager player, IActorManager opponent) { pd.playableAsset = GetTimelineAsset(eventType); TimelineAsset timeline = (TimelineAsset)pd.playableAsset; foreach (var track in timeline.GetOutputTracks()) { if (track.name == "Player Animation") { pd.SetGenericBinding(track, player.GetAnimator()); } else if (track.name == "Opponent Animation") { pd.SetGenericBinding(track, opponent.GetAnimator()); } else if (track.name == "Player Script") { pd.SetGenericBinding(track, player); foreach (var clip in track.GetClips()) { LockAnimatorClip lockClip = (LockAnimatorClip)clip.asset; lockClip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(lockClip.am.exposedName, player); } } else if (track.name == "Opponent Script") { pd.SetGenericBinding(track, opponent); foreach (var clip in track.GetClips()) { LockAnimatorClip lockClip = (LockAnimatorClip)clip.asset; lockClip.am.exposedName = System.Guid.NewGuid().ToString(); pd.SetReferenceValue(lockClip.am.exposedName, opponent); } } } pd.Evaluate(); pd.Play(); }