Initial Commit
This commit is contained in:
parent
53eb92e9af
commit
270ab7d11f
15341 changed files with 700234 additions and 0 deletions
|
@ -0,0 +1,70 @@
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Playables;
|
||||
|
||||
namespace UnityEngine.Timeline
|
||||
{
|
||||
/// <summary>
|
||||
/// A Track whose clips control time-related elements on a GameObject.
|
||||
/// </summary>
|
||||
[TrackClipType(typeof(ControlPlayableAsset), false)]
|
||||
[ExcludeFromPreset]
|
||||
[TimelineHelpURL(typeof(ControlTrack))]
|
||||
public class ControlTrack : TrackAsset
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
private static readonly HashSet<PlayableDirector> s_ProcessedDirectors = new HashSet<PlayableDirector>();
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void GatherProperties(PlayableDirector director, IPropertyCollector driver)
|
||||
{
|
||||
if (director == null)
|
||||
return;
|
||||
|
||||
// avoid recursion
|
||||
if (s_ProcessedDirectors.Contains(director))
|
||||
return;
|
||||
|
||||
s_ProcessedDirectors.Add(director);
|
||||
|
||||
var particlesToPreview = new HashSet<ParticleSystem>();
|
||||
var activationToPreview = new HashSet<GameObject>();
|
||||
var timeControlToPreview = new HashSet<MonoBehaviour>();
|
||||
var subDirectorsToPreview = new HashSet<PlayableDirector>();
|
||||
|
||||
foreach (var clip in GetClips())
|
||||
{
|
||||
var controlPlayableAsset = clip.asset as ControlPlayableAsset;
|
||||
if (controlPlayableAsset == null)
|
||||
continue;
|
||||
|
||||
var gameObject = controlPlayableAsset.sourceGameObject.Resolve(director);
|
||||
if (gameObject == null)
|
||||
continue;
|
||||
|
||||
if (controlPlayableAsset.updateParticle)
|
||||
particlesToPreview.UnionWith(gameObject.GetComponentsInChildren<ParticleSystem>(true));
|
||||
if (controlPlayableAsset.active)
|
||||
activationToPreview.Add(gameObject);
|
||||
if (controlPlayableAsset.updateITimeControl)
|
||||
timeControlToPreview.UnionWith(ControlPlayableAsset.GetControlableScripts(gameObject));
|
||||
if (controlPlayableAsset.updateDirector)
|
||||
subDirectorsToPreview.UnionWith(controlPlayableAsset.GetComponent<PlayableDirector>(gameObject));
|
||||
}
|
||||
|
||||
ControlPlayableAsset.PreviewParticles(driver, particlesToPreview);
|
||||
ControlPlayableAsset.PreviewActivation(driver, activationToPreview);
|
||||
ControlPlayableAsset.PreviewTimeControl(driver, director, timeControlToPreview);
|
||||
ControlPlayableAsset.PreviewDirectors(driver, subDirectorsToPreview);
|
||||
|
||||
s_ProcessedDirectors.Remove(director);
|
||||
|
||||
particlesToPreview.Clear();
|
||||
activationToPreview.Clear();
|
||||
timeControlToPreview.Clear();
|
||||
subDirectorsToPreview.Clear();
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue