summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs69
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs.meta11
2 files changed, 80 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs
new file mode 100644
index 0000000..066e943
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs
@@ -0,0 +1,69 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Timeline;
+using UnityEngine.Playables;
+
+namespace UnityEditor.Timeline
+{
+ [CustomTimelineEditor(typeof(ControlPlayableAsset))]
+ class ControlPlayableAssetEditor : ClipEditor
+ {
+ static readonly Texture2D[] s_ParticleSystemIcon = {AssetPreview.GetMiniTypeThumbnail(typeof(ParticleSystem))};
+
+ public override ClipDrawOptions GetClipOptions(TimelineClip clip)
+ {
+ var asset = (ControlPlayableAsset)clip.asset;
+ var options = base.GetClipOptions(clip);
+ if (asset.updateParticle && TimelineEditor.inspectedDirector != null && asset.controllingParticles)
+ options.icons = s_ParticleSystemIcon;
+ return options;
+ }
+
+ public override void OnCreate(TimelineClip clip, TrackAsset track, TimelineClip clonedFrom)
+ {
+ var asset = (ControlPlayableAsset)clip.asset;
+ GameObject sourceObject = null;
+
+ // go by sourceObject first, then by prefab
+ if (TimelineEditor.inspectedDirector != null)
+ sourceObject = asset.sourceGameObject.Resolve(TimelineEditor.inspectedDirector);
+
+ if (sourceObject == null && asset.prefabGameObject != null)
+ sourceObject = asset.prefabGameObject;
+
+ if (sourceObject)
+ {
+ var directors = asset.GetComponent<PlayableDirector>(sourceObject);
+ var particleSystems = asset.GetComponent<ParticleSystem>(sourceObject);
+
+ // update the duration and loop values (used for UI purposes) here
+ // so they are tied to the latest gameObject bound
+ asset.UpdateDurationAndLoopFlag(directors, particleSystems);
+
+ clip.displayName = sourceObject.name;
+ }
+ }
+
+ public override void GetSubTimelines(TimelineClip clip, PlayableDirector director, List<PlayableDirector> subTimelines)
+ {
+ var asset = (ControlPlayableAsset)clip.asset;
+
+ // If there is a prefab, it will override the source GameObject
+ if (!asset.updateDirector || asset.prefabGameObject != null || director == null)
+ return;
+
+ var go = asset.sourceGameObject.Resolve(director);
+ if (go == null)
+ return;
+
+ foreach (var subTimeline in asset.GetComponent<PlayableDirector>(go))
+ {
+ if (subTimeline == director || subTimeline == TimelineEditor.masterDirector || subTimeline == TimelineEditor.inspectedDirector)
+ continue;
+
+ if (subTimeline.playableAsset is TimelineAsset)
+ subTimelines.Add(subTimeline);
+ }
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs.meta
new file mode 100644
index 0000000..ece3e1f
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/ControlTrack/ControlPlayableAssetEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b5489bb3cd68836439785588fffc67a4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: