Skip to content

Instantly share code, notes, and snippets.

@hotcakesdeluxe
Created March 14, 2018 23:32
Show Gist options
  • Save hotcakesdeluxe/5555cd413fb3f3f466cda3b06ea096e4 to your computer and use it in GitHub Desktop.
Save hotcakesdeluxe/5555cd413fb3f3f466cda3b06ea096e4 to your computer and use it in GitHub Desktop.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
public class IntroCinematicCharacters : MonoBehaviour
{
public PlayableDirector characterDirector;
public List<CharacterData> MeatTeam;
public List<CharacterData> VeggieTeam;
public List<Transform> MeatSpawn;
public List<Transform> VeggieSpawn;
public double MeatTime = 9.75;
public double VeggieTime = 13.5;
void Start()
{
TimelineAsset timelineAsset = ScriptableObject.CreateInstance("TimelineAsset") as TimelineAsset;
timelineAsset.name = "characterTimeline";
characterDirector.playableAsset = timelineAsset;
int meatSpawned = 0;
int veggieSpawned = 0;
foreach (User user in UserManager.instance.users)
{
//veggie team
if (user.team == TeamManager.instance.teams[0])
{
GameObject veggieInstance = Instantiate(user.character.prefab, VeggieSpawn[veggieSpawned]) as GameObject;
veggieSpawned++;
veggieInstance.GetComponent<CharacterObject>().Initialize(user);
//adding timeline stuff
AnimationTrack loserTrack = timelineAsset.CreateTrack<AnimationTrack>(null, "Loser Animation Track ");
characterDirector.SetGenericBinding(loserTrack, veggieInstance.GetComponent<CharacterObject>().meshObject);
//add clip from character data object to timeline at x seconds
TimelineClip timeClip = loserTrack.CreateClip(veggieInstance.GetComponent<CharacterObject>().character.introCinematicAnim);
timeClip.start = VeggieTime;
}
//meat team
else if (user.team == TeamManager.instance.teams[1])
{
GameObject meatInstance = Instantiate(user.character.prefab, MeatSpawn[meatSpawned]) as GameObject;
meatSpawned++;
meatInstance.GetComponent<CharacterObject>().Initialize(user);
//adding timeline stuff
AnimationTrack winnerTrack = timelineAsset.CreateTrack<AnimationTrack>(null, "Winner Animation Track ");
characterDirector.SetGenericBinding(winnerTrack, meatInstance.GetComponent<CharacterObject>().meshObject);
//add clip from character data object to timeline at x seconds
TimelineClip timelineClip = winnerTrack.CreateClip(meatInstance.GetComponent<CharacterObject>().character.introCinematicAnim);
timelineClip.start = MeatTime;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment