CinemachineTrack.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #if !UNITY_2019_1_OR_NEWER
  2. #define CINEMACHINE_TIMELINE
  3. #endif
  4. #if CINEMACHINE_TIMELINE
  5. using System;
  6. using UnityEngine;
  7. using UnityEngine.Playables;
  8. using UnityEngine.Timeline;
  9. using Cinemachine;
  10. //namespace Cinemachine.Timeline
  11. //{
  12. /// <summary>
  13. /// Timeline track for Cinemachine virtual camera activation
  14. /// </summary>
  15. [Serializable]
  16. [TrackClipType(typeof(CinemachineShot))]
  17. [TrackBindingType(typeof(CinemachineBrain), TrackBindingFlags.None)]
  18. [TrackColor(0.53f, 0.0f, 0.08f)]
  19. public class CinemachineTrack : TrackAsset
  20. {
  21. /// <summary>
  22. /// TrackAsset implementation
  23. /// </summary>
  24. /// <param name="graph"></param>
  25. /// <param name="go"></param>
  26. /// <param name="inputCount"></param>
  27. /// <returns></returns>
  28. public override Playable CreateTrackMixer(
  29. PlayableGraph graph, GameObject go, int inputCount)
  30. {
  31. #if !UNITY_2019_2_OR_NEWER
  32. // Hack to set the display name of the clip to match the vcam
  33. foreach (var c in GetClips())
  34. {
  35. CinemachineShot shot = (CinemachineShot)c.asset;
  36. CinemachineVirtualCameraBase vcam = shot.VirtualCamera.Resolve(graph.GetResolver());
  37. if (vcam != null)
  38. c.displayName = vcam.Name;
  39. }
  40. #endif
  41. var mixer = ScriptPlayable<CinemachineMixer>.Create(graph);
  42. mixer.SetInputCount(inputCount);
  43. return mixer;
  44. }
  45. }
  46. //}
  47. #endif