diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-08-20 23:40:50 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-08-20 23:40:50 -0400 |
| commit | 3af4c218c0e70167db23a6303d2af30aff37d2fe (patch) | |
| tree | 927f29edcf54ab562f40f3d1c6cb69287c7f5980 /Library/PackageCache/com.unity.timeline@1.2.13/Runtime | |
| parent | b6daed0af784f4e9bc13329dd87c671b06ee1c65 (diff) | |
| download | Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.tar.gz Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.tar.bz2 Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.zip | |
Removed a bunch of stuff; Changes
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Runtime')
156 files changed, 0 insertions, 11029 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation.meta deleted file mode 100644 index ed3ac63..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d0cd29fb1ad218b48b814bc3e6d8ac0e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs deleted file mode 100644 index 61054f7..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs +++ /dev/null @@ -1,71 +0,0 @@ -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - class ActivationMixerPlayable : PlayableBehaviour - { - ActivationTrack.PostPlaybackState m_PostPlaybackState; - bool m_BoundGameObjectInitialStateIsActive; - - private GameObject m_BoundGameObject; - - - public static ScriptPlayable<ActivationMixerPlayable> Create(PlayableGraph graph, int inputCount) - { - return ScriptPlayable<ActivationMixerPlayable>.Create(graph, inputCount); - } - - public ActivationTrack.PostPlaybackState postPlaybackState - { - get { return m_PostPlaybackState; } - set { m_PostPlaybackState = value; } - } - - public override void OnPlayableDestroy(Playable playable) - { - if (m_BoundGameObject == null) - return; - - switch (m_PostPlaybackState) - { - case ActivationTrack.PostPlaybackState.Active: - m_BoundGameObject.SetActive(true); - break; - case ActivationTrack.PostPlaybackState.Inactive: - m_BoundGameObject.SetActive(false); - break; - case ActivationTrack.PostPlaybackState.Revert: - m_BoundGameObject.SetActive(m_BoundGameObjectInitialStateIsActive); - break; - case ActivationTrack.PostPlaybackState.LeaveAsIs: - default: - break; - } - } - - public override void ProcessFrame(Playable playable, FrameData info, object playerData) - { - if (m_BoundGameObject == null) - { - m_BoundGameObject = playerData as GameObject; - m_BoundGameObjectInitialStateIsActive = m_BoundGameObject != null && m_BoundGameObject.activeSelf; - } - - if (m_BoundGameObject == null) - return; - - int inputCount = playable.GetInputCount(); - bool hasInput = false; - for (int i = 0; i < inputCount; i++) - { - if (playable.GetInputWeight(i) > 0) - { - hasInput = true; - break; - } - } - - m_BoundGameObject.SetActive(hasInput); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs.meta deleted file mode 100644 index 7ce2073..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationMixerPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e165a99d845c10e4ea0f546e542e8684 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs deleted file mode 100644 index 7304741..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs +++ /dev/null @@ -1,29 +0,0 @@ -#if UNITY_EDITOR -using System.ComponentModel; -#endif -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable Asset class for Activation Tracks - /// </summary> -#if UNITY_EDITOR - [DisplayName("Activation Clip")] -#endif - class ActivationPlayableAsset : PlayableAsset, ITimelineClipAsset - { - /// <summary> - /// Returns a description of the features supported by activation clips - /// </summary> - public ClipCaps clipCaps { get { return ClipCaps.None; } } - - /// <summary> - /// Overrides PlayableAsset.CreatePlayable() to inject needed Playables for an activation asset - /// </summary> - public override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - return Playable.Create(graph); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs.meta deleted file mode 100644 index e22155a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationPlayableAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fde0d25a170598d46a0b9dc16b4527a5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs deleted file mode 100644 index 8e06ddb..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Track that can be used to control the active state of a GameObject. - /// </summary> - [Serializable] - [TrackClipType(typeof(ActivationPlayableAsset))] - [TrackBindingType(typeof(GameObject))] - [ExcludeFromPreset] - public class ActivationTrack : TrackAsset - { - [SerializeField] - PostPlaybackState m_PostPlaybackState = PostPlaybackState.LeaveAsIs; - ActivationMixerPlayable m_ActivationMixer; - - /// <summary> - /// Specify what state to leave the GameObject in after the Timeline has finished playing. - /// </summary> - public enum PostPlaybackState - { - /// <summary> - /// Set the GameObject to active. - /// </summary> - Active, - - /// <summary> - /// Set the GameObject to Inactive. - /// </summary> - Inactive, - - /// <summary> - /// Revert the GameObject to the state in was in before the Timeline was playing. - /// </summary> - Revert, - - /// <summary> - /// Leave the GameObject in the state it was when the Timeline was stopped. - /// </summary> - LeaveAsIs - } - - internal override bool CanCompileClips() - { - return !hasClips || base.CanCompileClips(); - } - - /// <summary> - /// Specifies what state to leave the GameObject in after the Timeline has finished playing. - /// </summary> - public PostPlaybackState postPlaybackState - { - get { return m_PostPlaybackState; } - set { m_PostPlaybackState = value; UpdateTrackMode(); } - } - - /// <inheritdoc/> - public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) - { - var mixer = ActivationMixerPlayable.Create(graph, inputCount); - m_ActivationMixer = mixer.GetBehaviour(); - - UpdateTrackMode(); - - return mixer; - } - - internal void UpdateTrackMode() - { - if (m_ActivationMixer != null) - m_ActivationMixer.postPlaybackState = m_PostPlaybackState; - } - - /// <inheritdoc/> - public override void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { - var gameObject = GetGameObjectBinding(director); - if (gameObject != null) - { - driver.AddFromName(gameObject, "m_IsActive"); - } - } - - /// <inheritdoc/> - protected override void OnCreateClip(TimelineClip clip) - { - clip.displayName = "Active"; - base.OnCreateClip(clip); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs.meta deleted file mode 100644 index 82ab218..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Activation/ActivationTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 21bf7f712d84d26478ebe6a299f21738 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation.meta deleted file mode 100644 index 7fa19e2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: de9eb5e2046ffc9448f07e495c436506 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs deleted file mode 100644 index ae190e3..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System.Collections.Generic; -using UnityEngine.Animations; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - // Does a post processing of the weights on an animation track to properly normalize - // the mixer weights so that blending does not bring default poses and subtracks, layers and - // layer graphs blend correctly - class AnimationOutputWeightProcessor : ITimelineEvaluateCallback - { - struct WeightInfo - { - public Playable mixer; - public Playable parentMixer; - public int port; - } - - AnimationPlayableOutput m_Output; - AnimationMotionXToDeltaPlayable m_MotionXPlayable; - readonly List<WeightInfo> m_Mixers = new List<WeightInfo>(); - - public AnimationOutputWeightProcessor(AnimationPlayableOutput output) - { - m_Output = output; - output.SetWeight(0); - FindMixers(); - } - - void FindMixers() - { - var playable = m_Output.GetSourcePlayable(); - var outputPort = m_Output.GetSourceOutputPort(); - - m_Mixers.Clear(); - // only write the final output in playmode. it should always be 1 in editor because we blend to the defaults - FindMixers(playable, outputPort, playable.GetInput(outputPort)); - } - - // Recursively accumulates mixers. - void FindMixers(Playable parent, int port, Playable node) - { - if (!node.IsValid()) - return; - - var type = node.GetPlayableType(); - if (type == typeof(AnimationMixerPlayable) || type == typeof(AnimationLayerMixerPlayable)) - { - // use post fix traversal so children come before parents - int subCount = node.GetInputCount(); - for (int j = 0; j < subCount; j++) - { - FindMixers(node, j, node.GetInput(j)); - } - - // if we encounter a layer mixer, we assume there is nesting occuring - // and we modulate the weight instead of overwriting it. - var weightInfo = new WeightInfo - { - parentMixer = parent, - mixer = node, - port = port, - }; - m_Mixers.Add(weightInfo); - } - else - { - var count = node.GetInputCount(); - for (var i = 0; i < count; i++) - { - FindMixers(parent, port, node.GetInput(i)); - } - } - } - - public void Evaluate() - { - float weight = 1; - m_Output.SetWeight(1); - for (int i = 0; i < m_Mixers.Count; i++) - { - var mixInfo = m_Mixers[i]; - weight = WeightUtility.NormalizeMixer(mixInfo.mixer); - mixInfo.parentMixer.SetInputWeight(mixInfo.port, weight); - } - - // only write the final weight in player/playmode. In editor, we are blending to the appropriate defaults - // the last mixer in the list is the final blend, since the list is composed post-order. - if (Application.isPlaying) - m_Output.SetWeight(weight); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs.meta deleted file mode 100644 index c487e39..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationOutputWeightProcessor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a429b38ee9d48c7408c8870baf406034 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs deleted file mode 100644 index 68355c0..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs +++ /dev/null @@ -1,326 +0,0 @@ -using System.Collections.Generic; -using UnityEngine.Animations; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A Playable Asset that represents a single AnimationClip clip. - /// </summary> - [System.Serializable, NotKeyable] - public partial class AnimationPlayableAsset : PlayableAsset, ITimelineClipAsset, IPropertyPreview - { - /// <summary> - /// Whether the source AnimationClip loops during playback. - /// </summary> - public enum LoopMode - { - /// <summary> - /// Use the loop time setting from the source AnimationClip. - /// </summary> - [Tooltip("Use the loop time setting from the source AnimationClip.")] - UseSourceAsset = 0, - - /// <summary> - /// The source AnimationClip loops during playback. - /// </summary> - [Tooltip("The source AnimationClip loops during playback.")] - On = 1, - - /// <summary> - /// The source AnimationClip does not loop during playback. - /// </summary> - [Tooltip("The source AnimationClip does not loop during playback.")] - Off = 2 - } - - - [SerializeField] private AnimationClip m_Clip; - [SerializeField] private Vector3 m_Position = Vector3.zero; - [SerializeField] private Vector3 m_EulerAngles = Vector3.zero; - [SerializeField] private bool m_UseTrackMatchFields = true; - [SerializeField] private MatchTargetFields m_MatchTargetFields = MatchTargetFieldConstants.All; - [SerializeField] private bool m_RemoveStartOffset = true; // set by animation track prior to compilation - [SerializeField] private bool m_ApplyFootIK = true; - [SerializeField] private LoopMode m_Loop = LoopMode.UseSourceAsset; - - -#if UNITY_EDITOR - private AnimationOffsetPlayable m_AnimationOffsetPlayable; -#endif - - /// <summary> - /// The translational offset of the clip - /// </summary> - public Vector3 position - { - get - { - return m_Position; - } - set - { - m_Position = value; -#if UNITY_EDITOR - if (m_AnimationOffsetPlayable.IsValid()) - m_AnimationOffsetPlayable.SetPosition(position); -#endif - } - } - - /// <summary> - /// The rotational offset of the clip, expressed as a Quaternion - /// </summary> - public Quaternion rotation - { - get - { - return Quaternion.Euler(m_EulerAngles); - } - - set - { - m_EulerAngles = value.eulerAngles; -#if UNITY_EDITOR - if (m_AnimationOffsetPlayable.IsValid()) - m_AnimationOffsetPlayable.SetRotation(value); -#endif - } - } - - /// <summary> - /// The rotational offset of the clip, expressed in Euler angles - /// </summary> - public Vector3 eulerAngles - { - get { return m_EulerAngles; } - set - { - m_EulerAngles = value; -#if UNITY_EDITOR - if (m_AnimationOffsetPlayable.IsValid()) - m_AnimationOffsetPlayable.SetRotation(rotation); -#endif - } - } - - /// <summary> - /// Specifies whether to use offset matching options as defined by the track. - /// </summary> - public bool useTrackMatchFields - { - get { return m_UseTrackMatchFields; } - set { m_UseTrackMatchFields = value; } - } - - /// <summary> - /// Specifies which fields should be matched when aligning offsets. - /// </summary> - public MatchTargetFields matchTargetFields - { - get { return m_MatchTargetFields; } - set { m_MatchTargetFields = value; } - } - - /// <summary> - /// Whether to make the animation clip play relative to its first keyframe. - /// </summary> - /// <remarks> - /// This option only applies to animation clips that animate Transform components. - /// </remarks> - public bool removeStartOffset - { - get { return m_RemoveStartOffset; } - set { m_RemoveStartOffset = value; } - } - - - /// <summary> - /// Enable to apply foot IK to the AnimationClip when the target is humanoid. - /// </summary> - public bool applyFootIK - { - get { return m_ApplyFootIK; } - set { m_ApplyFootIK = value; } - } - - /// <summary> - /// Whether the source AnimationClip loops during playback - /// </summary> - public LoopMode loop - { - get { return m_Loop; } - set { m_Loop = value; } - } - - - internal bool hasRootTransforms - { - get { return m_Clip != null && HasRootTransforms(m_Clip); } - } - - // used for legacy 'scene' mode. - internal AppliedOffsetMode appliedOffsetMode { get; set; } - - - /// <summary> - /// The source animation clip - /// </summary> - public AnimationClip clip - { - get { return m_Clip; } - set - { - if (value != null) - name = "AnimationPlayableAsset of " + value.name; - m_Clip = value; - } - } - - /// <summary> - /// Returns the duration required to play the animation clip exactly once - /// </summary> - public override double duration - { - get - { - double length = TimeUtility.GetAnimationClipLength(clip); - if (length < float.Epsilon) - return base.duration; - return length; - } - } - - /// <summary> - /// Returns a description of the PlayableOutputs that may be created for this asset. - /// </summary> - public override IEnumerable<PlayableBinding> outputs - { - get { yield return AnimationPlayableBinding.Create(name, this); } - } - - /// <summary> - /// Creates the root of a Playable subgraph to play the animation clip. - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable</param> - /// <param name="go">The gameobject that triggered the graph build</param> - /// <returns>The root playable of the subgraph</returns> - public override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - Playable root = CreatePlayable(graph, m_Clip, position, eulerAngles, removeStartOffset, appliedOffsetMode, applyFootIK, m_Loop); - -#if UNITY_EDITOR - m_AnimationOffsetPlayable = AnimationOffsetPlayable.Null; - if (root.IsValid() && root.IsPlayableOfType<AnimationOffsetPlayable>()) - { - m_AnimationOffsetPlayable = (AnimationOffsetPlayable)root; - } - - LiveLink(); -#endif - - return root; - } - - internal static Playable CreatePlayable(PlayableGraph graph, AnimationClip clip, Vector3 positionOffset, Vector3 eulerOffset, bool removeStartOffset, AppliedOffsetMode mode, bool applyFootIK, LoopMode loop) - { - if (clip == null || clip.legacy) - return Playable.Null; - - - var clipPlayable = AnimationClipPlayable.Create(graph, clip); - clipPlayable.SetRemoveStartOffset(removeStartOffset); - clipPlayable.SetApplyFootIK(applyFootIK); - clipPlayable.SetOverrideLoopTime(loop != LoopMode.UseSourceAsset); - clipPlayable.SetLoopTime(loop == LoopMode.On); - - Playable root = clipPlayable; - - if (ShouldApplyScaleRemove(mode)) - { - var removeScale = AnimationRemoveScalePlayable.Create(graph, 1); - graph.Connect(root, 0, removeScale, 0); - removeScale.SetInputWeight(0, 1.0f); - root = removeScale; - } - - if (ShouldApplyOffset(mode, clip)) - { - var offsetPlayable = AnimationOffsetPlayable.Create(graph, positionOffset, Quaternion.Euler(eulerOffset), 1); - graph.Connect(root, 0, offsetPlayable, 0); - offsetPlayable.SetInputWeight(0, 1.0F); - root = offsetPlayable; - } - - return root; - } - - private static bool ShouldApplyOffset(AppliedOffsetMode mode, AnimationClip clip) - { - if (mode == AppliedOffsetMode.NoRootTransform || mode == AppliedOffsetMode.SceneOffsetLegacy) - return false; - - return HasRootTransforms(clip); - } - - private static bool ShouldApplyScaleRemove(AppliedOffsetMode mode) - { - return mode == AppliedOffsetMode.SceneOffsetLegacyEditor || mode == AppliedOffsetMode.SceneOffsetLegacy || mode == AppliedOffsetMode.TransformOffsetLegacy; - } - -#if UNITY_EDITOR - public void LiveLink() - { - if (m_AnimationOffsetPlayable.IsValid()) - { - m_AnimationOffsetPlayable.SetPosition(position); - m_AnimationOffsetPlayable.SetRotation(rotation); - } - } - -#endif - - /// <summary> - /// Returns the capabilities of TimelineClips that contain a AnimationPlayableAsset - /// </summary> - public ClipCaps clipCaps - { - get - { - var caps = ClipCaps.All; - if (m_Clip == null || (m_Loop == LoopMode.Off) || (m_Loop == LoopMode.UseSourceAsset && !m_Clip.isLooping)) - caps &= ~ClipCaps.Looping; - - // empty clips don't support clip in. This allows trim operations to simply become - // move operations - if (m_Clip == null || m_Clip.empty) - caps &= ~ClipCaps.ClipIn; - - return caps; - } - } - - /// <summary> - /// Resets the offsets to default values - /// </summary> - public void ResetOffsets() - { - position = Vector3.zero; - eulerAngles = Vector3.zero; - } - - /// <inheritdoc/> - public void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { - driver.AddFromClip(m_Clip); - } - - internal static bool HasRootTransforms(AnimationClip clip) - { - if (clip == null || clip.empty) - return false; - - return clip.hasRootMotion || clip.hasGenericRootTransform || clip.hasMotionCurves || clip.hasRootCurves; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs.meta deleted file mode 100644 index 698bcd5..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPlayableAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 030f85c3f73729f4f976f66ffb23b875 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs deleted file mode 100644 index 560f900..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections.Generic; -using UnityEngine.Animations; -using UnityEngine.Experimental.Animations; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - class AnimationPreviewUpdateCallback : ITimelineEvaluateCallback - { - AnimationPlayableOutput m_Output; - PlayableGraph m_Graph; - List<IAnimationWindowPreview> m_PreviewComponents; - - public AnimationPreviewUpdateCallback(AnimationPlayableOutput output) - { - m_Output = output; - - Playable playable = m_Output.GetSourcePlayable(); - if (playable.IsValid()) - { - m_Graph = playable.GetGraph(); - } - } - - public void Evaluate() - { - if (!m_Graph.IsValid()) - return; - - if (m_PreviewComponents == null) - FetchPreviewComponents(); - - foreach (var component in m_PreviewComponents) - { - if (component != null) - { - component.UpdatePreviewGraph(m_Graph); - } - } - } - - private void FetchPreviewComponents() - { - m_PreviewComponents = new List<IAnimationWindowPreview>(); - - var animator = m_Output.GetTarget(); - if (animator == null) - return; - - var gameObject = animator.gameObject; - m_PreviewComponents.AddRange(gameObject.GetComponents<IAnimationWindowPreview>()); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs.meta deleted file mode 100644 index 9d6167b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationPreviewUpdateCallback.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 755e3e942f7784d458bddba421c0bb72 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs deleted file mode 100644 index 21e811d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs +++ /dev/null @@ -1,971 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Animations; -using UnityEngine.Experimental.Animations; -using UnityEngine.Playables; -using UnityEngine.Serialization; - -#if UNITY_EDITOR -using UnityEditor; -#endif - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Flags specifying which offset fields to match - /// </summary> - [Flags] - public enum MatchTargetFields - { - /// <summary> - /// Translation X value - /// </summary> - PositionX = 1 << 0, - /// <summary> - /// Translation Y value - /// </summary> - PositionY = 1 << 1, - /// <summary> - /// Translation Z value - /// </summary> - PositionZ = 1 << 2, - /// <summary> - /// Rotation Euler Angle X value - /// </summary> - RotationX = 1 << 3, - /// <summary> - /// Rotation Euler Angle Y value - /// </summary> - RotationY = 1 << 4, - /// <summary> - /// Rotation Euler Angle Z value - /// </summary> - RotationZ = 1 << 5 - } - - /// <summary> - /// Describes what is used to set the starting position and orientation of each Animation Track. - /// </summary> - /// <remarks> - /// By default, each Animation Track uses ApplyTransformOffsets to start from a set position and orientation. - /// To offset each Animation Track based on the current position and orientation in the scene, use ApplySceneOffsets. - /// </remarks> - public enum TrackOffset - { - /// <summary> - /// Use this setting to offset each Animation Track based on a set position and orientation. - /// </summary> - ApplyTransformOffsets, - /// <summary> - /// Use this setting to offset each Animation Track based on the current position and orientation in the scene. - /// </summary> - ApplySceneOffsets, - /// <summary> - /// Use this setting to offset root transforms based on the state of the animator. - /// </summary> - /// <remarks> - /// Only use this setting to support legacy Animation Tracks. This mode may be deprecated in a future release. - /// - /// In Auto mode, when the animator bound to the animation track contains an AnimatorController, it offsets all animations similar to ApplySceneOffsets. - /// If no controller is assigned, then all offsets are set to start from a fixed position and orientation, similar to ApplyTransformOffsets. - /// In Auto mode, in most cases, root transforms are not affected by local scale or Animator.humanScale, unless the animator has an AnimatorController and Animator.applyRootMotion is set to true. - /// </remarks> - Auto - } - - - // offset mode - enum AppliedOffsetMode - { - NoRootTransform, - TransformOffset, - SceneOffset, - TransformOffsetLegacy, - SceneOffsetLegacy, - SceneOffsetEditor, // scene offset mode in editor - SceneOffsetLegacyEditor, - } - - - // separate from the enum to hide them from UI elements - static class MatchTargetFieldConstants - { - public static MatchTargetFields All = MatchTargetFields.PositionX | MatchTargetFields.PositionY | - MatchTargetFields.PositionZ | MatchTargetFields.RotationX | - MatchTargetFields.RotationY | MatchTargetFields.RotationZ; - - public static MatchTargetFields None = 0; - - public static MatchTargetFields Position = MatchTargetFields.PositionX | MatchTargetFields.PositionY | - MatchTargetFields.PositionZ; - - public static MatchTargetFields Rotation = MatchTargetFields.RotationX | MatchTargetFields.RotationY | - MatchTargetFields.RotationZ; - - public static bool HasAny(this MatchTargetFields me, MatchTargetFields fields) - { - return (me & fields) != None; - } - - public static MatchTargetFields Toggle(this MatchTargetFields me, MatchTargetFields flag) - { - return me ^ flag; - } - } - - - /// <summary> - /// A Timeline track used for playing back animations on an Animator. - /// </summary> - [Serializable] - [TrackClipType(typeof(AnimationPlayableAsset), false)] - [TrackBindingType(typeof(Animator))] - [ExcludeFromPreset] - public partial class AnimationTrack : TrackAsset, ILayerable - { - const string k_DefaultInfiniteClipName = "Recorded"; - const string k_DefaultRecordableClipName = "Recorded"; - - [SerializeField, FormerlySerializedAs("m_OpenClipPreExtrapolation")] - TimelineClip.ClipExtrapolation m_InfiniteClipPreExtrapolation = TimelineClip.ClipExtrapolation.None; - - [SerializeField, FormerlySerializedAs("m_OpenClipPostExtrapolation")] - TimelineClip.ClipExtrapolation m_InfiniteClipPostExtrapolation = TimelineClip.ClipExtrapolation.None; - - [SerializeField, FormerlySerializedAs("m_OpenClipOffsetPosition")] - Vector3 m_InfiniteClipOffsetPosition = Vector3.zero; - - [SerializeField, FormerlySerializedAs("m_OpenClipOffsetEulerAngles")] - Vector3 m_InfiniteClipOffsetEulerAngles = Vector3.zero; - - [SerializeField, FormerlySerializedAs("m_OpenClipTimeOffset")] - double m_InfiniteClipTimeOffset; - - [SerializeField, FormerlySerializedAs("m_OpenClipRemoveOffset")] - bool m_InfiniteClipRemoveOffset; // cached value for remove offset - - [SerializeField] - bool m_InfiniteClipApplyFootIK = true; - - [SerializeField, HideInInspector] - AnimationPlayableAsset.LoopMode mInfiniteClipLoop = AnimationPlayableAsset.LoopMode.UseSourceAsset; - - [SerializeField] - MatchTargetFields m_MatchTargetFields = MatchTargetFieldConstants.All; - [SerializeField] - Vector3 m_Position = Vector3.zero; - [SerializeField] - Vector3 m_EulerAngles = Vector3.zero; - - - [SerializeField] AvatarMask m_AvatarMask; - [SerializeField] bool m_ApplyAvatarMask = true; - - [SerializeField] TrackOffset m_TrackOffset = TrackOffset.ApplyTransformOffsets; - - [SerializeField, HideInInspector] AnimationClip m_InfiniteClip; - - -#if UNITY_EDITOR - private AnimationClip m_DefaultPoseClip; - private AnimationClip m_CachedPropertiesClip; - - AnimationOffsetPlayable m_ClipOffset; - - private Vector3 m_SceneOffsetPosition = Vector3.zero; - private Vector3 m_SceneOffsetRotation = Vector3.zero; - - private bool m_HasPreviewComponents = false; -#endif - - /// <summary> - /// The translation offset of the entire track. - /// </summary> - public Vector3 position - { - get { return m_Position; } - set { m_Position = value; } - } - - /// <summary> - /// The rotation offset of the entire track, expressed as a quaternion. - /// </summary> - public Quaternion rotation - { - get { return Quaternion.Euler(m_EulerAngles); } - set { m_EulerAngles = value.eulerAngles; } - } - - /// <summary> - /// The euler angle representation of the rotation offset of the entire track. - /// </summary> - public Vector3 eulerAngles - { - get { return m_EulerAngles; } - set { m_EulerAngles = value; } - } - - /// <summary> - /// Specifies whether to apply track offsets to all clips on the track. - /// </summary> - /// <remarks> - /// This can be used to offset all clips on a track, in addition to the clips individual offsets. - /// </remarks> - [Obsolete("applyOffset is deprecated. Use trackOffset instead", true)] - public bool applyOffsets - { - get { return false; } - set {} - } - - /// <summary> - /// Specifies what is used to set the starting position and orientation of an Animation Track. - /// </summary> - /// <remarks> - /// Track Offset is only applied when the Animation Track contains animation that modifies the root Transform. - /// </remarks> - public TrackOffset trackOffset - { - get { return m_TrackOffset; } - set { m_TrackOffset = value; } - } - - /// <summary> - /// Specifies which fields to match when aligning offsets of clips. - /// </summary> - public MatchTargetFields matchTargetFields - { - get { return m_MatchTargetFields; } - set { m_MatchTargetFields = value & MatchTargetFieldConstants.All; } - } - - /// <summary> - /// An AnimationClip storing the data for an infinite track. - /// </summary> - /// <remarks> - /// The value of this property is null when the AnimationTrack is in Clip Mode. - /// </remarks> - public AnimationClip infiniteClip - { - get { return m_InfiniteClip; } - internal set { m_InfiniteClip = value; } - } - - // saved value for converting to/from infinite mode - internal bool infiniteClipRemoveOffset - { - get { return m_InfiniteClipRemoveOffset; } - set { m_InfiniteClipRemoveOffset = value; } - } - - /// <summary> - /// Specifies the AvatarMask to be applied to all clips on the track. - /// </summary> - /// <remarks> - /// Applying an AvatarMask to an animation track will allow discarding portions of the animation being applied on the track. - /// </remarks> - public AvatarMask avatarMask - { - get { return m_AvatarMask; } - set { m_AvatarMask = value; } - } - - /// <summary> - /// Specifies whether to apply the AvatarMask to the track. - /// </summary> - public bool applyAvatarMask - { - get { return m_ApplyAvatarMask; } - set { m_ApplyAvatarMask = value; } - } - - // is this track compilable - - internal override bool CanCompileClips() - { - return !muted && (m_Clips.Count > 0 || (m_InfiniteClip != null && !m_InfiniteClip.empty)); - } - - /// <inheritdoc/> - public override IEnumerable<PlayableBinding> outputs - { - get { yield return AnimationPlayableBinding.Create(name, this); } - } - - - /// <summary> - /// Specifies whether the Animation Track has clips, or is in infinite mode. - /// </summary> - public bool inClipMode - { - get { return clips != null && clips.Length != 0; } - } - - /// <summary> - /// The translation offset of a track in infinite mode. - /// </summary> - public Vector3 infiniteClipOffsetPosition - { - get { return m_InfiniteClipOffsetPosition; } - set { m_InfiniteClipOffsetPosition = value; } - } - - /// <summary> - /// The rotation offset of a track in infinite mode. - /// </summary> - public Quaternion infiniteClipOffsetRotation - { - get { return Quaternion.Euler(m_InfiniteClipOffsetEulerAngles); } - set { m_InfiniteClipOffsetEulerAngles = value.eulerAngles; } - } - - /// <summary> - /// The euler angle representation of the rotation offset of the track when in infinite mode. - /// </summary> - public Vector3 infiniteClipOffsetEulerAngles - { - get { return m_InfiniteClipOffsetEulerAngles; } - set { m_InfiniteClipOffsetEulerAngles = value; } - } - - internal bool infiniteClipApplyFootIK - { - get { return m_InfiniteClipApplyFootIK; } - set { m_InfiniteClipApplyFootIK = value; } - } - - internal double infiniteClipTimeOffset - { - get { return m_InfiniteClipTimeOffset; } - set { m_InfiniteClipTimeOffset = value; } - } - - /// <summary> - /// The saved state of pre-extrapolation for clips converted to infinite mode. - /// </summary> - public TimelineClip.ClipExtrapolation infiniteClipPreExtrapolation - { - get { return m_InfiniteClipPreExtrapolation; } - set { m_InfiniteClipPreExtrapolation = value; } - } - - /// <summary> - /// The saved state of post-extrapolation for clips when converted to infinite mode. - /// </summary> - public TimelineClip.ClipExtrapolation infiniteClipPostExtrapolation - { - get { return m_InfiniteClipPostExtrapolation; } - set { m_InfiniteClipPostExtrapolation = value; } - } - - /// <summary> - /// The saved state of animation clip loop state when converted to infinite mode - /// </summary> - internal AnimationPlayableAsset.LoopMode infiniteClipLoop - { - get { return mInfiniteClipLoop; } - set { mInfiniteClipLoop = value; } - } - - [ContextMenu("Reset Offsets")] - void ResetOffsets() - { - m_Position = Vector3.zero; - m_EulerAngles = Vector3.zero; - UpdateClipOffsets(); - } - - /// <summary> - /// Creates a TimelineClip on this track that uses an AnimationClip. - /// </summary> - /// <param name="clip">Source animation clip of the resulting TimelineClip.</param> - /// <returns>A new TimelineClip which has an AnimationPlayableAsset asset attached.</returns> - public TimelineClip CreateClip(AnimationClip clip) - { - if (clip == null) - return null; - - var newClip = CreateClip<AnimationPlayableAsset>(); - AssignAnimationClip(newClip, clip); - return newClip; - } - - /// <summary> - /// Creates an AnimationClip that stores the data for an infinite track. - /// </summary> - /// <remarks> - /// If an infiniteClip already exists, this method produces no result, even if you provide a different value - /// for infiniteClipName. - /// </remarks> - /// <remarks> - /// This method can't create an infinite clip for an AnimationTrack that contains one or more Timeline clips. - /// Use AnimationTrack.inClipMode to determine whether it is possible to create an infinite clip on an AnimationTrack. - /// </remarks> - /// <remarks> - /// When used from the editor, this method attempts to save the created infinite clip to the TimelineAsset. - /// The TimelineAsset must already exist in the AssetDatabase to save the infinite clip. If the TimelineAsset - /// does not exist, the infinite clip is still created but it is not saved. - /// </remarks> - /// <param name="infiniteClipName"> - /// The name of the AnimationClip to create. - /// This method does not ensure unique names. If you want a unique clip name, you must provide one. - /// See ObjectNames.GetUniqueName for information on a method that creates unique names. - /// </param> - public void CreateInfiniteClip(string infiniteClipName) - { - if (inClipMode) - { - Debug.LogWarning("CreateInfiniteClip cannot create an infinite clip for an AnimationTrack that contains one or more Timeline Clips."); - return; - } - - if (m_InfiniteClip != null) - return; - - m_InfiniteClip = TimelineCreateUtilities.CreateAnimationClipForTrack(string.IsNullOrEmpty(infiniteClipName) ? k_DefaultInfiniteClipName : infiniteClipName, this, false); - } - - /// <summary> - /// Creates a TimelineClip, AnimationPlayableAsset and an AnimationClip. Use this clip to record in a timeline. - /// </summary> - /// <remarks> - /// When used from the editor, this method attempts to save the created recordable clip to the TimelineAsset. - /// The TimelineAsset must already exist in the AssetDatabase to save the recordable clip. If the TimelineAsset - /// does not exist, the recordable clip is still created but it is not saved. - /// </remarks> - /// <param name="animClipName"> - /// The name of the AnimationClip to create. - /// This method does not ensure unique names. If you want a unique clip name, you must provide one. - /// See ObjectNames.GetUniqueName for information on a method that creates unique names. - /// </param> - /// <returns> - /// Returns a new TimelineClip with an AnimationPlayableAsset asset attached. - /// </returns> - public TimelineClip CreateRecordableClip(string animClipName) - { - var clip = TimelineCreateUtilities.CreateAnimationClipForTrack(string.IsNullOrEmpty(animClipName) ? k_DefaultRecordableClipName : animClipName, this, false); - - var timelineClip = CreateClip(clip); - timelineClip.displayName = animClipName; - timelineClip.recordable = true; - timelineClip.start = 0; - timelineClip.duration = 1; - - var apa = timelineClip.asset as AnimationPlayableAsset; - if (apa != null) - apa.removeStartOffset = false; - - return timelineClip; - } - -#if UNITY_EDITOR - internal Vector3 sceneOffsetPosition - { - get { return m_SceneOffsetPosition; } - set { m_SceneOffsetPosition = value; } - } - - internal Vector3 sceneOffsetRotation - { - get { return m_SceneOffsetRotation; } - set { m_SceneOffsetRotation = value; } - } - - internal bool hasPreviewComponents - { - get - { - if (m_HasPreviewComponents) - return true; - - var parentTrack = parent as AnimationTrack; - if (parentTrack != null) - { - return parentTrack.hasPreviewComponents; - } - - return false; - } - } -#endif - - /// <summary> - /// Used to initialize default values on a newly created clip - /// </summary> - /// <param name="clip">The clip added to the track</param> - protected override void OnCreateClip(TimelineClip clip) - { - var extrapolation = TimelineClip.ClipExtrapolation.None; - if (!isSubTrack) - extrapolation = TimelineClip.ClipExtrapolation.Hold; - clip.preExtrapolationMode = extrapolation; - clip.postExtrapolationMode = extrapolation; - } - - protected internal override int CalculateItemsHash() - { - return GetAnimationClipHash(m_InfiniteClip).CombineHash(base.CalculateItemsHash()); - } - - internal void UpdateClipOffsets() - { -#if UNITY_EDITOR - if (m_ClipOffset.IsValid()) - { - m_ClipOffset.SetPosition(position); - m_ClipOffset.SetRotation(rotation); - } -#endif - } - - Playable CompileTrackPlayable(PlayableGraph graph, TrackAsset track, GameObject go, IntervalTree<RuntimeElement> tree, AppliedOffsetMode mode) - { - var mixer = AnimationMixerPlayable.Create(graph, track.clips.Length); - for (int i = 0; i < track.clips.Length; i++) - { - var c = track.clips[i]; - var asset = c.asset as PlayableAsset; - if (asset == null) - continue; - - var animationAsset = asset as AnimationPlayableAsset; - if (animationAsset != null) - animationAsset.appliedOffsetMode = mode; - - var source = asset.CreatePlayable(graph, go); - if (source.IsValid()) - { - var clip = new RuntimeClip(c, source, mixer); - tree.Add(clip); - graph.Connect(source, 0, mixer, i); - mixer.SetInputWeight(i, 0.0f); - } - } - - return ApplyTrackOffset(graph, mixer, go, mode); - } - - Playable ILayerable.CreateLayerMixer(PlayableGraph graph, GameObject go, int inputCount) - { - return Playable.Null; - } - - internal override Playable OnCreateClipPlayableGraph(PlayableGraph graph, GameObject go, IntervalTree<RuntimeElement> tree) - { - if (isSubTrack) - throw new InvalidOperationException("Nested animation tracks should never be asked to create a graph directly"); - - List<AnimationTrack> flattenTracks = new List<AnimationTrack>(); - if (CanCompileClips()) - flattenTracks.Add(this); - - - bool animatesRootTransform = AnimatesRootTransform(); - foreach (var subTrack in GetChildTracks()) - { - var child = subTrack as AnimationTrack; - if (child != null && child.CanCompileClips()) - { - animatesRootTransform |= child.AnimatesRootTransform(); - flattenTracks.Add(child); - } - } - - // figure out which mode to apply - AppliedOffsetMode mode = GetOffsetMode(go, animatesRootTransform); - var layerMixer = CreateGroupMixer(graph, go, flattenTracks.Count); - for (int c = 0; c < flattenTracks.Count; c++) - { - var compiledTrackPlayable = flattenTracks[c].inClipMode ? - CompileTrackPlayable(graph, flattenTracks[c], go, tree, mode) : - flattenTracks[c].CreateInfiniteTrackPlayable(graph, go, tree, mode); - graph.Connect(compiledTrackPlayable, 0, layerMixer, c); - layerMixer.SetInputWeight(c, flattenTracks[c].inClipMode ? 0 : 1); - if (flattenTracks[c].applyAvatarMask && flattenTracks[c].avatarMask != null) - { - layerMixer.SetLayerMaskFromAvatarMask((uint)c, flattenTracks[c].avatarMask); - } - } - - bool requiresMotionXPlayable = RequiresMotionXPlayable(mode, go); - - Playable mixer = layerMixer; - mixer = CreateDefaultBlend(graph, go, mixer, requiresMotionXPlayable); - - // motionX playable not required in scene offset mode, or root transform mode - if (requiresMotionXPlayable) - { - // If we are animating a root transform, add the motionX to delta playable as the root node - var motionXToDelta = AnimationMotionXToDeltaPlayable.Create(graph); - graph.Connect(mixer, 0, motionXToDelta, 0); - motionXToDelta.SetInputWeight(0, 1.0f); - motionXToDelta.SetAbsoluteMotion(UsesAbsoluteMotion(mode)); - mixer = (Playable)motionXToDelta; - } - - -#if UNITY_EDITOR - if (!Application.isPlaying) - { - var animator = GetBinding(go != null ? go.GetComponent<PlayableDirector>() : null); - if (animator != null) - { - GameObject targetGO = animator.gameObject; - IAnimationWindowPreview[] previewComponents = targetGO.GetComponents<IAnimationWindowPreview>(); - - m_HasPreviewComponents = previewComponents.Length > 0; - if (m_HasPreviewComponents) - { - foreach (var component in previewComponents) - { - mixer = component.BuildPreviewGraph(graph, mixer); - } - } - } - } -#endif - - return mixer; - } - - // Creates a layer mixer containing default blends - // the base layer is a default clip of all driven properties - // the next layer is optionally the desired default pose (in the case of humanoid, the tpose - private Playable CreateDefaultBlend(PlayableGraph graph, GameObject go, Playable mixer, bool requireOffset) - { -#if UNITY_EDITOR - if (Application.isPlaying) - return mixer; - - int inputs = 1 + ((m_CachedPropertiesClip != null) ? 1 : 0) + ((m_DefaultPoseClip != null) ? 1 : 0); - if (inputs == 1) - return mixer; - - var defaultPoseMixer = AnimationLayerMixerPlayable.Create(graph, inputs); - - int mixerInput = 0; - if (m_CachedPropertiesClip) - { - var cachedPropertiesClip = AnimationClipPlayable.Create(graph, m_CachedPropertiesClip); - cachedPropertiesClip.SetApplyFootIK(false); - var defaults = (Playable) cachedPropertiesClip; - if (requireOffset) - defaults = AttachOffsetPlayable(graph, defaults, m_SceneOffsetPosition, Quaternion.Euler(m_SceneOffsetRotation)); - graph.Connect(defaults, 0, defaultPoseMixer, mixerInput); - defaultPoseMixer.SetInputWeight(mixerInput, 1.0f); - mixerInput++; - } - - if (m_DefaultPoseClip) - { - var defaultPose = AnimationClipPlayable.Create(graph, m_DefaultPoseClip); - defaultPose.SetApplyFootIK(false); - var blendDefault = (Playable) defaultPose; - if (requireOffset) - blendDefault = AttachOffsetPlayable(graph, blendDefault, m_SceneOffsetPosition, Quaternion.Euler(m_SceneOffsetRotation)); - - graph.Connect(blendDefault, 0, defaultPoseMixer, mixerInput); - defaultPoseMixer.SetInputWeight(mixerInput, 1.0f); - mixerInput++; - } - - - graph.Connect(mixer, 0, defaultPoseMixer, mixerInput); - defaultPoseMixer.SetInputWeight(mixerInput, 1.0f); - - return defaultPoseMixer; -#else - return mixer; -#endif - } - - private Playable AttachOffsetPlayable(PlayableGraph graph, Playable playable, Vector3 pos, Quaternion rot) - { - var offsetPlayable = AnimationOffsetPlayable.Create(graph, pos, rot, 1); - offsetPlayable.SetInputWeight(0, 1.0f); - graph.Connect(playable, 0, offsetPlayable, 0); - return offsetPlayable; - } - -#if UNITY_EDITOR - private static string k_DefaultHumanoidClipPath = "Packages/com.unity.timeline/Editor/StyleSheets/res/HumanoidDefault.anim"; - private static AnimationClip s_DefaultHumanoidClip = null; - - AnimationClip GetDefaultHumanoidClip() - { - if (s_DefaultHumanoidClip == null) - { - s_DefaultHumanoidClip = EditorGUIUtility.LoadRequired(k_DefaultHumanoidClipPath) as AnimationClip; - if (s_DefaultHumanoidClip == null) - Debug.LogError("Could not load default humanoid animation clip for Timeline"); - } - - return s_DefaultHumanoidClip; - } - -#endif - - bool RequiresMotionXPlayable(AppliedOffsetMode mode, GameObject gameObject) - { - if (mode == AppliedOffsetMode.NoRootTransform) - return false; - if (mode == AppliedOffsetMode.SceneOffsetLegacy) - { - var animator = GetBinding(gameObject != null ? gameObject.GetComponent<PlayableDirector>() : null); - return animator != null && animator.hasRootMotion; - } - return true; - } - - static bool UsesAbsoluteMotion(AppliedOffsetMode mode) - { -#if UNITY_EDITOR - // in editor, previewing is always done in absolute motion - if (!Application.isPlaying) - return true; -#endif - return mode != AppliedOffsetMode.SceneOffset && - mode != AppliedOffsetMode.SceneOffsetLegacy; - } - - bool HasController(GameObject gameObject) - { - var animator = GetBinding(gameObject != null ? gameObject.GetComponent<PlayableDirector>() : null); - - return animator != null && animator.runtimeAnimatorController != null; - } - - internal Animator GetBinding(PlayableDirector director) - { - if (director == null) - return null; - - UnityEngine.Object key = this; - if (isSubTrack) - key = parent; - - UnityEngine.Object binding = null; - if (director != null) - binding = director.GetGenericBinding(key); - - Animator animator = null; - if (binding != null) // the binding can be an animator or game object - { - animator = binding as Animator; - var gameObject = binding as GameObject; - if (animator == null && gameObject != null) - animator = gameObject.GetComponent<Animator>(); - } - - return animator; - } - - static AnimationLayerMixerPlayable CreateGroupMixer(PlayableGraph graph, GameObject go, int inputCount) - { - return AnimationLayerMixerPlayable.Create(graph, inputCount); - } - - Playable CreateInfiniteTrackPlayable(PlayableGraph graph, GameObject go, IntervalTree<RuntimeElement> tree, AppliedOffsetMode mode) - { - if (m_InfiniteClip == null) - return Playable.Null; - - var mixer = AnimationMixerPlayable.Create(graph, 1); - - // In infinite mode, we always force the loop mode of the clip off because the clip keys are offset in infinite mode - // which causes loop to behave different. - // The inline curve editor never shows loops in infinite mode. - var playable = AnimationPlayableAsset.CreatePlayable(graph, m_InfiniteClip, m_InfiniteClipOffsetPosition, m_InfiniteClipOffsetEulerAngles, false, mode, infiniteClipApplyFootIK, AnimationPlayableAsset.LoopMode.Off); - if (playable.IsValid()) - { - tree.Add(new InfiniteRuntimeClip(playable)); - graph.Connect(playable, 0, mixer, 0); - mixer.SetInputWeight(0, 1.0f); - } - - return ApplyTrackOffset(graph, mixer, go, mode); - } - - Playable ApplyTrackOffset(PlayableGraph graph, Playable root, GameObject go, AppliedOffsetMode mode) - { -#if UNITY_EDITOR - m_ClipOffset = AnimationOffsetPlayable.Null; -#endif - - // offsets don't apply in scene offset, or if there is no root transform (globally or on this track) - if (mode == AppliedOffsetMode.SceneOffsetLegacy || - mode == AppliedOffsetMode.SceneOffset || - mode == AppliedOffsetMode.NoRootTransform || - !AnimatesRootTransform() - ) - return root; - - - var pos = position; - var rot = rotation; - -#if UNITY_EDITOR - // in the editor use the preview position to playback from if available - if (mode == AppliedOffsetMode.SceneOffsetEditor) - { - pos = m_SceneOffsetPosition; - rot = Quaternion.Euler(m_SceneOffsetRotation); - } -#endif - - var offsetPlayable = AnimationOffsetPlayable.Create(graph, pos, rot, 1); -#if UNITY_EDITOR - m_ClipOffset = offsetPlayable; -#endif - graph.Connect(root, 0, offsetPlayable, 0); - offsetPlayable.SetInputWeight(0, 1); - - return offsetPlayable; - } - - // the evaluation time is large so that the properties always get evaluated - internal override void GetEvaluationTime(out double outStart, out double outDuration) - { - if (inClipMode) - { - base.GetEvaluationTime(out outStart, out outDuration); - } - else - { - outStart = 0; - outDuration = TimelineClip.kMaxTimeValue; - } - } - - internal override void GetSequenceTime(out double outStart, out double outDuration) - { - if (inClipMode) - { - base.GetSequenceTime(out outStart, out outDuration); - } - else - { - outStart = 0; - outDuration = Math.Max(GetNotificationDuration(), TimeUtility.GetAnimationClipLength(m_InfiniteClip)); - } - } - - void AssignAnimationClip(TimelineClip clip, AnimationClip animClip) - { - if (clip == null || animClip == null) - return; - - if (animClip.legacy) - throw new InvalidOperationException("Legacy Animation Clips are not supported"); - - AnimationPlayableAsset asset = clip.asset as AnimationPlayableAsset; - if (asset != null) - { - asset.clip = animClip; - asset.name = animClip.name; - var duration = asset.duration; - if (!double.IsInfinity(duration) && duration >= TimelineClip.kMinDuration && duration < TimelineClip.kMaxTimeValue) - clip.duration = duration; - } - clip.displayName = animClip.name; - } - - /// <summary> - /// Called by the Timeline Editor to gather properties requiring preview. - /// </summary> - /// <param name="director">The PlayableDirector invoking the preview</param> - /// <param name="driver">PropertyCollector used to gather previewable properties</param> - public override void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { -#if UNITY_EDITOR - m_SceneOffsetPosition = Vector3.zero; - m_SceneOffsetRotation = Vector3.zero; - - var animator = GetBinding(director); - if (animator == null) - return; - - var animClips = new List<AnimationClip>(this.clips.Length + 2); - GetAnimationClips(animClips); - - var hasHumanMotion = animClips.Exists(clip => clip.humanMotion); - - m_SceneOffsetPosition = animator.transform.localPosition; - m_SceneOffsetRotation = animator.transform.localEulerAngles; - - // Create default pose clip from collected properties - if (hasHumanMotion) - animClips.Add(GetDefaultHumanoidClip()); - - var bindings = AnimationPreviewUtilities.GetBindings(animator.gameObject, animClips); - - m_CachedPropertiesClip = AnimationPreviewUtilities.CreateDefaultClip(animator.gameObject, bindings); - AnimationPreviewUtilities.PreviewFromCurves(animator.gameObject, bindings); // faster to preview from curves then an animation clip - m_DefaultPoseClip = hasHumanMotion ? GetDefaultHumanoidClip() : null; -#endif - } - - /// <summary> - /// Gather all the animation clips for this track - /// </summary> - /// <param name="animClips"></param> - private void GetAnimationClips(List<AnimationClip> animClips) - { - foreach (var c in clips) - { - var a = c.asset as AnimationPlayableAsset; - if (a != null && a.clip != null) - animClips.Add(a.clip); - } - - if (m_InfiniteClip != null) - animClips.Add(m_InfiniteClip); - - foreach (var childTrack in GetChildTracks()) - { - var animChildTrack = childTrack as AnimationTrack; - if (animChildTrack != null) - animChildTrack.GetAnimationClips(animClips); - } - } - - // calculate which offset mode to apply - AppliedOffsetMode GetOffsetMode(GameObject go, bool animatesRootTransform) - { - if (!animatesRootTransform) - return AppliedOffsetMode.NoRootTransform; - - if (m_TrackOffset == TrackOffset.ApplyTransformOffsets) - return AppliedOffsetMode.TransformOffset; - - if (m_TrackOffset == TrackOffset.ApplySceneOffsets) - return (Application.isPlaying) ? AppliedOffsetMode.SceneOffset : AppliedOffsetMode.SceneOffsetEditor; - - if (HasController(go)) - { - if (!Application.isPlaying) - return AppliedOffsetMode.SceneOffsetLegacyEditor; - return AppliedOffsetMode.SceneOffsetLegacy; - } - - return AppliedOffsetMode.TransformOffsetLegacy; - } - - internal bool AnimatesRootTransform() - { - // infinite mode - if (AnimationPlayableAsset.HasRootTransforms(m_InfiniteClip)) - return true; - - // clip mode - foreach (var c in GetClips()) - { - var apa = c.asset as AnimationPlayableAsset; - if (apa != null && apa.hasRootTransforms) - return true; - } - - return false; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs.meta deleted file mode 100644 index 9ba4e15..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/AnimationTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d21dcc2386d650c4597f3633c75a1f98 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs deleted file mode 100644 index 8d61f57..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace UnityEngine.Timeline -{ - interface ICurvesOwner - { - AnimationClip curves { get; } - bool hasCurves { get; } - double duration { get; } - void CreateCurves(string curvesClipName); - - string defaultCurvesName { get; } - Object asset { get; } - Object assetOwner { get; } - TrackAsset targetTrack { get; } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs.meta deleted file mode 100644 index d5d95df..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Animation/ICurvesOwner.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 89b31ff5ca0a5eb4797ac65d43949807 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade.meta deleted file mode 100644 index f5aba63..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0c04c8cb23b78e04492e0f310cdee93e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs deleted file mode 100644 index 5ba31f6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; - -namespace UnityEngine.Timeline -{ - partial class AnimationPlayableAsset : ISerializationCallbackReceiver - { - enum Versions - { - Initial = 0, - RotationAsEuler = 1, - } - static readonly int k_LatestVersion = (int)Versions.RotationAsEuler; - [SerializeField, HideInInspector] int m_Version; - - [SerializeField, Obsolete("Use m_RotationEuler Instead", false), HideInInspector] - private Quaternion m_Rotation = Quaternion.identity; // deprecated. now saves in euler angles - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - m_Version = k_LatestVersion; - } - - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - if (m_Version < k_LatestVersion) - { - OnUpgradeFromVersion(m_Version); //upgrade derived classes - } - } - - void OnUpgradeFromVersion(int oldVersion) - { - if (oldVersion < (int)Versions.RotationAsEuler) - AnimationPlayableAssetUpgrade.ConvertRotationToEuler(this); - } - - static class AnimationPlayableAssetUpgrade - { - public static void ConvertRotationToEuler(AnimationPlayableAsset asset) - { -#pragma warning disable 618 - asset.m_EulerAngles = asset.m_Rotation.eulerAngles; -#pragma warning restore 618 - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs.meta deleted file mode 100644 index 867be5e..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6773203120b27984d9a8572fa3564f03 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs deleted file mode 100644 index 94c5634..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System; -using System.ComponentModel; - -namespace UnityEngine.Timeline -{ - partial class AnimationTrack - { - // 649 is value is only assigned to. they can be updated from old files being serialized - #pragma warning disable 649 - //fields that are used for upgrading should be put here, ideally as read-only - [SerializeField, Obsolete("Use m_InfiniteClipOffsetEulerAngles Instead", false), HideInInspector] - Quaternion m_OpenClipOffsetRotation = Quaternion.identity; - - [SerializeField, Obsolete("Use m_RotationEuler Instead", false), HideInInspector] - Quaternion m_Rotation = Quaternion.identity; - - [SerializeField, Obsolete("Use m_RootTransformOffsetMode", false), HideInInspector] - bool m_ApplyOffsets; - #pragma warning restore 649 - - [EditorBrowsable(EditorBrowsableState.Never)] - [Obsolete("openClipOffsetPosition has been deprecated. Use infiniteClipOffsetPosition instead. (UnityUpgradable) -> infiniteClipOffsetPosition", true)] - public Vector3 openClipOffsetPosition - { - get { return infiniteClipOffsetPosition; } - set { infiniteClipOffsetPosition = value; } - } - - [EditorBrowsable(EditorBrowsableState.Never)] - [Obsolete("openClipOffsetRotation has been deprecated. Use infiniteClipOffsetRotation instead. (UnityUpgradable) -> infiniteClipOffsetRotation", true)] - public Quaternion openClipOffsetRotation - { - get { return infiniteClipOffsetRotation; } - set { infiniteClipOffsetRotation = value; } - } - - [EditorBrowsable(EditorBrowsableState.Never)] - [Obsolete("openClipOffsetEulerAngles has been deprecated. Use infiniteClipOffsetEulerAngles instead. (UnityUpgradable) -> infiniteClipOffsetEulerAngles", true)] - public Vector3 openClipOffsetEulerAngles - { - get { return infiniteClipOffsetEulerAngles; } - set { infiniteClipOffsetEulerAngles = value; } - } - - [EditorBrowsable(EditorBrowsableState.Never)] - [Obsolete("openClipPreExtrapolation has been deprecated. Use infiniteClipPreExtrapolation instead. (UnityUpgradable) -> infiniteClipPreExtrapolation", true)] - public TimelineClip.ClipExtrapolation openClipPreExtrapolation - { - get { return infiniteClipPreExtrapolation; } - set { infiniteClipPreExtrapolation = value; } - } - - [EditorBrowsable(EditorBrowsableState.Never)] - [Obsolete("openClipPostExtrapolation has been deprecated. Use infiniteClipPostExtrapolation instead. (UnityUpgradable) -> infiniteClipPostExtrapolation", true)] - public TimelineClip.ClipExtrapolation openClipPostExtrapolation - { - get { return infiniteClipPostExtrapolation; } - set { infiniteClipPostExtrapolation = value; } - } - - internal override void OnUpgradeFromVersion(int oldVersion) - { - if (oldVersion < (int)Versions.RotationAsEuler) - AnimationTrackUpgrade.ConvertRotationsToEuler(this); - if (oldVersion < (int)Versions.RootMotionUpgrade) - AnimationTrackUpgrade.ConvertRootMotion(this); - if (oldVersion < (int)Versions.AnimatedTrackProperties) - AnimationTrackUpgrade.ConvertInfiniteTrack(this); - } - -// 612 is Property is Obsolete -// 618 is Field is Obsolete -#pragma warning disable 612, 618 - static class AnimationTrackUpgrade - { - public static void ConvertRotationsToEuler(AnimationTrack track) - { - track.m_EulerAngles = track.m_Rotation.eulerAngles; - track.m_InfiniteClipOffsetEulerAngles = track.m_OpenClipOffsetRotation.eulerAngles; - } - - public static void ConvertRootMotion(AnimationTrack track) - { - track.m_TrackOffset = TrackOffset.Auto; // loaded tracks should use legacy mode - - // reset offsets if not applied - if (!track.m_ApplyOffsets) - { - track.m_Position = Vector3.zero; - track.m_EulerAngles = Vector3.zero; - } - } - - public static void ConvertInfiniteTrack(AnimationTrack track) - { - track.m_InfiniteClip = track.m_AnimClip; - track.m_AnimClip = null; - } - } -#pragma warning restore 612, 618 - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs.meta deleted file mode 100644 index 01b86a7..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/AnimationTrackUpgrade.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3b0c53b13a1539949b3b212e049151d1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs deleted file mode 100644 index 20f3dfd..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace UnityEngine.Timeline -{ - partial class TimelineClip - { - enum Versions - { - Initial = 0, - ClipInFromGlobalToLocal = 1 - } - const int k_LatestVersion = (int)Versions.ClipInFromGlobalToLocal; - [SerializeField, HideInInspector] int m_Version; - - //fields that are used for upgrading should be put here, ideally as read-only - - void UpgradeToLatestVersion() - { - if (m_Version < (int)Versions.ClipInFromGlobalToLocal) - { - TimelineClipUpgrade.UpgradeClipInFromGlobalToLocal(this); - } - } - - static class TimelineClipUpgrade - { - // version 0->1, clipIn move from global to local - public static void UpgradeClipInFromGlobalToLocal(TimelineClip clip) - { - // case 936751 -- clipIn was serialized in global, not local offset - if (clip.m_ClipIn > 0 && clip.m_TimeScale > float.Epsilon) - clip.m_ClipIn *= clip.m_TimeScale; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs.meta deleted file mode 100644 index 0b27935..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/ClipUpgrade.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6a4f0c91a28ece04198b200dd55145d0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs deleted file mode 100644 index 86135c6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace UnityEngine.Timeline -{ - partial class TimelineAsset - { - enum Versions - { - Initial = 0 - } - const int k_LatestVersion = (int)Versions.Initial; - [SerializeField, HideInInspector] int m_Version; - - //fields that are used for upgrading should be put here, ideally as read-only - - void UpgradeToLatestVersion() - {} - - //upgrade code should go into this class - static class TimelineAssetUpgrade - {} - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs.meta deleted file mode 100644 index 6075bab..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TimelineUpgrade.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 95c91abdcc1ea03458c2ea4e9626a5d8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs deleted file mode 100644 index 6768199..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using UnityEngine.Serialization; - -namespace UnityEngine.Timeline -{ - partial class TrackAsset : ISerializationCallbackReceiver - { - internal enum Versions - { - Initial = 0, - RotationAsEuler = 1, - RootMotionUpgrade = 2, - AnimatedTrackProperties = 3 - } - - const int k_LatestVersion = (int)Versions.AnimatedTrackProperties; - - [SerializeField, HideInInspector] int m_Version; - - [Obsolete("Please use m_InfiniteClip (on AnimationTrack) instead.", false)] - [SerializeField, HideInInspector, FormerlySerializedAs("m_animClip")] - internal AnimationClip m_AnimClip; - - protected virtual void OnBeforeTrackSerialize() {} - protected virtual void OnAfterTrackDeserialize() {} - - internal virtual void OnUpgradeFromVersion(int oldVersion) {} - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - m_Version = k_LatestVersion; - - //make sure children are correctly parented - if (m_Children != null) - { - for (var i = m_Children.Count - 1; i >= 0; i--) - { - var asset = m_Children[i] as TrackAsset; - if (asset != null && asset.parent != this) - asset.parent = this; - } - } - - OnBeforeTrackSerialize(); - } - - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - // Clear the clip cache when a deserialize is performed, or - // we can get out of sync when performing Undo - m_ClipsCache = null; - Invalidate(); - - if (m_Version < k_LatestVersion) - { - UpgradeToLatestVersion(); //upgrade TrackAsset - OnUpgradeFromVersion(m_Version); //upgrade derived classes - } - - foreach (var marker in GetMarkers()) - { - marker.Initialize(this); - } - - OnAfterTrackDeserialize(); - } - - //fields that are used for upgrading should be put here, ideally as read-only - void UpgradeToLatestVersion() - {} - - //upgrade code should go into this class - static class TrackAssetUpgrade - {} - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs.meta deleted file mode 100644 index bbe22f0..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/AssetUpgrade/TrackUpgrade.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c68f34993bfe85e489158a29c99a20b5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes.meta deleted file mode 100644 index d77a179..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ec817e5e5781e0a4983a1dc8875d1974 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs deleted file mode 100644 index a6abc20..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using UnityEngine; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Attribute used to specify the color of the track and its clips inside the Timeline Editor. - /// </summary> - [AttributeUsage(AttributeTargets.Class)] - public class TrackColorAttribute : Attribute - { - Color m_Color; - - /// <summary> - /// - /// </summary> - public Color color - { - get { return m_Color; } - } - - /// <summary> - /// Specify the track color using [0-1] R,G,B values. - /// </summary> - /// <param name="r">Red value [0-1].</param> - /// <param name="g">Green value [0-1].</param> - /// <param name="b">Blue value [0-1].</param> - public TrackColorAttribute(float r, float g, float b) - { - m_Color = new Color(r, g, b); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs.meta deleted file mode 100644 index 80c61ba..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Attributes/TrackColorAttribute.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6c3d52cc5c46d7946a920e21901ff38e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio.meta deleted file mode 100644 index b3fd165..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d19b75372f4e44d4fa4b2cffbb54124b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs deleted file mode 100644 index 0c5894b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - [Serializable] - [NotKeyable] - class AudioClipProperties : PlayableBehaviour - { - [Range(0.0f, 1.0f)] - public float volume = 1.0f; - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs.meta deleted file mode 100644 index a044757..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioClipProperties.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0d60a406ab64c434e9d731914e11a51e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs deleted file mode 100644 index c5bdf8c..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using UnityEngine.Audio; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - [Serializable] - class AudioMixerProperties : PlayableBehaviour - { - [Range(0.0f, 1.0f)] - public float volume = 1.0f; - - [Range(-1.0f, 1.0f)] - public float stereoPan = 0.0f; - - [Range(0.0f, 1.0f)] - public float spatialBlend = 0.0f; - - public override void PrepareFrame(Playable playable, FrameData info) - { - if (!playable.IsValid() || !playable.IsPlayableOfType<AudioMixerPlayable>()) - return; - - var inputCount = playable.GetInputCount(); - - for (int i = 0; i < inputCount; ++i) - { - if (playable.GetInputWeight(i) > 0.0f) - { - var input = playable.GetInput(i); - - if (input.IsValid() && input.IsPlayableOfType<AudioClipPlayable>()) - { - var audioClipPlayable = (AudioClipPlayable)input; - var audioClipProperties = input.GetHandle().GetObject<AudioClipProperties>(); - - audioClipPlayable.SetVolume(Mathf.Clamp01(volume * audioClipProperties.volume)); - audioClipPlayable.SetStereoPan(Mathf.Clamp(stereoPan, -1.0f, 1.0f)); - audioClipPlayable.SetSpatialBlend(Mathf.Clamp01(spatialBlend)); - } - } - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs.meta deleted file mode 100644 index fa975ef..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioMixerProperties.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d8c4a920f001ca64680ed6fdb52d1753 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs deleted file mode 100644 index 7ff40fc..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Audio; -#if UNITY_EDITOR -using System.ComponentModel; -#endif -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// PlayableAsset wrapper for an AudioClip in Timeline. - /// </summary> - [Serializable] -#if UNITY_EDITOR - [DisplayName("Audio Clip")] -#endif - public class AudioPlayableAsset : PlayableAsset, ITimelineClipAsset - { - [SerializeField] AudioClip m_Clip; -#pragma warning disable 649 //Field is never assigned to and will always have its default value - [SerializeField] bool m_Loop; - [SerializeField, HideInInspector] float m_bufferingTime = 0.1f; - [SerializeField] AudioClipProperties m_ClipProperties = new AudioClipProperties(); - - // the amount of time to give the clip to load prior to it's start time - internal float bufferingTime - { - get { return m_bufferingTime; } - set { m_bufferingTime = value; } - } - -#if UNITY_EDITOR - Playable m_LiveClipPlayable = Playable.Null; - -#endif - - /// <summary> - /// The audio clip to be played - /// </summary> - public AudioClip clip - { - get { return m_Clip; } - set { m_Clip = value; } - } - - /// <summary> - /// Whether the audio clip loops. - /// </summary> - /// <remarks> - /// Use this to loop the audio clip when the duration of the timeline clip exceeds that of the audio clip. - /// </remarks> - public bool loop - { - get { return m_Loop; } - set { m_Loop = value; } - } - - /// <summary> - /// Returns the duration required to play the audio clip exactly once - /// </summary> - public override double duration - { - get - { - if (m_Clip == null) - return base.duration; - - // use this instead of length to avoid rounding precision errors, - return (double)m_Clip.samples / m_Clip.frequency; - } - } - - /// <summary> - /// Returns a description of the PlayableOutputs that may be created for this asset. - /// </summary> - public override IEnumerable<PlayableBinding> outputs - { - get { yield return AudioPlayableBinding.Create(name, this); } - } - - /// <summary> - /// Creates the root of a Playable subgraph to play the audio clip. - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable</param> - /// <param name="go">The GameObject that triggered the graph build</param> - /// <returns>The root playable of the subgraph</returns> - public override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - if (m_Clip == null) - return Playable.Null; - - var audioClipPlayable = AudioClipPlayable.Create(graph, m_Clip, m_Loop); - audioClipPlayable.GetHandle().SetScriptInstance(m_ClipProperties.Clone()); - -#if UNITY_EDITOR - m_LiveClipPlayable = audioClipPlayable; -#endif - - return audioClipPlayable; - } - - /// <summary> - /// Returns the capabilities of TimelineClips that contain an AudioPlayableAsset - /// </summary> - public ClipCaps clipCaps - { - get - { - return ClipCaps.ClipIn | - ClipCaps.SpeedMultiplier | - ClipCaps.Blending | - (m_Loop ? ClipCaps.Looping : ClipCaps.None); - } - } - -#if UNITY_EDITOR - internal void LiveLink() - { - if (!m_LiveClipPlayable.IsValid()) - return; - - var audioMixerProperties = m_LiveClipPlayable.GetHandle().GetObject<AudioClipProperties>(); - - if (audioMixerProperties == null) - return; - - audioMixerProperties.volume = m_ClipProperties.volume; - } - -#endif - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs.meta deleted file mode 100644 index 1b64816..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioPlayableAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4f10dd60657c6004587f237a7e90f8e4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs deleted file mode 100644 index d35fac6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Audio; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A Timeline track that can play AudioClips. - /// </summary> - [Serializable] - [TrackClipType(typeof(AudioPlayableAsset), false)] - [TrackBindingType(typeof(AudioSource))] - [ExcludeFromPreset] - public class AudioTrack : TrackAsset - { - [SerializeField] - AudioMixerProperties m_TrackProperties = new AudioMixerProperties(); - -#if UNITY_EDITOR - Playable m_LiveMixerPlayable = Playable.Null; - -#endif - - /// <summary> - /// Create an TimelineClip for playing an AudioClip on this track. - /// </summary> - /// <param name="clip">The audio clip to play</param> - /// <returns>A TimelineClip with an AudioPlayableAsset asset.</returns> - public TimelineClip CreateClip(AudioClip clip) - { - if (clip == null) - return null; - - var newClip = CreateDefaultClip(); - - var audioAsset = newClip.asset as AudioPlayableAsset; - if (audioAsset != null) - audioAsset.clip = clip; - - newClip.duration = clip.length; - newClip.displayName = clip.name; - - return newClip; - } - - internal override Playable CompileClips(PlayableGraph graph, GameObject go, IList<TimelineClip> timelineClips, IntervalTree<RuntimeElement> tree) - { - var clipBlender = AudioMixerPlayable.Create(graph, timelineClips.Count); - -#if UNITY_EDITOR - clipBlender.GetHandle().SetScriptInstance(m_TrackProperties.Clone()); - m_LiveMixerPlayable = clipBlender; -#else - if (hasCurves) - clipBlender.GetHandle().SetScriptInstance(m_TrackProperties.Clone()); -#endif - - for (int i = 0; i < timelineClips.Count; i++) - { - var c = timelineClips[i]; - var asset = c.asset as PlayableAsset; - if (asset == null) - continue; - - var buffer = 0.1f; - var audioAsset = c.asset as AudioPlayableAsset; - if (audioAsset != null) - buffer = audioAsset.bufferingTime; - - var source = asset.CreatePlayable(graph, go); - if (!source.IsValid()) - continue; - - if (source.IsPlayableOfType<AudioClipPlayable>()) - { - // Enforce initial values on all clips - var audioClipPlayable = (AudioClipPlayable)source; - var audioClipProperties = audioClipPlayable.GetHandle().GetObject<AudioClipProperties>(); - - audioClipPlayable.SetVolume(Mathf.Clamp01(m_TrackProperties.volume * audioClipProperties.volume)); - audioClipPlayable.SetStereoPan(Mathf.Clamp(m_TrackProperties.stereoPan, -1.0f, 1.0f)); - audioClipPlayable.SetSpatialBlend(Mathf.Clamp01(m_TrackProperties.spatialBlend)); - } - - tree.Add(new ScheduleRuntimeClip(c, source, clipBlender, buffer)); - graph.Connect(source, 0, clipBlender, i); - source.SetSpeed(c.timeScale); - source.SetDuration(c.extrapolatedDuration); - clipBlender.SetInputWeight(source, 1.0f); - } - - ConfigureTrackAnimation(tree, go, clipBlender); - - return clipBlender; - } - - /// <inheritdoc/> - public override IEnumerable<PlayableBinding> outputs - { - get { yield return AudioPlayableBinding.Create(name, this); } - } - -#if UNITY_EDITOR - internal void LiveLink() - { - if (!m_LiveMixerPlayable.IsValid()) - return; - - var audioMixerProperties = m_LiveMixerPlayable.GetHandle().GetObject<AudioMixerProperties>(); - - if (audioMixerProperties == null) - return; - - audioMixerProperties.volume = m_TrackProperties.volume; - audioMixerProperties.stereoPan = m_TrackProperties.stereoPan; - audioMixerProperties.spatialBlend = m_TrackProperties.spatialBlend; - } - -#endif - - void OnValidate() - { - m_TrackProperties.volume = Mathf.Clamp01(m_TrackProperties.volume); - m_TrackProperties.stereoPan = Mathf.Clamp(m_TrackProperties.stereoPan, -1.0f, 1.0f); - m_TrackProperties.spatialBlend = Mathf.Clamp01(m_TrackProperties.spatialBlend); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs.meta deleted file mode 100644 index 2a826c9..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Audio/AudioTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8b22792c3b570444eb18cb78c2af3a74 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs deleted file mode 100644 index 2a5efb6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Describes the timeline features supported by a clip - /// </summary> - [Flags] - public enum ClipCaps - { - /// <summary> - /// No features are supported. - /// </summary> - None = 0 , - - /// <summary> - /// The clip supports loops. - /// </summary> - Looping = 1 << 0, - - /// <summary> - /// The clip supports clip extrapolation. - /// </summary> - Extrapolation = 1 << 1, - - /// <summary> - /// The clip supports initial local times greater than zero. - /// </summary> - ClipIn = 1 << 2, - - /// <summary> - /// The clip supports time scaling. - /// </summary> - SpeedMultiplier = 1 << 3, - - /// <summary> - /// The clip supports blending between clips. - /// </summary> - Blending = 1 << 4, - - /// <summary> - /// All features are supported. - /// </summary> - All = ~None - } - - static class TimelineClipCapsExtensions - { - public static bool SupportsLooping(this TimelineClip clip) - { - return clip != null && (clip.clipCaps & ClipCaps.Looping) != ClipCaps.None; - } - - public static bool SupportsExtrapolation(this TimelineClip clip) - { - return clip != null && (clip.clipCaps & ClipCaps.Extrapolation) != ClipCaps.None; - } - - public static bool SupportsClipIn(this TimelineClip clip) - { - return clip != null && (clip.clipCaps & ClipCaps.ClipIn) != ClipCaps.None; - } - - public static bool SupportsSpeedMultiplier(this TimelineClip clip) - { - return clip != null && (clip.clipCaps & ClipCaps.SpeedMultiplier) != ClipCaps.None; - } - - public static bool SupportsBlending(this TimelineClip clip) - { - return clip != null && (clip.clipCaps & ClipCaps.Blending) != ClipCaps.None; - } - - public static bool HasAll(this ClipCaps caps, ClipCaps flags) - { - return (caps & flags) == flags; - } - - public static bool HasAny(this ClipCaps caps, ClipCaps flags) - { - return (caps & flags) != 0; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs.meta deleted file mode 100644 index ba03648..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ClipCaps.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 667a99762bdf5484fbaa02573fd396e2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control.meta deleted file mode 100644 index e4a557d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ea998292f45ea494d9e100f5f6362f91 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs deleted file mode 100644 index fd806f6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs +++ /dev/null @@ -1,406 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable Asset that generates playables for controlling time-related elements on a GameObject. - /// </summary> - [Serializable] - [NotKeyable] - public class ControlPlayableAsset : PlayableAsset, IPropertyPreview, ITimelineClipAsset - { - const int k_MaxRandInt = 10000; - static readonly List<PlayableDirector> k_EmptyDirectorsList = new List<PlayableDirector>(0); - static readonly List<ParticleSystem> k_EmptyParticlesList = new List<ParticleSystem>(0); - - /// <summary> - /// GameObject in the scene to control, or the parent of the instantiated prefab. - /// </summary> - [SerializeField] public ExposedReference<GameObject> sourceGameObject; - - /// <summary> - /// Prefab object that will be instantiated. - /// </summary> - [SerializeField] public GameObject prefabGameObject; - - /// <summary> - /// Indicates whether Particle Systems will be controlled. - /// </summary> - [SerializeField] public bool updateParticle = true; - - /// <summary> - /// Random seed to supply particle systems that are set to use autoRandomSeed - /// </summary> - /// <remarks> - /// This is used to maintain determinism when playing back in timeline. Sub emitters will be assigned incrementing random seeds to maintain determinism and distinction. - /// </remarks> - [SerializeField] public uint particleRandomSeed; - - /// <summary> - /// Indicates whether playableDirectors are controlled. - /// </summary> - [SerializeField] public bool updateDirector = true; - - /// <summary> - /// Indicates whether Monobehaviours implementing ITimeControl will be controlled. - /// </summary> - [SerializeField] public bool updateITimeControl = true; - - /// <summary> - /// Indicates whether to search the entire hierarchy for controllable components. - /// </summary> - [SerializeField] public bool searchHierarchy = false; - - /// <summary> - /// Indicate whether GameObject activation is controlled - /// </summary> - [SerializeField] public bool active = true; - - /// <summary> - /// Indicates the active state of the GameObject when Timeline is stopped. - /// </summary> - [SerializeField] public ActivationControlPlayable.PostPlaybackState postPlayback = ActivationControlPlayable.PostPlaybackState.Revert; - - PlayableAsset m_ControlDirectorAsset; - double m_Duration = PlayableBinding.DefaultDuration; - bool m_SupportLoop; - - private static HashSet<PlayableDirector> s_ProcessedDirectors = new HashSet<PlayableDirector>(); - private static HashSet<GameObject> s_CreatedPrefabs = new HashSet<GameObject>(); - - // does the last instance created control directors and/or particles - internal bool controllingDirectors { get; private set; } - internal bool controllingParticles { get; private set; } - - /// <summary> - /// This function is called when the object is loaded. - /// </summary> - public void OnEnable() - { - // can't be set in a constructor - if (particleRandomSeed == 0) - particleRandomSeed = (uint)Random.Range(1, k_MaxRandInt); - } - - /// <summary> - /// Returns the duration in seconds needed to play the underlying director or particle system exactly once. - /// </summary> - public override double duration { get { return m_Duration; } } - - /// <summary> - /// Returns the capabilities of TimelineClips that contain a ControlPlayableAsset - /// </summary> - public ClipCaps clipCaps - { - get { return ClipCaps.ClipIn | ClipCaps.SpeedMultiplier | (m_SupportLoop ? ClipCaps.Looping : ClipCaps.None); } - } - - /// <summary> - /// Creates the root of a Playable subgraph to control the contents of the game object. - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable</param> - /// <param name="go">The GameObject that triggered the graph build</param> - /// <returns>The root playable of the subgraph</returns> - public override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - // case 989856 - if (prefabGameObject != null) - { - if (s_CreatedPrefabs.Contains(prefabGameObject)) - { - Debug.LogWarningFormat("Control Track Clip ({0}) is causing a prefab to instantiate itself recursively. Aborting further instances.", name); - return Playable.Create(graph); - } - s_CreatedPrefabs.Add(prefabGameObject); - } - - Playable root = Playable.Null; - var playables = new List<Playable>(); - - GameObject sourceObject = sourceGameObject.Resolve(graph.GetResolver()); - if (prefabGameObject != null) - { - Transform parenTransform = sourceObject != null ? sourceObject.transform : null; - var controlPlayable = PrefabControlPlayable.Create(graph, prefabGameObject, parenTransform); - - sourceObject = controlPlayable.GetBehaviour().prefabInstance; - playables.Add(controlPlayable); - } - - m_Duration = PlayableBinding.DefaultDuration; - m_SupportLoop = false; - - controllingParticles = false; - controllingDirectors = false; - - if (sourceObject != null) - { - var directors = updateDirector ? GetComponent<PlayableDirector>(sourceObject) : k_EmptyDirectorsList; - var particleSystems = updateParticle ? GetParticleSystemRoots(sourceObject) : k_EmptyParticlesList; - - // update the duration and loop values (used for UI purposes) here - // so they are tied to the latest gameObject bound - UpdateDurationAndLoopFlag(directors, particleSystems); - - var director = go.GetComponent<PlayableDirector>(); - if (director != null) - m_ControlDirectorAsset = director.playableAsset; - - if (go == sourceObject && prefabGameObject == null) - { - Debug.LogWarningFormat("Control Playable ({0}) is referencing the same PlayableDirector component than the one in which it is playing.", name); - active = false; - if (!searchHierarchy) - updateDirector = false; - } - - if (active) - CreateActivationPlayable(sourceObject, graph, playables); - - if (updateDirector) - SearchHierarchyAndConnectDirector(directors, graph, playables, prefabGameObject != null); - - if (updateParticle) - SearchHiearchyAndConnectParticleSystem(particleSystems, graph, playables); - - if (updateITimeControl) - SearchHierarchyAndConnectControlableScripts(GetControlableScripts(sourceObject), graph, playables); - - // Connect Playables to Generic to Mixer - root = ConnectPlayablesToMixer(graph, playables); - } - - if (prefabGameObject != null) - s_CreatedPrefabs.Remove(prefabGameObject); - - if (!root.IsValid()) - root = Playable.Create(graph); - - return root; - } - - static Playable ConnectPlayablesToMixer(PlayableGraph graph, List<Playable> playables) - { - var mixer = Playable.Create(graph, playables.Count); - - for (int i = 0; i != playables.Count; ++i) - { - ConnectMixerAndPlayable(graph, mixer, playables[i], i); - } - - mixer.SetPropagateSetTime(true); - - return mixer; - } - - void CreateActivationPlayable(GameObject root, PlayableGraph graph, - List<Playable> outplayables) - { - var activation = ActivationControlPlayable.Create(graph, root, postPlayback); - if (activation.IsValid()) - outplayables.Add(activation); - } - - void SearchHiearchyAndConnectParticleSystem(IEnumerable<ParticleSystem> particleSystems, PlayableGraph graph, - List<Playable> outplayables) - { - foreach (var particleSystem in particleSystems) - { - if (particleSystem != null) - { - controllingParticles = true; - outplayables.Add(ParticleControlPlayable.Create(graph, particleSystem, particleRandomSeed)); - } - } - } - - void SearchHierarchyAndConnectDirector(IEnumerable<PlayableDirector> directors, PlayableGraph graph, - List<Playable> outplayables, bool disableSelfReferences) - { - foreach (var director in directors) - { - if (director != null) - { - if (director.playableAsset != m_ControlDirectorAsset) - { - outplayables.Add(DirectorControlPlayable.Create(graph, director)); - controllingDirectors = true; - } - // if this self references, disable the director. - else if (disableSelfReferences) - { - director.enabled = false; - } - } - } - } - - static void SearchHierarchyAndConnectControlableScripts(IEnumerable<MonoBehaviour> controlableScripts, PlayableGraph graph, List<Playable> outplayables) - { - foreach (var script in controlableScripts) - { - outplayables.Add(TimeControlPlayable.Create(graph, (ITimeControl)script)); - } - } - - static void ConnectMixerAndPlayable(PlayableGraph graph, Playable mixer, Playable playable, - int portIndex) - { - graph.Connect(playable, 0, mixer, portIndex); - mixer.SetInputWeight(playable, 1.0f); - } - - internal IList<T> GetComponent<T>(GameObject gameObject) - { - var components = new List<T>(); - if (gameObject != null) - { - if (searchHierarchy) - { - gameObject.GetComponentsInChildren<T>(true, components); - } - else - { - gameObject.GetComponents<T>(components); - } - } - return components; - } - - static IEnumerable<MonoBehaviour> GetControlableScripts(GameObject root) - { - if (root == null) - yield break; - - foreach (var script in root.GetComponentsInChildren<MonoBehaviour>()) - { - if (script is ITimeControl) - yield return script; - } - } - - internal void UpdateDurationAndLoopFlag(IList<PlayableDirector> directors, IList<ParticleSystem> particleSystems) - { - if (directors.Count == 0 && particleSystems.Count == 0) - return; - - const double invalidDuration = double.NegativeInfinity; - - var maxDuration = invalidDuration; - var supportsLoop = false; - - foreach (var director in directors) - { - if (director.playableAsset != null) - { - var assetDuration = director.playableAsset.duration; - - if (director.playableAsset is TimelineAsset && assetDuration > 0.0) - // Timeline assets report being one tick shorter than they actually are, unless they are empty - assetDuration = (double)((DiscreteTime)assetDuration).OneTickAfter(); - - maxDuration = Math.Max(maxDuration, assetDuration); - supportsLoop = supportsLoop || director.extrapolationMode == DirectorWrapMode.Loop; - } - } - - foreach (var particleSystem in particleSystems) - { - maxDuration = Math.Max(maxDuration, particleSystem.main.duration); - supportsLoop = supportsLoop || particleSystem.main.loop; - } - - m_Duration = double.IsNegativeInfinity(maxDuration) ? PlayableBinding.DefaultDuration : maxDuration; - m_SupportLoop = supportsLoop; - } - - IList<ParticleSystem> GetParticleSystemRoots(GameObject go) - { - if (searchHierarchy) - { - // We only want the parent systems as they will handle all the child systems. - var roots = new List<ParticleSystem>(); - GetParticleSystemRoots(go.transform, roots); - return roots; - } - return GetComponent<ParticleSystem>(go); - } - - static void GetParticleSystemRoots(Transform t, ICollection<ParticleSystem> roots) - { - var ps = t.GetComponent<ParticleSystem>(); - if (ps != null) - { - // its a root - roots.Add(ps); - return; - } - - for (int i = 0; i < t.childCount; ++i) - { - GetParticleSystemRoots(t.GetChild(i), roots); - } - } - - /// <inheritdoc/> - public void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { - if (director == null) - return; - - // prevent infinite recursion - if (s_ProcessedDirectors.Contains(director)) - return; - s_ProcessedDirectors.Add(director); - - var gameObject = sourceGameObject.Resolve(director); - if (gameObject != null) - { - if (updateParticle) - { - // case 1076850 -- drive all emitters, not just roots. - foreach (var ps in gameObject.GetComponentsInChildren<ParticleSystem>(true)) - { - driver.AddFromName<ParticleSystem>(ps.gameObject, "randomSeed"); - driver.AddFromName<ParticleSystem>(ps.gameObject, "autoRandomSeed"); - } - } - - if (active) - { - driver.AddFromName(gameObject, "m_IsActive"); - } - - if (updateITimeControl) - { - foreach (var script in GetControlableScripts(gameObject)) - { - var propertyPreview = script as IPropertyPreview; - if (propertyPreview != null) - propertyPreview.GatherProperties(director, driver); - else - driver.AddFromComponent(script.gameObject, script); - } - } - - if (updateDirector) - { - foreach (var childDirector in GetComponent<PlayableDirector>(gameObject)) - { - if (childDirector == null) - continue; - - var timeline = childDirector.playableAsset as TimelineAsset; - if (timeline == null) - continue; - - timeline.GatherProperties(childDirector, driver); - } - } - } - s_ProcessedDirectors.Remove(director); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs.meta deleted file mode 100644 index 3f4d090..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlPlayableAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 48853ae485fa386428341ac1ea122570 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs deleted file mode 100644 index e42c9af..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs +++ /dev/null @@ -1,14 +0,0 @@ -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] - public class ControlTrack : TrackAsset - { - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs.meta deleted file mode 100644 index 95582da..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Control/ControlTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 15e0374501f39d54eb30235764636e0e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs deleted file mode 100644 index af68af8..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs +++ /dev/null @@ -1,226 +0,0 @@ -using System; - -namespace UnityEngine.Timeline -{ - struct DiscreteTime : IComparable - { - const double k_Tick = 1e-12; - public static readonly DiscreteTime kMaxTime = new DiscreteTime(Int64.MaxValue); - - readonly Int64 m_DiscreteTime; - - public static double tickValue { get { return k_Tick; } } - - public DiscreteTime(DiscreteTime time) - { - m_DiscreteTime = time.m_DiscreteTime; - } - - DiscreteTime(Int64 time) - { - m_DiscreteTime = time; - } - - public DiscreteTime(double time) - { - m_DiscreteTime = DoubleToDiscreteTime(time); - } - - public DiscreteTime(float time) - { - m_DiscreteTime = FloatToDiscreteTime(time); - } - - public DiscreteTime(int time) - { - m_DiscreteTime = IntToDiscreteTime(time); - } - - public DiscreteTime(int frame, double fps) - { - m_DiscreteTime = DoubleToDiscreteTime(frame * fps); - } - - public DiscreteTime OneTickBefore() - { - return new DiscreteTime(m_DiscreteTime - 1); - } - - public DiscreteTime OneTickAfter() - { - return new DiscreteTime(m_DiscreteTime + 1); - } - - public Int64 GetTick() - { - return m_DiscreteTime; - } - - public static DiscreteTime FromTicks(Int64 ticks) - { - return new DiscreteTime(ticks); - } - - public int CompareTo(object obj) - { - if (obj is DiscreteTime) - return m_DiscreteTime.CompareTo(((DiscreteTime)obj).m_DiscreteTime); - return 1; - } - - public bool Equals(DiscreteTime other) - { - return m_DiscreteTime == other.m_DiscreteTime; - } - - public override bool Equals(object obj) - { - if (obj is DiscreteTime) - return Equals((DiscreteTime)obj); - return false; - } - - static Int64 DoubleToDiscreteTime(double time) - { - double number = (time / k_Tick) + 0.5; - if (number < Int64.MaxValue && number > Int64.MinValue) - return (Int64)number; - throw new ArgumentOutOfRangeException("Time is over the discrete range."); - } - - static Int64 FloatToDiscreteTime(float time) - { - float number = (time / (float)k_Tick) + 0.5f; - if (number < Int64.MaxValue && number > Int64.MinValue) - return (Int64)number; - throw new ArgumentOutOfRangeException("Time is over the discrete range."); - } - - static Int64 IntToDiscreteTime(int time) - { - return DoubleToDiscreteTime(time); - } - - static double ToDouble(Int64 time) - { - return time * k_Tick; - } - - static float ToFloat(Int64 time) - { - return (float)ToDouble(time); - } - - public static explicit operator double(DiscreteTime b) - { - return ToDouble(b.m_DiscreteTime); - } - - public static explicit operator float(DiscreteTime b) - { - return ToFloat(b.m_DiscreteTime); - } - - public static explicit operator Int64(DiscreteTime b) - { - return b.m_DiscreteTime; - } - - public static explicit operator DiscreteTime(double time) - { - return new DiscreteTime(time); - } - - public static explicit operator DiscreteTime(float time) - { - return new DiscreteTime(time); - } - - public static implicit operator DiscreteTime(Int32 time) - { - return new DiscreteTime(time); - } - - public static explicit operator DiscreteTime(Int64 time) - { - return new DiscreteTime(time); - } - - public static bool operator==(DiscreteTime lhs, DiscreteTime rhs) - { - return lhs.m_DiscreteTime == rhs.m_DiscreteTime; - } - - public static bool operator!=(DiscreteTime lhs, DiscreteTime rhs) - { - return !(lhs == rhs); - } - - public static bool operator>(DiscreteTime lhs, DiscreteTime rhs) - { - return lhs.m_DiscreteTime > rhs.m_DiscreteTime; - } - - public static bool operator<(DiscreteTime lhs, DiscreteTime rhs) - { - return lhs.m_DiscreteTime < rhs.m_DiscreteTime; - } - - public static bool operator<=(DiscreteTime lhs, DiscreteTime rhs) - { - return lhs.m_DiscreteTime <= rhs.m_DiscreteTime; - } - - public static bool operator>=(DiscreteTime lhs, DiscreteTime rhs) - { - return lhs.m_DiscreteTime >= rhs.m_DiscreteTime; - } - - public static DiscreteTime operator+(DiscreteTime lhs, DiscreteTime rhs) - { - return new DiscreteTime(lhs.m_DiscreteTime + rhs.m_DiscreteTime); - } - - public static DiscreteTime operator-(DiscreteTime lhs, DiscreteTime rhs) - { - return new DiscreteTime(lhs.m_DiscreteTime - rhs.m_DiscreteTime); - } - - public override string ToString() - { - return m_DiscreteTime.ToString(); - } - - public override int GetHashCode() - { - return m_DiscreteTime.GetHashCode(); - } - - public static DiscreteTime Min(DiscreteTime lhs, DiscreteTime rhs) - { - return new DiscreteTime(Math.Min(lhs.m_DiscreteTime, rhs.m_DiscreteTime)); - } - - public static DiscreteTime Max(DiscreteTime lhs, DiscreteTime rhs) - { - return new DiscreteTime(Math.Max(lhs.m_DiscreteTime, rhs.m_DiscreteTime)); - } - - public static double SnapToNearestTick(double time) - { - Int64 discreteTime = DoubleToDiscreteTime(time); - return ToDouble(discreteTime); - } - - public static float SnapToNearestTick(float time) - { - Int64 discreteTime = FloatToDiscreteTime(time); - return ToFloat(discreteTime); - } - - public static Int64 GetNearestTick(double time) - { - return DoubleToDiscreteTime(time); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs.meta deleted file mode 100644 index e6d4977..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/DiscreteTime.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8beed9aab74505d488e6befe54c3f6ef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation.meta deleted file mode 100644 index 433d36b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4c6f60d349ea37048af03504fc872f33 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs deleted file mode 100644 index e833fd5..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Runtime clip customized for 'infinite' tracks playables. - /// Used for clips whose time needs to match the timelines exactly - /// </summary> - class InfiniteRuntimeClip : RuntimeElement - { - private Playable m_Playable; - private static readonly Int64 kIntervalEnd = DiscreteTime.GetNearestTick(TimelineClip.kMaxTimeValue); - - public InfiniteRuntimeClip(Playable playable) - { - m_Playable = playable; - } - - public override Int64 intervalStart - { - get { return 0; } - } - - public override Int64 intervalEnd - { - get { return kIntervalEnd; } - } - - public override bool enable - { - set - { - if (value) - m_Playable.Play(); - else - m_Playable.Pause(); - } - } - - public override void EvaluateAt(double localTime, FrameData frameData) - { - m_Playable.SetTime(localTime); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs.meta deleted file mode 100644 index c0451a6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/InfiniteRuntimeClip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9b5abcb38bac0c54794ad732a3fa0de3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs deleted file mode 100644 index 691f477..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs +++ /dev/null @@ -1,271 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace UnityEngine.Timeline -{ - interface IInterval - { - Int64 intervalStart { get; } - Int64 intervalEnd { get; } - } - - struct IntervalTreeNode // interval node, - { - public Int64 center; // midpoint for this node - public int first; // index of first element of this node in m_Entries - public int last; // index of the last element of this node in m_Entries - public int left; // index in m_Nodes of the left subnode - public int right; // index in m_Nodes of the right subnode - } - - class IntervalTree<T> where T : IInterval - { - internal struct Entry - { - public Int64 intervalStart; - public Int64 intervalEnd; - public T item; - } - - const int kMinNodeSize = 10; // the minimum number of entries to have subnodes - const int kInvalidNode = -1; - const Int64 kCenterUnknown = Int64.MaxValue; // center hasn't been calculated. indicates no children - - readonly List<Entry> m_Entries = new List<Entry>(); - readonly List<IntervalTreeNode> m_Nodes = new List<IntervalTreeNode>(); - - /// <summary> - /// Whether the tree will be rebuilt on the next query - /// </summary> - public bool dirty { get; internal set; } - - /// <summary> - /// Add an IInterval to the tree - /// </summary> - public void Add(T item) - { - if (item == null) - return; - - m_Entries.Add( - new Entry() - { - intervalStart = item.intervalStart, - intervalEnd = item.intervalEnd, - item = item - } - ); - dirty = true; - } - - /// <summary> - /// Query the tree at a particular time - /// </summary> - /// <param name="value"></param> - /// <param name="results"></param> - public void IntersectsWith(Int64 value, List<T> results) - { - if (m_Entries.Count == 0) - return; - - if (dirty) - { - Rebuild(); - dirty = false; - } - - if (m_Nodes.Count > 0) - Query(m_Nodes[0], value, results); - } - - /// <summary> - /// Query the tree at a particular range of time - /// </summary> - /// <param name="start"></param> - /// <param name="end"></param> - /// <param name="results"></param> - public void IntersectsWithRange(Int64 start, Int64 end, List<T> results) - { - if (start > end) - return; - - if (m_Entries.Count == 0) - return; - - if (dirty) - { - Rebuild(); - dirty = false; - } - - if (m_Nodes.Count > 0) - QueryRange(m_Nodes[0], start, end, results); - } - - /// <summary> - /// Updates the intervals from their source. Use this to detect if the data in the tree - /// has changed. - /// </summary> - public void UpdateIntervals() - { - bool isDirty = false; - for (int i = 0; i < m_Entries.Count; i++) - { - var n = m_Entries[i]; - var s = n.item.intervalStart; - var e = n.item.intervalEnd; - - isDirty |= n.intervalStart != s; - isDirty |= n.intervalEnd != e; - - m_Entries[i] = new Entry() - { - intervalStart = s, - intervalEnd = e, - item = n.item - }; - } - - dirty |= isDirty; - } - - private void Query(IntervalTreeNode intervalTreeNode, Int64 value, List<T> results) - { - for (int i = intervalTreeNode.first; i <= intervalTreeNode.last; i++) - { - var entry = m_Entries[i]; - if (value >= entry.intervalStart && value < entry.intervalEnd) - { - results.Add(entry.item); - } - } - - if (intervalTreeNode.center == kCenterUnknown) - return; - if (intervalTreeNode.left != kInvalidNode && value < intervalTreeNode.center) - Query(m_Nodes[intervalTreeNode.left], value, results); - if (intervalTreeNode.right != kInvalidNode && value > intervalTreeNode.center) - Query(m_Nodes[intervalTreeNode.right], value, results); - } - - private void QueryRange(IntervalTreeNode intervalTreeNode, Int64 start, Int64 end, List<T> results) - { - for (int i = intervalTreeNode.first; i <= intervalTreeNode.last; i++) - { - var entry = m_Entries[i]; - if (end >= entry.intervalStart && start < entry.intervalEnd) - { - results.Add(entry.item); - } - } - - if (intervalTreeNode.center == kCenterUnknown) - return; - if (intervalTreeNode.left != kInvalidNode && start < intervalTreeNode.center) - QueryRange(m_Nodes[intervalTreeNode.left], start, end, results); - if (intervalTreeNode.right != kInvalidNode && end > intervalTreeNode.center) - QueryRange(m_Nodes[intervalTreeNode.right], start, end, results); - } - - private void Rebuild() - { - m_Nodes.Clear(); - m_Nodes.Capacity = m_Entries.Capacity; - Rebuild(0, m_Entries.Count - 1); - } - - private int Rebuild(int start, int end) - { - IntervalTreeNode intervalTreeNode = new IntervalTreeNode(); - - // minimum size, don't subdivide - int count = end - start + 1; - if (count < kMinNodeSize) - { - intervalTreeNode = new IntervalTreeNode() {center = kCenterUnknown, first = start, last = end, left = kInvalidNode, right = kInvalidNode}; - m_Nodes.Add(intervalTreeNode); - return m_Nodes.Count - 1; - } - - var min = Int64.MaxValue; - var max = Int64.MinValue; - - for (int i = start; i <= end; i++) - { - var o = m_Entries[i]; - min = Math.Min(min, o.intervalStart); - max = Math.Max(max, o.intervalEnd); - } - - var center = (max + min) / 2; - intervalTreeNode.center = center; - - // first pass, put every thing left of center, left - int x = start; - int y = end; - while (true) - { - while (x <= end && m_Entries[x].intervalEnd < center) - x++; - - while (y >= start && m_Entries[y].intervalEnd >= center) - y--; - - if (x > y) - break; - - var nodeX = m_Entries[x]; - var nodeY = m_Entries[y]; - - m_Entries[y] = nodeX; - m_Entries[x] = nodeY; - } - - intervalTreeNode.first = x; - - // second pass, put every start passed the center right - y = end; - while (true) - { - while (x <= end && m_Entries[x].intervalStart <= center) - x++; - - while (y >= start && m_Entries[y].intervalStart > center) - y--; - - if (x > y) - break; - - var nodeX = m_Entries[x]; - var nodeY = m_Entries[y]; - - m_Entries[y] = nodeX; - m_Entries[x] = nodeY; - } - - intervalTreeNode.last = y; - - // reserve a place - m_Nodes.Add(new IntervalTreeNode()); - int index = m_Nodes.Count - 1; - - intervalTreeNode.left = kInvalidNode; - intervalTreeNode.right = kInvalidNode; - - if (start < intervalTreeNode.first) - intervalTreeNode.left = Rebuild(start, intervalTreeNode.first - 1); - - if (end > intervalTreeNode.last) - intervalTreeNode.right = Rebuild(intervalTreeNode.last + 1, end); - - m_Nodes[index] = intervalTreeNode; - return index; - } - - public void Clear() - { - m_Entries.Clear(); - m_Nodes.Clear(); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs.meta deleted file mode 100644 index cf954ab..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/IntervalTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8f74c99a65464bb4b86ccb314ee95a7f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs deleted file mode 100644 index 9b260cd..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs +++ /dev/null @@ -1,110 +0,0 @@ -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - // The RuntimeClip wraps a single clip in an instantiated sequence. - // It supports the IInterval interface so that it can be stored in the interval tree - // It is this class that is returned by an interval tree query. - class RuntimeClip : RuntimeClipBase - { - TimelineClip m_Clip; - Playable m_Playable; - Playable m_ParentMixer; - - public override double start - { - get { return m_Clip.extrapolatedStart; } - } - - public override double duration - { - get { return m_Clip.extrapolatedDuration; } - } - - public RuntimeClip(TimelineClip clip, Playable clipPlayable, Playable parentMixer) - { - Create(clip, clipPlayable, parentMixer); - } - - void Create(TimelineClip clip, Playable clipPlayable, Playable parentMixer) - { - m_Clip = clip; - m_Playable = clipPlayable; - m_ParentMixer = parentMixer; - clipPlayable.Pause(); - } - - public TimelineClip clip - { - get { return m_Clip; } - } - - public Playable mixer - { - get { return m_ParentMixer; } - } - - public Playable playable - { - get { return m_Playable; } - } - - public override bool enable - { - set - { - if (value && m_Playable.GetPlayState() != PlayState.Playing) - { - m_Playable.Play(); - SetTime(m_Clip.clipIn); - } - else if (!value && m_Playable.GetPlayState() != PlayState.Paused) - { - m_Playable.Pause(); - if (m_ParentMixer.IsValid()) - m_ParentMixer.SetInputWeight(m_Playable, 0.0f); - } - } - } - - public void SetTime(double time) - { - m_Playable.SetTime(time); - } - - public void SetDuration(double duration) - { - m_Playable.SetDuration(duration); - } - - public override void EvaluateAt(double localTime, FrameData frameData) - { - enable = true; - - float weight = 1.0f; - if (clip.IsPreExtrapolatedTime(localTime)) - weight = clip.EvaluateMixIn((float)clip.start); - else if (clip.IsPostExtrapolatedTime(localTime)) - weight = clip.EvaluateMixOut((float)clip.end); - else - weight = clip.EvaluateMixIn(localTime) * clip.EvaluateMixOut(localTime); - - if (mixer.IsValid()) - mixer.SetInputWeight(playable, weight); - - // localTime of the sequence to localtime of the clip - double clipTime = clip.ToLocalTime(localTime); - if (clipTime.CompareTo(0.0) >= 0) - { - SetTime(clipTime); - } - SetDuration(clip.extrapolatedDuration); - } - - public override void Reset() - { - SetTime(m_Clip.clipIn); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs.meta deleted file mode 100644 index 3ae5d53..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 70a190a1b304d1e43995af35d09231d6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs deleted file mode 100644 index f6a178a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using UnityEngine; - -namespace UnityEngine.Timeline -{ - internal abstract class RuntimeClipBase : RuntimeElement - { - public abstract double start { get; } - public abstract double duration { get; } - - public override Int64 intervalStart - { - get { return DiscreteTime.GetNearestTick(start); } - } - - public override Int64 intervalEnd - { - get { return DiscreteTime.GetNearestTick(start + duration); } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs.meta deleted file mode 100644 index 49f3b62..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeClipBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 70f955bbb437a494888ef54d97abb474 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs deleted file mode 100644 index bdd7f11..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - abstract class RuntimeElement : IInterval - { - public abstract Int64 intervalStart { get; } - public abstract Int64 intervalEnd { get; } - public int intervalBit { get; set; } - - public abstract bool enable { set; } - public abstract void EvaluateAt(double localTime, FrameData frameData); - - public virtual void Reset() {} - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs.meta deleted file mode 100644 index 03b8737..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/RuntimeElement.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 76b6bf32a6fcf934aab8c529bddccc81 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs deleted file mode 100644 index 4831cc4..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Audio; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - // Special runtime clip implementation that handles playables that use a scheduling system - // such as Audio - internal class ScheduleRuntimeClip : RuntimeClipBase - { - private TimelineClip m_Clip; - private Playable m_Playable; - private Playable m_ParentMixer; - private double m_StartDelay; - private double m_FinishTail; - private bool m_Started = false; - - // represents the start point when we want to start getting updated - public override double start - { - get { return Math.Max(0, m_Clip.start - m_StartDelay); } - } - - public override double duration - { - get { return m_Clip.duration + m_FinishTail + m_Clip.start - start; } - } - - public void SetTime(double time) - { - m_Playable.SetTime(time); - } - - public TimelineClip clip { get { return m_Clip; } } - public Playable mixer { get { return m_ParentMixer; } } - public Playable playable { get { return m_Playable; } } - - public ScheduleRuntimeClip(TimelineClip clip, Playable clipPlayable, - Playable parentMixer, double startDelay = 0.2, double finishTail = 0.1) - { - Create(clip, clipPlayable, parentMixer, startDelay, finishTail); - } - - private void Create(TimelineClip clip, Playable clipPlayable, Playable parentMixer, - double startDelay, double finishTail) - { - m_Clip = clip; - m_Playable = clipPlayable; - m_ParentMixer = parentMixer; - m_StartDelay = startDelay; - m_FinishTail = finishTail; - clipPlayable.Pause(); - } - - public override bool enable - { - set - { - if (value && m_Playable.GetPlayState() != PlayState.Playing) - { - m_Playable.Play(); - } - else if (!value && m_Playable.GetPlayState() != PlayState.Paused) - { - m_Playable.Pause(); - if (m_ParentMixer.IsValid()) - m_ParentMixer.SetInputWeight(m_Playable, 0.0f); - } - - m_Started &= value; - } - } - - public override void EvaluateAt(double localTime, FrameData frameData) - { - if (frameData.timeHeld) - { - enable = false; - return; - } - - - bool forceSeek = frameData.seekOccurred || frameData.timeLooped || frameData.evaluationType == FrameData.EvaluationType.Evaluate; - - // If we are in the tail region of the clip, then dont do anything - if (localTime > start + duration - m_FinishTail) - return; - - // this may set the weight to 1 in a delay, but it will avoid missing the start - float weight = clip.EvaluateMixIn(localTime) * clip.EvaluateMixOut(localTime); - if (mixer.IsValid()) - mixer.SetInputWeight(playable, weight); - - // localTime of the sequence to localtime of the clip - if (!m_Started || forceSeek) - { - // accounts for clip in and speed - double clipTime = clip.ToLocalTime(Math.Max(localTime, clip.start)); - // multiply by the time scale so the delay is local to the clip - // Audio will rescale based on it's effective time scale (which includes the parent) - double startDelay = Math.Max(clip.start - localTime, 0) * clip.timeScale; - double durationLocal = m_Clip.duration * clip.timeScale; - if (m_Playable.IsPlayableOfType<AudioClipPlayable>()) - ((AudioClipPlayable)m_Playable).Seek(clipTime, startDelay, durationLocal); - - m_Started = true; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs.meta deleted file mode 100644 index b3ea114..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Evaluation/ScheduleRuntimeClip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b250be9db55288b48ac121c074d795e6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events.meta deleted file mode 100644 index 847f9d1..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b8c5993172f27e4419d7d4ed5ef77840 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs deleted file mode 100644 index 2595cdf..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace UnityEngine.Timeline -{ - /// <summary> - /// Interface implemented by markers. - /// </summary> - /// <remarks> - /// A marker is a point in time. - /// </remarks> - /// <seealso cref="UnityEngine.Timeline.Marker"/> - public interface IMarker - { - /// <summary> - /// The time set for the marker, in seconds. - /// </summary> - double time { get; set; } - - /// <summary> - /// The track that contains the marker. - /// </summary> - TrackAsset parent { get; } - - /// <summary> - /// This method is called when the marker is initialized. - /// </summary> - /// <param name="parent">The track that contains the marker.</param> - /// <remarks> - /// This method is called after each deserialization of the Timeline Asset. - /// </remarks> - void Initialize(TrackAsset parent); - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs.meta deleted file mode 100644 index 3869cbc..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/IMarker.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4cb169caa67eddf4d83b39fd0917a945 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs deleted file mode 100644 index 7a23d7d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace UnityEngine.Timeline -{ - /// <summary> - /// Implement this interface to change the behaviour of an INotification. - /// </summary> - /// This interface must be implemented along with <see cref="UnityEngine.Playables.INotification"/> to modify the default behaviour of a notification. - /// <seealso cref="UnityEngine.Timeline.NotificationFlags"/> - public interface INotificationOptionProvider - { - /// <summary> - /// The flags that change the triggering behaviour. - /// </summary> - NotificationFlags flags { get; } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs.meta deleted file mode 100644 index 3e59b72..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/INotificationOptionProvider.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5082cb99a8f99b84d84dd8b4c5233a9e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs deleted file mode 100644 index 2f12cd7..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Use Marker as a base class when creating a custom marker. - /// </summary> - /// <remarks> - /// A marker is a point in time. - /// </remarks> - public abstract class Marker : ScriptableObject, IMarker - { - [SerializeField, TimeField, Tooltip("Time for the marker")] double m_Time; - - /// <inheritdoc/> - public TrackAsset parent { get; private set; } - - /// <inheritdoc/> - /// <remarks> - /// The marker time cannot be negative. - /// </remarks> - public double time - { - get { return m_Time; } - set { m_Time = Math.Max(value, 0); } - } - - void IMarker.Initialize(TrackAsset parentTrack) - { - // We only really want to update the parent when the object is first deserialized - // If not a cloned track would "steal" the source's markers - if (parent == null) - { - parent = parentTrack; - try - { - OnInitialize(parentTrack); - } - catch (Exception e) - { - Debug.LogError(e.Message, this); - } - } - } - - /// <summary> - /// Override this method to receive a callback when the marker is initialized. - /// </summary> - public virtual void OnInitialize(TrackAsset aPent) - { - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs.meta deleted file mode 100644 index 2bb36b5..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Marker.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 89b48a03f6f43e94e87cc8d2104d3d4d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs deleted file mode 100644 index 4be4fc2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - [Serializable] - struct MarkerList : ISerializationCallbackReceiver - { - [SerializeField, HideInInspector] List<ScriptableObject> m_Objects; - - [HideInInspector, NonSerialized] List<IMarker> m_Cache; - bool m_CacheDirty; - bool m_HasNotifications; - public List<IMarker> markers - { - get - { - BuildCache(); - return m_Cache; - } - } - - public MarkerList(int capacity) - { - m_Objects = new List<ScriptableObject>(capacity); - m_Cache = new List<IMarker>(capacity); - m_CacheDirty = true; - m_HasNotifications = false; - } - - public void Add(ScriptableObject item) - { - if (item == null) - return; - - m_Objects.Add(item); - m_CacheDirty = true; - } - - public bool Remove(IMarker item) - { - if (!(item is ScriptableObject)) - throw new InvalidOperationException("Supplied type must be a ScriptableObject"); - return Remove((ScriptableObject)item, item.parent.timelineAsset, item.parent); - } - - public bool Remove(ScriptableObject item, TimelineAsset timelineAsset, PlayableAsset thingToDirty) - { - if (!m_Objects.Contains(item)) return false; - - TimelineUndo.PushUndo(thingToDirty, "Delete Marker"); - m_Objects.Remove(item); - m_CacheDirty = true; - TimelineUndo.PushDestroyUndo(timelineAsset, thingToDirty, item, "Delete Marker"); - return true; - } - - public void Clear() - { - m_Objects.Clear(); - m_CacheDirty = true; - } - - public bool Contains(ScriptableObject item) - { - return m_Objects.Contains(item); - } - - public IEnumerable<IMarker> GetMarkers() - { - return markers; - } - - public int Count - { - get { return markers.Count; } - } - - public IMarker this[int idx] - { - get - { - return markers[idx]; - } - } - - public List<ScriptableObject> GetRawMarkerList() - { - return m_Objects; - } - - public IMarker CreateMarker(Type type, double time, TrackAsset owner) - { - if (!typeof(ScriptableObject).IsAssignableFrom(type) || !typeof(IMarker).IsAssignableFrom(type)) - { - throw new InvalidOperationException( - "The requested type needs to inherit from ScriptableObject and implement IMarker"); - } - if (!owner.supportsNotifications && typeof(INotification).IsAssignableFrom(type)) - { - throw new InvalidOperationException( - "Markers implementing the INotification interface cannot be added on tracks that do not support notifications"); - } - - var markerSO = ScriptableObject.CreateInstance(type); - var marker = (IMarker)markerSO; - marker.time = time; - - TimelineCreateUtilities.SaveAssetIntoObject(markerSO, owner); - TimelineUndo.RegisterCreatedObjectUndo(markerSO, "Create " + type.Name); - TimelineUndo.PushUndo(owner, "Create " + type.Name); - - Add(markerSO); - marker.Initialize(owner); - - return marker; - } - - public bool HasNotifications() - { - BuildCache(); - return m_HasNotifications; - } - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - } - - void ISerializationCallbackReceiver.OnAfterDeserialize() - { -#if UNITY_EDITOR - for (int i = m_Objects.Count - 1; i >= 0; i--) - { - object o = m_Objects[i]; - if (o == null) - { - Debug.LogWarning("Empty marker found while loading timeline. It will be removed."); - m_Objects.RemoveAt(i); - } - } -#endif - m_CacheDirty = true; - } - - void BuildCache() - { - if (m_CacheDirty) - { - m_Cache = new List<IMarker>(m_Objects.Count); - m_HasNotifications = false; - foreach (var o in m_Objects) - { - if (o != null) - { - m_Cache.Add(o as IMarker); - if (o is INotification) - { - m_HasNotifications = true; - } - } - } - - m_CacheDirty = false; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs.meta deleted file mode 100644 index 1875712..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4335a164bb763104c8805212c23d795f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs deleted file mode 100644 index f64b483..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <inheritdoc /> - /// <summary> - /// Use this track to add Markers bound to a GameObject. - /// </summary> - [Serializable] - [TrackBindingType(typeof(GameObject))] - [HideInMenu] - [ExcludeFromPreset] - public class MarkerTrack : TrackAsset - { - /// <inheritdoc/> - public override IEnumerable<PlayableBinding> outputs - { - get - { - return this == timelineAsset.markerTrack ? - new List<PlayableBinding> {ScriptPlayableBinding.Create(name, null, typeof(GameObject))} : - base.outputs; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs.meta deleted file mode 100644 index 37ca389..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/MarkerTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2a16748d9461eae46a725db9776d5390 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs deleted file mode 100644 index 7c7bc4e..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Use this track to emit signals to a bound SignalReceiver. - /// </summary> - /// <remarks> - /// This track cannot contain clips. - /// </remarks> - /// <seealso cref="UnityEngine.Timeline.SignalEmitter"/> - /// <seealso cref="UnityEngine.Timeline.SignalReceiver"/> - /// <seealso cref="UnityEngine.Timeline.SignalAsset"/> - [Serializable] - [TrackBindingType(typeof(SignalReceiver))] - [TrackColor(0.25f, 0.25f, 0.25f)] - [ExcludeFromPreset] - public class SignalTrack : MarkerTrack {} -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs.meta deleted file mode 100644 index 3343f84..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/SignalTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b46e36075dd1c124a8422c228e75e1fb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals.meta deleted file mode 100644 index aa956e4..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5b00473355622524394628f7ec51808d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs deleted file mode 100644 index 49df674..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace UnityEngine.Timeline -{ - //used to tell Signal Handler inspector to use a special drawer for UnityEvent - class CustomSignalEventDrawer : PropertyAttribute {} -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs.meta deleted file mode 100644 index c7c813f..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/CustomSignalEventDrawer.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a7ebd1239373d5f41af65ef32d67f445 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs deleted file mode 100644 index d605588..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using UnityEngine; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// An asset representing an emitted signal. A SignalAsset connects a SignalEmitter with a SignalReceiver. - /// </summary> - /// <seealso cref="UnityEngine.Timeline.SignalEmitter"/> - /// <seealso cref="UnityEngine.Timeline.SignalReceiver"/> - [AssetFileNameExtension("signal")] - public class SignalAsset : ScriptableObject - { - internal static event Action<SignalAsset> OnEnableCallback; - - void OnEnable() - { - if (OnEnableCallback != null) - OnEnableCallback(this); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs.meta deleted file mode 100644 index 437f4d3..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d6fa2d92fc1b3f34da284357edf89c3b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs deleted file mode 100644 index d4d4ca9..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <inheritdoc cref="UnityEngine.Timeline.IMarker" /> - /// <summary> - /// Marker that emits a signal to a SignalReceiver. - /// </summary> - /// A SignalEmitter emits a notification through the playable system. A SignalEmitter is used with a SignalReceiver and a SignalAsset. - /// <seealso cref="UnityEngine.Timeline.SignalAsset"/> - /// <seealso cref="UnityEngine.Timeline.SignalReceiver"/> - [Serializable] - [CustomStyle("SignalEmitter")] - [ExcludeFromPreset] - public class SignalEmitter : Marker, INotification, INotificationOptionProvider - { - [SerializeField] bool m_Retroactive; - [SerializeField] bool m_EmitOnce; - [SerializeField] SignalAsset m_Asset; - - /// <summary> - /// Use retroactive to emit the signal if playback starts after the SignalEmitter time. - /// </summary> - public bool retroactive - { - get { return m_Retroactive; } - set { m_Retroactive = value; } - } - - /// <summary> - /// Use emitOnce to emit this signal once during loops. - /// </summary> - public bool emitOnce - { - get { return m_EmitOnce; } - set { m_EmitOnce = value; } - } - - /// <summary> - /// Asset representing the signal being emitted. - /// </summary> - public SignalAsset asset - { - get { return m_Asset; } - set { m_Asset = value; } - } - - PropertyName INotification.id - { - get - { - if (m_Asset != null) - { - return new PropertyName(m_Asset.name); - } - return new PropertyName(string.Empty); - } - } - - NotificationFlags INotificationOptionProvider.flags - { - get - { - return (retroactive ? NotificationFlags.Retroactive : default(NotificationFlags)) | - (emitOnce ? NotificationFlags.TriggerOnce : default(NotificationFlags)) | - NotificationFlags.TriggerInEditMode; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs.meta deleted file mode 100644 index f14c8a3..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalEmitter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 15c38f6fa1940124db1ab7f6fe7268d1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs deleted file mode 100644 index 4e7564a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs +++ /dev/null @@ -1,248 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Events; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Listens for emitted signals and reacts depending on its defined reactions. - /// </summary> - /// A SignalReceiver contains a list of reactions. Each reaction is bound to a SignalAsset. - /// When a SignalEmitter emits a signal, the SignalReceiver invokes the corresponding reaction. - /// <seealso cref="UnityEngine.Timeline.SignalEmitter"/> - /// <seealso cref="UnityEngine.Timeline.SignalAsset"/> - public class SignalReceiver : MonoBehaviour, INotificationReceiver - { - [SerializeField] - EventKeyValue m_Events = new EventKeyValue(); - - /// <summary> - /// Called when a notification is sent. - /// </summary> - public void OnNotify(Playable origin, INotification notification, object context) - { - var signal = notification as SignalEmitter; - if (signal != null && signal.asset != null) - { - UnityEvent evt; - if (m_Events.TryGetValue(signal.asset, out evt) && evt != null) - { - evt.Invoke(); - } - } - } - - /// <summary> - /// Defines a new reaction for a SignalAsset. - /// </summary> - /// <param name="asset">The SignalAsset for which the reaction is being defined.</param> - /// <param name="reaction">The UnityEvent that describes the reaction.</param> - /// <exception cref="ArgumentNullException">Thrown when the asset is null.</exception> - /// <exception cref="ArgumentException">Thrown when the SignalAsset is already registered with this receiver.</exception> - public void AddReaction(SignalAsset asset, UnityEvent reaction) - { - if (asset == null) - throw new ArgumentNullException("asset"); - - if (m_Events.signals.Contains(asset)) - throw new ArgumentException("SignalAsset already used."); - m_Events.Append(asset, reaction); - } - - /// <summary> - /// Appends a null SignalAsset with a reaction specified by the UnityEvent. - /// </summary> - /// <param name="reaction">The new reaction to be appended.</param> - /// <returns>The index of the appended reaction.</returns> - /// <remarks>Multiple null assets are valid.</remarks> - public int AddEmptyReaction(UnityEvent reaction) - { - m_Events.Append(null, reaction); - return m_Events.events.Count - 1; - } - - /// <summary> - /// Removes the first occurrence of a SignalAsset. - /// </summary> - /// <param name="asset">The SignalAsset to be removed.</param> - public void Remove(SignalAsset asset) - { - if (!m_Events.signals.Contains(asset)) - { - throw new ArgumentException("The SignalAsset is not registered with this receiver."); - } - - m_Events.Remove(asset); - } - - /// <summary> - /// Gets a list of all registered SignalAssets. - /// </summary> - /// <returns>Returns a list of SignalAssets.</returns> - public IEnumerable<SignalAsset> GetRegisteredSignals() - { - return m_Events.signals; - } - - /// <summary> - /// Gets the first UnityEvent associated with a SignalAsset. - /// </summary> - /// <param name="key">A SignalAsset defining the signal.</param> - /// <returns>Returns the reaction associated with a SignalAsset. Returns null if the signal asset does not exist.</returns> - public UnityEvent GetReaction(SignalAsset key) - { - UnityEvent ret; - if (m_Events.TryGetValue(key, out ret)) - { - return ret; - } - - return null; - } - - /// <summary> - /// Returns the count of registered SignalAssets. - /// </summary> - /// <returns></returns> - public int Count() - { - return m_Events.signals.Count; - } - - /// <summary> - /// Replaces the SignalAsset associated with a reaction at a specific index. - /// </summary> - /// <param name="idx">The index of the reaction.</param> - /// <param name="newKey">The replacement SignalAsset.</param> - /// <exception cref="ArgumentException">Thrown when the replacement SignalAsset is already registered to this SignalReceiver.</exception> - /// <remarks>The new SignalAsset can be null.</remarks> - public void ChangeSignalAtIndex(int idx, SignalAsset newKey) - { - if (idx < 0 || idx > m_Events.signals.Count - 1) - throw new IndexOutOfRangeException(); - - if (m_Events.signals[idx] == newKey) - return; - var alreadyUsed = m_Events.signals.Contains(newKey); - if (newKey == null || m_Events.signals[idx] == null || !alreadyUsed) - m_Events.signals[idx] = newKey; - - if (newKey != null && alreadyUsed) - throw new ArgumentException("SignalAsset already used."); - } - - /// <summary> - /// Removes the SignalAsset and reaction at a specific index. - /// </summary> - /// <param name="idx">The index of the SignalAsset to be removed.</param> - public void RemoveAtIndex(int idx) - { - if (idx < 0 || idx > m_Events.signals.Count - 1) - throw new IndexOutOfRangeException(); - m_Events.Remove(idx); - } - - /// <summary> - /// Replaces the reaction at a specific index with a new UnityEvent. - /// </summary> - /// <param name="idx">The index of the reaction to be replaced.</param> - /// <param name="reaction">The replacement reaction.</param> - /// <exception cref="ArgumentNullException">Thrown when the replacement reaction is null.</exception> - public void ChangeReactionAtIndex(int idx, UnityEvent reaction) - { - if (idx < 0 || idx > m_Events.events.Count - 1) - throw new IndexOutOfRangeException(); - - m_Events.events[idx] = reaction; - } - - /// <summary> - /// Gets the reaction at a specific index. - /// </summary> - /// <param name="idx">The index of the reaction.</param> - /// <returns>Returns a reaction.</returns> - public UnityEvent GetReactionAtIndex(int idx) - { - if (idx < 0 || idx > m_Events.events.Count - 1) - throw new IndexOutOfRangeException(); - return m_Events.events[idx]; - } - - /// <summary> - /// Gets the SignalAsset at a specific index - /// </summary> - /// <param name="idx">The index of the SignalAsset.</param> - /// <returns>Returns a SignalAsset.</returns> - public SignalAsset GetSignalAssetAtIndex(int idx) - { - if (idx < 0 || idx > m_Events.signals.Count - 1) - throw new IndexOutOfRangeException(); - return m_Events.signals[idx]; - } - - // Required by Unity for the MonoBehaviour to have an enabled state - private void OnEnable() - { - } - - [Serializable] - class EventKeyValue - { - [SerializeField] - List<SignalAsset> m_Signals = new List<SignalAsset>(); - - [SerializeField, CustomSignalEventDrawer] - List<UnityEvent> m_Events = new List<UnityEvent>(); - - public bool TryGetValue(SignalAsset key, out UnityEvent value) - { - var index = m_Signals.IndexOf(key); - if (index != -1) - { - value = m_Events[index]; - return true; - } - - value = null; - return false; - } - - public void Append(SignalAsset key, UnityEvent value) - { - m_Signals.Add(key); - m_Events.Add(value); - } - - public void Remove(int idx) - { - if (idx != -1) - { - m_Signals.RemoveAt(idx); - m_Events.RemoveAt(idx); - } - } - - public void Remove(SignalAsset key) - { - var idx = m_Signals.IndexOf(key); - if (idx != -1) - { - m_Signals.RemoveAt(idx); - m_Events.RemoveAt(idx); - } - } - - public List<SignalAsset> signals - { - get { return m_Signals; } - } - - public List<UnityEvent> events - { - get { return m_Events; } - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs.meta deleted file mode 100644 index 8d08ff6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Events/Signals/SignalReceiver.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e52de21a22b6dd44c9cc19f810c65059 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions.meta deleted file mode 100644 index d78ad19..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6c61ba0c209bcc74f83e3650039ebdf9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs deleted file mode 100644 index 87eec1b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Timeline; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Extension methods for TrackAssets - /// </summary> - public static class TrackAssetExtensions - { - /// <summary> - /// Gets the GroupTrack this track belongs to. - /// </summary> - /// <param name="asset">The track asset to find the group of</param> - /// <returns>The parent GroupTrack or null if the Track is an override track, or root track.</returns> - public static GroupTrack GetGroup(this TrackAsset asset) - { - if (asset == null) - return null; - - return asset.parent as GroupTrack; - } - - /// <summary> - /// Assigns the track to the specified group track. - /// </summary> - /// <param name="asset">The track to assign.</param> - /// <param name="group">The GroupTrack to assign the track to.</param> - /// <remarks> - /// Does not support assigning to a group in a different timeline. - /// </remarks> - public static void SetGroup(this TrackAsset asset, GroupTrack group) - { - const string undoString = "Reparent"; - - if (asset == null || asset == group || asset.parent == group) - return; - - if (group != null && asset.timelineAsset != group.timelineAsset) - throw new InvalidOperationException("Cannot assign to a group in a different timeline"); - - - TimelineUndo.PushUndo(asset, undoString); - - var timeline = asset.timelineAsset; - var parentTrack = asset.parent as TrackAsset; - var parentTimeline = asset.parent as TimelineAsset; - if (parentTrack != null || parentTimeline != null) - { - TimelineUndo.PushUndo(asset.parent, undoString); - if (parentTimeline != null) - { - parentTimeline.RemoveTrack(asset); - } - else - { - parentTrack.RemoveSubTrack(asset); - } - } - - if (group == null) - { - TimelineUndo.PushUndo(timeline, undoString); - asset.parent = asset.timelineAsset; - timeline.AddTrackInternal(asset); - } - else - { - TimelineUndo.PushUndo(group, undoString); - group.AddChild(asset); - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs.meta deleted file mode 100644 index 823e94a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d3721d5c6afa8e545995dfaada328476 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs deleted file mode 100644 index a6d8a7d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A group track is a container that allows tracks to be arranged in a hierarchical manner. - /// </summary> - [Serializable] - [TrackClipType(typeof(TrackAsset))] - [SupportsChildTracks] - public class GroupTrack : TrackAsset - { - internal override bool CanCompileClips() - { - return false; - } - - /// <inheritdoc /> - public override IEnumerable<PlayableBinding> outputs - { - get { return PlayableBinding.None; } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs.meta deleted file mode 100644 index 89aac74..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/GroupTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d0fc6f5187a81dc47999eefade6f0935 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs deleted file mode 100644 index ff7d0e4..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs +++ /dev/null @@ -1,20 +0,0 @@ -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Implement this interface on a TrackAsset derived class to support layers - /// </summary> - public interface ILayerable - { - /// <summary> - /// Creates a mixer that blends track mixers. - /// </summary> - /// <param name="graph">The graph where the mixer playable will be added.</param> - /// <param name="go">The GameObject that requested the graph.</param> - /// <param name="inputCount">The number of inputs on the mixer. There should be an input for each playable from each clip.</param> - /// <returns>Returns a playable that is used as a mixer. If this method returns Playable.Null, it indicates that a layer mixer is not needed. In this case, a single track mixer blends all playables generated from all layers.</returns> - Playable CreateLayerMixer(PlayableGraph graph, GameObject go, int inputCount); - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs.meta deleted file mode 100644 index b585e7e..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/ILayerable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1dc9fdfe61a6a8749a0f6b89b45e887d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables.meta deleted file mode 100644 index a162894..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8b7d06780fca6fc4384580d3ebed9219 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs deleted file mode 100644 index 3efb818..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs +++ /dev/null @@ -1,140 +0,0 @@ -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable that controls the active state of a GameObject. - /// </summary> - public class ActivationControlPlayable : PlayableBehaviour - { - /// <summary> - /// The state of a GameObject's activeness when a PlayableGraph stops. - /// </summary> - public enum PostPlaybackState - { - /// <summary> - /// Set the GameObject to active when the PlayableGraph stops. - /// </summary> - Active, - - /// <summary> - /// Set the GameObject to inactive when the [[PlayableGraph]] stops. - /// </summary> - Inactive, - - /// <summary> - /// Revert the GameObject to the active state it was before the [[PlayableGraph]] started. - /// </summary> - Revert - } - - enum InitialState - { - Unset, - Active, - Inactive - } - - public GameObject gameObject = null; - public PostPlaybackState postPlayback = PostPlaybackState.Revert; - InitialState m_InitialState; - - /// <summary> - /// Creates a ScriptPlayable with an ActivationControlPlayable behaviour attached - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable</param> - /// <param name="gameObject">The GameObject that triggered the graph build</param> - /// <param name="postPlaybackState">The state to leave the gameObject after the graph is stopped</param> - /// <returns>Returns a playable that controls activation of a game object</returns> - public static ScriptPlayable<ActivationControlPlayable> Create(PlayableGraph graph, GameObject gameObject, ActivationControlPlayable.PostPlaybackState postPlaybackState) - { - if (gameObject == null) - return ScriptPlayable<ActivationControlPlayable>.Null; - - var handle = ScriptPlayable<ActivationControlPlayable>.Create(graph); - var playable = handle.GetBehaviour(); - playable.gameObject = gameObject; - playable.postPlayback = postPlaybackState; - - return handle; - } - - /// <summary> - /// This function is called when the Playable play state is changed to Playables.PlayState.Playing. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">The information about this frame</param> - public override void OnBehaviourPlay(Playable playable, FrameData info) - { - if (gameObject == null) - return; - - gameObject.SetActive(true); - } - - /// <summary> - /// This function is called when the Playable play state is changed to PlayState.Paused. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">The information about this frame</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - // OnBehaviourPause can be called if the graph is stopped for a variety of reasons - // the effectivePlayState will test if the pause is due to the clip being out of bounds - if (gameObject != null && info.effectivePlayState == PlayState.Paused) - { - gameObject.SetActive(false); - } - } - - /// <summary> - /// This function is called during the ProcessFrame phase of the PlayableGraph. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - /// <param name="userData">unused</param> - public override void ProcessFrame(Playable playable, FrameData info, object userData) - { - if (gameObject != null)// && !gameObject.activeSelf) - gameObject.SetActive(true); - } - - /// <summary> - /// This function is called when the PlayableGraph that owns this PlayableBehaviour starts. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - public override void OnGraphStart(Playable playable) - { - if (gameObject != null) - { - if (m_InitialState == InitialState.Unset) - m_InitialState = gameObject.activeSelf ? InitialState.Active : InitialState.Inactive; - } - } - - /// <summary> - /// This function is called when the Playable that owns the PlayableBehaviour is destroyed. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - public override void OnPlayableDestroy(Playable playable) - { - if (gameObject == null || m_InitialState == InitialState.Unset) - return; - - switch (postPlayback) - { - case PostPlaybackState.Active: - gameObject.SetActive(true); - break; - - case PostPlaybackState.Inactive: - gameObject.SetActive(false); - break; - - case PostPlaybackState.Revert: - gameObject.SetActive(m_InitialState == InitialState.Active); - break; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs.meta deleted file mode 100644 index a7763a6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ActivationControlPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d20e4e177b86a2843805dd3894f41b42 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs deleted file mode 100644 index 0157958..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// This class is deprecated. It is recommended to use Playable Asset and Playable Behaviour derived classes instead. - /// </summary> - [Serializable] - [Obsolete("For best performance use PlayableAsset and PlayableBehaviour.")] - public class BasicPlayableBehaviour : ScriptableObject, IPlayableAsset, IPlayableBehaviour - { - public BasicPlayableBehaviour() {} - - /// <summary> - /// The playback duration in seconds of the instantiated Playable. - /// </summary> - public virtual double duration { get { return PlayableBinding.DefaultDuration; } } - - /// <summary> - ///A description of the outputs of the instantiated Playable. - /// </summary> - public virtual IEnumerable<PlayableBinding> outputs { get { return PlayableBinding.None; } } - - /// <summary> - /// <para>This function is called when the PlayableGraph that owns this PlayableBehaviour starts.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - public virtual void OnGraphStart(Playable playable) {} - - /// <summary> - /// <para>This function is called when the PlayableGraph that owns this PlayableBehaviour stops.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - public virtual void OnGraphStop(Playable playable) {} - - /// <summary> - /// <para>This function is called when the Playable that owns the PlayableBehaviour is created.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - public virtual void OnPlayableCreate(Playable playable) {} - - /// <summary> - /// <para>This function is called when the Playable that owns the PlayableBehaviour is destroyed.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - public virtual void OnPlayableDestroy(Playable playable) {} - - /// <summary> - /// <para>This function is called when the Playable play state is changed to Playables.PlayState.Playing.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public virtual void OnBehaviourPlay(Playable playable, FrameData info) {} - - /// <summary> - /// <para>This function is called when the Playable play state is changed to Playables.PlayState.Paused.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public virtual void OnBehaviourPause(Playable playable, FrameData info) {} - - /// <summary> - /// <para>This function is called during the PrepareFrame phase of the PlayableGraph.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public virtual void PrepareFrame(Playable playable, FrameData info) {} - - /// <summary> - /// <para>This function is called during the ProcessFrame phase of the PlayableGraph.</para> - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - /// <param name="playerData">The user data of the ScriptPlayableOutput that initiated the process pass.</param> - public virtual void ProcessFrame(Playable playable, FrameData info, object playerData) {} - - /// <summary> - /// Implement this method to have your asset inject playables into the given graph. - /// </summary> - /// <param name="graph">The graph to inject playables into.</param> - /// <param name="owner">The game object which initiated the build.</param> - /// <returns>The playable injected into the graph, or the root playable if multiple playables are injected.</returns> - public virtual Playable CreatePlayable(PlayableGraph graph, GameObject owner) - { - return ScriptPlayable<BasicPlayableBehaviour>.Create(graph, this); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs.meta deleted file mode 100644 index 414366e..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/BasicScriptPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fe03a7b0ba57a4d488b6c327ae16c335 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs deleted file mode 100644 index e619617..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable Behaviour used to control a PlayableDirector. - /// </summary> - /// <remarks> - /// This playable is used to control other PlayableDirector components from a Timeline sequence. - /// </remarks> - public class DirectorControlPlayable : PlayableBehaviour - { - /// <summary> - /// The PlayableDirector being controlled by this PlayableBehaviour - /// </summary> - public PlayableDirector director; - - private bool m_SyncTime = false; - - private double m_AssetDuration = double.MaxValue; - - /// <summary> - /// Creates a Playable with a DirectorControlPlayable attached - /// </summary> - /// <param name="graph">The graph to inject the playable into</param> - /// <param name="director">The director to control</param> - /// <returns>Returns a Playable with a DirectorControlPlayable attached</returns> - public static ScriptPlayable<DirectorControlPlayable> Create(PlayableGraph graph, PlayableDirector director) - { - if (director == null) - return ScriptPlayable<DirectorControlPlayable>.Null; - - var handle = ScriptPlayable<DirectorControlPlayable>.Create(graph); - handle.GetBehaviour().director = director; - -#if UNITY_EDITOR - if (!Application.isPlaying && UnityEditor.PrefabUtility.IsPartOfPrefabInstance(director)) - UnityEditor.PrefabUtility.prefabInstanceUpdated += handle.GetBehaviour().OnPrefabUpdated; -#endif - - return handle; - } - - public override void OnPlayableDestroy(Playable playable) - { -#if UNITY_EDITOR - if (!Application.isPlaying) - UnityEditor.PrefabUtility.prefabInstanceUpdated -= OnPrefabUpdated; -#endif - if (director != null && director.playableAsset != null) - director.Stop(); - } - - /// <summary> - /// This function is called during the PrepareFrame phase of the PlayableGraph. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void PrepareFrame(Playable playable, FrameData info) - { - if (director == null || !director.isActiveAndEnabled || director.playableAsset == null) - return; - - // resync the time on an evaluate or a time jump (caused by loops, or some setTime calls) - m_SyncTime |= (info.evaluationType == FrameData.EvaluationType.Evaluate) || - DetectDiscontinuity(playable, info); - - SyncSpeed(info.effectiveSpeed); - SyncPlayState(playable.GetGraph(), playable.GetTime()); - } - - /// <summary> - /// This function is called when the Playable play state is changed to Playables.PlayState.Playing. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPlay(Playable playable, FrameData info) - { - m_SyncTime = true; - - if (director != null && director.playableAsset != null) - m_AssetDuration = director.playableAsset.duration; - } - - /// <summary> - /// This function is called when the Playable play state is changed to PlayState.Paused. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - if (director != null && director.playableAsset != null) - { - if (info.effectivePlayState == PlayState.Playing) // graph was paused - director.Pause(); - else - director.Stop(); - } - } - - /// <summary> - /// This function is called during the ProcessFrame phase of the PlayableGraph. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - /// <param name="playerData">unused</param> - public override void ProcessFrame(Playable playable, FrameData info, object playerData) - { - if (director == null || !director.isActiveAndEnabled || director.playableAsset == null) - return; - - if (m_SyncTime || DetectOutOfSync(playable)) - { - UpdateTime(playable); - director.Evaluate(); - } - - m_SyncTime = false; - } - -#if UNITY_EDITOR - void OnPrefabUpdated(GameObject go) - { - // When the prefab asset is updated, we rebuild the graph to reflect the changes in editor - if (UnityEditor.PrefabUtility.GetRootGameObject(director) == go) - director.RebuildGraph(); - } - -#endif - - void SyncSpeed(double speed) - { - if (director.playableGraph.IsValid()) - { - int roots = director.playableGraph.GetRootPlayableCount(); - for (int i = 0; i < roots; i++) - { - var rootPlayable = director.playableGraph.GetRootPlayable(i); - if (rootPlayable.IsValid()) - { - rootPlayable.SetSpeed(speed); - } - } - } - } - - void SyncPlayState(PlayableGraph graph, double playableTime) - { - bool expectedFinished = (playableTime >= m_AssetDuration) && director.extrapolationMode == DirectorWrapMode.None; - if (graph.IsPlaying() && !expectedFinished) - director.Play(); - else - director.Pause(); - } - - bool DetectDiscontinuity(Playable playable, FrameData info) - { - return Math.Abs(playable.GetTime() - playable.GetPreviousTime() - info.m_DeltaTime * info.m_EffectiveSpeed) > DiscreteTime.tickValue; - } - - bool DetectOutOfSync(Playable playable) - { - double expectedTime = playable.GetTime(); - if (playable.GetTime() >= m_AssetDuration) - { - if (director.extrapolationMode == DirectorWrapMode.None) - return false; - else if (director.extrapolationMode == DirectorWrapMode.Hold) - expectedTime = m_AssetDuration; - else if (m_AssetDuration > float.Epsilon) // loop - expectedTime = expectedTime % m_AssetDuration; - } - - if (!Mathf.Approximately((float)expectedTime, (float)director.time)) - { -#if UNITY_EDITOR - double lastDelta = playable.GetTime() - playable.GetPreviousTime(); - if (UnityEditor.Unsupported.IsDeveloperBuild()) - Debug.LogWarningFormat("Internal Warning - Control track desync detected on {2} ({0:F10} vs {1:F10} with delta {3:F10}). Time will be resynchronized. Known to happen with nested control tracks", playable.GetTime(), director.time, director.name, lastDelta); -#endif - return true; - } - return false; - } - - // We need to handle loop modes explicitly since we are setting the time directly - void UpdateTime(Playable playable) - { - double duration = Math.Max(0.1, director.playableAsset.duration); - switch (director.extrapolationMode) - { - case DirectorWrapMode.Hold: - director.time = Math.Min(duration, Math.Max(0, playable.GetTime())); - break; - case DirectorWrapMode.Loop: - director.time = Math.Max(0, playable.GetTime() % duration); - break; - case DirectorWrapMode.None: - director.time = playable.GetTime(); - break; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs.meta deleted file mode 100644 index 5f71a6f..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/DirectorControlPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: be156cc527d606b4aaac403e9843186e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs deleted file mode 100644 index 5d986ae..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace UnityEngine.Timeline -{ - /// <summary> - /// Interface that can be implemented by MonoBehaviours indicating that they receive time-related control calls from a PlayableGraph. - /// </summary> - /// <remarks> - /// Implementing this interface on MonoBehaviours attached to GameObjects under control by control-tracks will cause them to be notified when associated Timeline clips are active. - /// </remarks> - public interface ITimeControl - { - /// <summary> - /// Called each frame the Timeline clip is active. - /// </summary> - /// <param name="time">The local time of the associated Timeline clip.</param> - void SetTime(double time); - - /// <summary> - /// Called when the associated Timeline clip becomes active. - /// </summary> - void OnControlTimeStart(); - - /// <summary> - /// Called when the associated Timeline clip becomes deactivated. - /// </summary> - void OnControlTimeStop(); - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs.meta deleted file mode 100644 index 8d4a953..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ITimeControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5415c904c4fbc3e498253bc2866b37cd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs deleted file mode 100644 index a83fc8b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Use these flags to specify the notification behaviour. - /// </summary> - /// <see cref="UnityEngine.Playables.INotification"/> - [Flags] - [Serializable] - public enum NotificationFlags : short - { - /// <summary> - /// Use this flag to send the notification in Edit Mode. - /// </summary> - /// <remarks> - /// Sent on discontinuous jumps in time. - /// </remarks> - TriggerInEditMode = 1 << 0, - - /// <summary> - /// Use this flag to send the notification if playback starts after the notification time. - /// </summary> - Retroactive = 1 << 1, - - /// <summary> - /// Use this flag to send the notification only once when looping. - /// </summary> - TriggerOnce = 1 << 2, - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs.meta deleted file mode 100644 index 4eae696..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/NotificationFlags.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 983c76d87fb6f4f4597a526a4b2b5fd7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs deleted file mode 100644 index a513d7c..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs +++ /dev/null @@ -1,177 +0,0 @@ -using System; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable that synchronizes a particle system simulation. - /// </summary> - public class ParticleControlPlayable : PlayableBehaviour - { - const float kUnsetTime = -1; - float m_LastTime = kUnsetTime; - uint m_RandomSeed = 1; - - // particleSystem.time can not be relied on for an accurate time. It does not advance until a delta threshold is reached(fixedUpdate) and until the start delay has elapsed. - float m_SystemTime; - - /// <summary> - /// Creates a Playable with a ParticleControlPlayable behaviour attached - /// </summary> - /// <param name="graph">The PlayableGraph to inject the Playable into.</param> - /// <param name="component">The particle systtem to control</param> - /// <param name="randomSeed">A random seed to use for particle simulation</param> - /// <returns>Returns the created Playable.</returns> - public static ScriptPlayable<ParticleControlPlayable> Create(PlayableGraph graph, ParticleSystem component, uint randomSeed) - { - if (component == null) - return ScriptPlayable<ParticleControlPlayable>.Null; - - var handle = ScriptPlayable<ParticleControlPlayable>.Create(graph); - handle.GetBehaviour().Initialize(component, randomSeed); - return handle; - } - - /// <summary> - /// The particle system to control - /// </summary> - public ParticleSystem particleSystem { get; private set; } - - /// <summary> - /// Initializes the behaviour with a particle system and random seed. - /// </summary> - /// <param name="ps"></param> - /// <param name="randomSeed"></param> - public void Initialize(ParticleSystem ps, uint randomSeed) - { - m_RandomSeed = Math.Max(1, randomSeed); - particleSystem = ps; - m_SystemTime = 0; - SetRandomSeed(); - - #if UNITY_EDITOR - if (!Application.isPlaying && UnityEditor.PrefabUtility.IsPartOfPrefabInstance(ps)) - UnityEditor.PrefabUtility.prefabInstanceUpdated += OnPrefabUpdated; - #endif - } - - #if UNITY_EDITOR - /// <summary> - /// This function is called when the Playable that owns the PlayableBehaviour is destroyed. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - public override void OnPlayableDestroy(Playable playable) - { - if (!Application.isPlaying) - UnityEditor.PrefabUtility.prefabInstanceUpdated -= OnPrefabUpdated; - } - - void OnPrefabUpdated(GameObject go) - { - // When the instance is updated from, this will cause the next evaluate to resimulate. - if (UnityEditor.PrefabUtility.GetRootGameObject(particleSystem) == go) - m_LastTime = kUnsetTime; - } - - #endif - - void SetRandomSeed() - { - particleSystem.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); - var systems = particleSystem.gameObject.GetComponentsInChildren<ParticleSystem>(); - uint seed = m_RandomSeed; - foreach (var ps in systems) - { - // don't overwrite user set random seeds - if (ps.useAutoRandomSeed) - { - ps.useAutoRandomSeed = false; - ps.randomSeed = seed; - seed++; - } - } - } - - /// <summary> - /// This function is called during the PrepareFrame phase of the PlayableGraph. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="data">A FrameData structure that contains information about the current frame context.</param> - public override void PrepareFrame(Playable playable, FrameData data) - { - if (particleSystem == null || !particleSystem.gameObject.activeInHierarchy) - return; - - float localTime = (float)playable.GetTime(); - bool shouldUpdate = Mathf.Approximately(m_LastTime, kUnsetTime) || - !Mathf.Approximately(m_LastTime, localTime); - if (shouldUpdate) - { - float epsilon = Time.fixedDeltaTime * 0.5f; - float simTime = localTime; - float expectedDelta = simTime - m_LastTime; - - // The first iteration includes the start delay. Evaluate(particleSystem.randomSeed) is how the particle system generates the random value internally. - float startDelay = particleSystem.main.startDelay.Evaluate(particleSystem.randomSeed); - float particleSystemDurationLoop0 = particleSystem.main.duration + startDelay; - - // The particle system time does not include the start delay so we need to remove this for our own system time. - float expectedSystemTime = simTime > particleSystemDurationLoop0 ? m_SystemTime : m_SystemTime - startDelay; - - // if it's not looping, then the system time won't advance past the end of the duration - if (!particleSystem.main.loop) - expectedSystemTime = Math.Min(expectedSystemTime, particleSystem.main.duration); - - - // conditions for restart - bool restart = (simTime < m_LastTime) || // time went backwards - (simTime < epsilon) || // time is set to 0 - Mathf.Approximately(m_LastTime, kUnsetTime) || // object disabled - (expectedDelta > particleSystem.main.duration) || // large jump (bug workaround) - !(Mathf.Abs(expectedSystemTime - particleSystem.time) < Time.maximumParticleDeltaTime); // particle system isn't where we left it - if (restart) - { - // work around for a bug where simulate(simTime, true, true) doesn't work on loops - particleSystem.Simulate(0, true, true); - particleSystem.Simulate(simTime, true, false); - m_SystemTime = simTime; - } - else - { - // ps.time will wrap, so we need to account for that in computing delta time - float particleSystemDuration = simTime > particleSystemDurationLoop0 ? particleSystem.main.duration : particleSystemDurationLoop0; - float fracTime = simTime % particleSystemDuration; - float deltaTime = fracTime - m_SystemTime; - - if (deltaTime < -epsilon) // detect wrapping of ps.time - deltaTime = fracTime + particleSystemDurationLoop0 - m_SystemTime; - - particleSystem.Simulate(deltaTime, true, false); - m_SystemTime += deltaTime; - } - - m_LastTime = localTime; - } - } - - /// <summary> - /// This function is called when the Playable play state is changed to Playables.PlayState.Playing. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPlay(Playable playable, FrameData info) - { - m_LastTime = kUnsetTime; - } - - /// <summary> - /// This function is called when the Playable play state is changed to PlayState.Paused. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - m_LastTime = kUnsetTime; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs.meta deleted file mode 100644 index 33db5b9..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/ParticleControlPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f603edd7163537f44927ad2808147a25 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs deleted file mode 100644 index f84c9ff..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs +++ /dev/null @@ -1,158 +0,0 @@ -using System; -using UnityEngine.Playables; -using UnityEngine.SceneManagement; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Playable that controls and instantiates a Prefab. - /// </summary> - public class PrefabControlPlayable : PlayableBehaviour - { - GameObject m_Instance; - -#if UNITY_EDITOR - private bool m_IsActiveCached; -#endif - - /// <summary> - /// Creates a Playable with a PrefabControlPlayable behaviour attached - /// </summary> - /// <param name="graph">The PlayableGraph to inject the Playable into.</param> - /// <param name="prefabGameObject">The prefab to instantiate from</param> - /// <param name="parentTransform">Transform to parent instance to. Can be null.</param> - /// <returns>Returns a Playabe with PrefabControlPlayable behaviour attached.</returns> - public static ScriptPlayable<PrefabControlPlayable> Create(PlayableGraph graph, GameObject prefabGameObject, Transform parentTransform) - { - if (prefabGameObject == null) - return ScriptPlayable<PrefabControlPlayable>.Null; - - var handle = ScriptPlayable<PrefabControlPlayable>.Create(graph); - handle.GetBehaviour().Initialize(prefabGameObject, parentTransform); - return handle; - } - - /// <summary> - /// The instance of the prefab created by this behaviour - /// </summary> - public GameObject prefabInstance - { - get { return m_Instance; } - } - - /// <summary> - /// Initializes the behaviour with a prefab and parent transform - /// </summary> - /// <param name="prefabGameObject">The prefab to instantiate from</param> - /// <param name="parentTransform">Transform to parent instance to. Can be null.</param> - /// <returns>The created instance</returns> - public GameObject Initialize(GameObject prefabGameObject, Transform parentTransform) - { - if (prefabGameObject == null) - throw new ArgumentNullException("Prefab cannot be null"); - - if (m_Instance != null) - { - Debug.LogWarningFormat("Prefab Control Playable ({0}) has already been initialized with a Prefab ({1}).", prefabGameObject.name, m_Instance.name); - } - else - { - #if UNITY_EDITOR - if (!Application.isPlaying) - { - m_Instance = (GameObject)UnityEditor.PrefabUtility.InstantiatePrefab(prefabGameObject, parentTransform); - UnityEditor.PrefabUtility.prefabInstanceUpdated += OnPrefabUpdated; - } - else - #endif - { - m_Instance = Object.Instantiate(prefabGameObject, parentTransform, false); - } - m_Instance.name = prefabGameObject.name + " [Timeline]"; - m_Instance.SetActive(false); - SetHideFlagsRecursive(m_Instance); - } - return m_Instance; - } - - /// <summary> - /// This function is called when the Playable that owns the PlayableBehaviour is destroyed. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - public override void OnPlayableDestroy(Playable playable) - { - if (m_Instance) - { - if (Application.isPlaying) - Object.Destroy(m_Instance); - else - Object.DestroyImmediate(m_Instance); - } - -#if UNITY_EDITOR - UnityEditor.PrefabUtility.prefabInstanceUpdated -= OnPrefabUpdated; -#endif - } - - /// <summary> - /// This function is called when the Playable play state is changed to Playables.PlayState.Playing. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPlay(Playable playable, FrameData info) - { - if (m_Instance == null) - return; - - m_Instance.SetActive(true); - -#if UNITY_EDITOR - m_IsActiveCached = true; -#endif - } - - /// <summary> - /// This function is called when the Playable play state is changed to PlayState.Paused. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - // OnBehaviourPause can be called if the graph is stopped for a variety of reasons - // the effectivePlayState will test if the pause is due to the clip being out of bounds - if (m_Instance != null && info.effectivePlayState == PlayState.Paused) - { - m_Instance.SetActive(false); -#if UNITY_EDITOR - m_IsActiveCached = false; -#endif - } - } - -#if UNITY_EDITOR - void OnPrefabUpdated(GameObject go) - { - if (go == m_Instance) - { - SetHideFlagsRecursive(go); - go.SetActive(m_IsActiveCached); - } - } - -#endif - - static void SetHideFlagsRecursive(GameObject gameObject) - { - if (gameObject == null) - return; - - gameObject.hideFlags = HideFlags.DontSaveInBuild | HideFlags.DontSaveInEditor; - if (!Application.isPlaying) - gameObject.hideFlags |= HideFlags.HideInHierarchy; - foreach (Transform child in gameObject.transform) - { - SetHideFlagsRecursive(child.gameObject); - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs.meta deleted file mode 100644 index c148dc2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/PrefabControlPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 439c018cf4619e94d9a92110ce0aa188 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs deleted file mode 100644 index 68ec80d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs +++ /dev/null @@ -1,85 +0,0 @@ -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A PlayableBehaviour that manages a component that implements the ITimeControl interface - /// </summary> - public class TimeControlPlayable : PlayableBehaviour - { - ITimeControl m_timeControl; - - bool m_started; - - /// <summary> - /// Creates a Playable with a TimeControlPlayable behaviour attached - /// </summary> - /// <param name="graph">The PlayableGraph to inject the Playable into.</param> - /// <param name="timeControl"></param> - /// <returns></returns> - public static ScriptPlayable<TimeControlPlayable> Create(PlayableGraph graph, ITimeControl timeControl) - { - if (timeControl == null) - return ScriptPlayable<TimeControlPlayable>.Null; - - var handle = ScriptPlayable<TimeControlPlayable>.Create(graph); - handle.GetBehaviour().Initialize(timeControl); - return handle; - } - - /// <summary> - /// Initializes the behaviour - /// </summary> - /// <param name="timeControl">Component that implements the ITimeControl interface</param> - public void Initialize(ITimeControl timeControl) - { - m_timeControl = timeControl; - } - - /// <summary> - /// This function is called during the PrepareFrame phase of the PlayableGraph. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void PrepareFrame(Playable playable, FrameData info) - { - Debug.Assert(m_started, "PrepareFrame has been called without OnControlTimeStart being called first."); - if (m_timeControl != null) - m_timeControl.SetTime(playable.GetTime()); - } - - /// <summary> - /// This function is called when the Playable play state is changed to Playables.PlayState.Playing. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPlay(Playable playable, FrameData info) - { - if (m_timeControl == null) - return; - - if (!m_started) - { - m_timeControl.OnControlTimeStart(); - m_started = true; - } - } - - /// <summary> - /// This function is called when the Playable play state is changed to PlayState.Paused. - /// </summary> - /// <param name="playable">The playable this behaviour is attached to.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - if (m_timeControl == null) - return; - - if (m_started) - { - m_timeControl.OnControlTimeStop(); - m_started = false; - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs.meta deleted file mode 100644 index 5ce09ad..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeControlPlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1db879070d9a45f4c86cdf5e59616df5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs deleted file mode 100644 index 66a31d1..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs +++ /dev/null @@ -1,254 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Use this PlayableBehaviour to send notifications at a given time. - /// </summary> - /// <seealso cref="UnityEngine.Timeline.NotificationFlags"/> - public class TimeNotificationBehaviour : PlayableBehaviour - { - struct NotificationEntry - { - public double time; - public INotification payload; - public bool notificationFired; - public NotificationFlags flags; - - public bool triggerInEditor - { - get { return (flags & NotificationFlags.TriggerInEditMode) != 0; } - } - public bool prewarm - { - get { return (flags & NotificationFlags.Retroactive) != 0; } - } - public bool triggerOnce - { - get { return (flags & NotificationFlags.TriggerOnce) != 0; } - } - } - - readonly List<NotificationEntry> m_Notifications = new List<NotificationEntry>(); - double m_PreviousTime; - bool m_NeedSortNotifications; - - Playable m_TimeSource; - - /// <summary> - /// Sets an optional Playable that provides duration and Wrap mode information. - /// </summary> - /// <remarks> - /// timeSource is optional. By default, the duration and Wrap mode will come from the current Playable. - /// </remarks> - public Playable timeSource - { - set { m_TimeSource = value; } - } - - /// <summary> - /// Creates and initializes a ScriptPlayable with a TimeNotificationBehaviour. - /// </summary> - /// <param name="graph">The playable graph.</param> - /// <param name="duration">The duration of the playable.</param> - /// <param name="loopMode">The loop mode of the playable.</param> - /// <returns>A new TimeNotificationBehaviour linked to the PlayableGraph.</returns> - public static ScriptPlayable<TimeNotificationBehaviour> Create(PlayableGraph graph, double duration, DirectorWrapMode loopMode) - { - var notificationsPlayable = ScriptPlayable<TimeNotificationBehaviour>.Create(graph); - notificationsPlayable.SetDuration(duration); - notificationsPlayable.SetTimeWrapMode(loopMode); - notificationsPlayable.SetPropagateSetTime(true); - return notificationsPlayable; - } - - /// <summary> - /// Adds a notification to be sent with flags, at a specific time. - /// </summary> - /// <param name="time">The time to send the notification.</param> - /// <param name="payload">The notification.</param> - /// <param name="flags">The notification flags that determine the notification behaviour. This parameter is set to Retroactive by default.</param> - /// <seealso cref="UnityEngine.Timeline.NotificationFlags"/> - public void AddNotification(double time, INotification payload, NotificationFlags flags = NotificationFlags.Retroactive) - { - m_Notifications.Add(new NotificationEntry - { - time = time, - payload = payload, - flags = flags - }); - m_NeedSortNotifications = true; - } - - /// <summary> - /// This method is called when the PlayableGraph that owns this PlayableBehaviour starts. - /// </summary> - /// <param name="playable">The reference to the playable associated with this PlayableBehaviour.</param> - public override void OnGraphStart(Playable playable) - { - SortNotifications(); - for (var i = 0; i < m_Notifications.Count; i++) - { - var notification = m_Notifications[i]; - notification.notificationFired = false; - m_Notifications[i] = notification; - } - - m_PreviousTime = playable.GetTime(); - } - - /// <summary> - /// This method is called when the Playable play state is changed to PlayState.Paused - /// </summary> - /// <param name="playable">The reference to the playable associated with this PlayableBehaviour.</param> - /// <param name="info">Playable context information such as weight, evaluationType, and so on.</param> - public override void OnBehaviourPause(Playable playable, FrameData info) - { - if (playable.IsDone()) - { - SortNotifications(); - for (var i = 0; i < m_Notifications.Count; i++) - { - var e = m_Notifications[i]; - if (!e.notificationFired) - { - var duration = playable.GetDuration(); - var canTrigger = m_PreviousTime <= e.time && e.time <= duration; - if (canTrigger) - { - Trigger_internal(playable, info.output, ref e); - m_Notifications[i] = e; - } - } - } - } - } - - /// <summary> - /// This method is called during the PrepareFrame phase of the PlayableGraph. - /// </summary> - /// <remarks> - /// Called once before processing starts. - /// </remarks> - /// <param name="playable">The reference to the playable associated with this PlayableBehaviour.</param> - /// <param name="info">Playable context information such as weight, evaluationType, and so on.</param> - public override void PrepareFrame(Playable playable, FrameData info) - { - // Never trigger on scrub - if (info.evaluationType == FrameData.EvaluationType.Evaluate) - { - return; - } - - SyncDurationWithExternalSource(playable); - SortNotifications(); - var currentTime = playable.GetTime(); - - // Fire notifications from previousTime till the end - if (info.timeLooped) - { - var duration = playable.GetDuration(); - TriggerNotificationsInRange(m_PreviousTime, duration, info, playable, true); - var dx = playable.GetDuration() - m_PreviousTime; - var nFullTimelines = (int)((info.deltaTime * info.effectiveSpeed - dx) / playable.GetDuration()); - for (var i = 0; i < nFullTimelines; i++) - { - TriggerNotificationsInRange(0, duration, info, playable, false); - } - TriggerNotificationsInRange(0, currentTime, info, playable, false); - } - else - { - var pt = playable.GetTime(); - TriggerNotificationsInRange(m_PreviousTime, pt, info, - playable, true); - } - - for (var i = 0; i < m_Notifications.Count; ++i) - { - var e = m_Notifications[i]; - if (e.notificationFired && CanRestoreNotification(e, info, currentTime, m_PreviousTime)) - { - Restore_internal(ref e); - m_Notifications[i] = e; - } - } - - m_PreviousTime = playable.GetTime(); - } - - void SortNotifications() - { - if (m_NeedSortNotifications) - { - m_Notifications.Sort((x, y) => x.time.CompareTo(y.time)); - m_NeedSortNotifications = false; - } - } - - static bool CanRestoreNotification(NotificationEntry e, FrameData info, double currentTime, double previousTime) - { - if (e.triggerOnce) - return false; - if (info.timeLooped) - return true; - - //case 1111595: restore the notification if the time is manually set before it - return previousTime > currentTime && currentTime <= e.time; - } - - void TriggerNotificationsInRange(double start, double end, FrameData info, Playable playable, bool checkState) - { - if (start <= end) - { - var playMode = Application.isPlaying; - for (var i = 0; i < m_Notifications.Count; i++) - { - var e = m_Notifications[i]; - if (e.notificationFired && (checkState || e.triggerOnce)) - continue; - - var notificationTime = e.time; - if (e.prewarm && notificationTime < end && (e.triggerInEditor || playMode)) - { - Trigger_internal(playable, info.output, ref e); - m_Notifications[i] = e; - } - else - { - if (notificationTime < start || notificationTime > end) - continue; - - if (e.triggerInEditor || playMode) - { - Trigger_internal(playable, info.output, ref e); - m_Notifications[i] = e; - } - } - } - } - } - - void SyncDurationWithExternalSource(Playable playable) - { - if (m_TimeSource.IsValid()) - { - playable.SetDuration(m_TimeSource.GetDuration()); - playable.SetTimeWrapMode(m_TimeSource.GetTimeWrapMode()); - } - } - - static void Trigger_internal(Playable playable, PlayableOutput output, ref NotificationEntry e) - { - output.PushNotification(playable, e.payload); - e.notificationFired = true; - } - - static void Restore_internal(ref NotificationEntry e) - { - e.notificationFired = false; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs.meta deleted file mode 100644 index 593b6c2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Playables/TimeNotificationBehaviour.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: afeb55855d7a63b45ba6f8bd97599202 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties.meta deleted file mode 100644 index d06db75..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ff97302ee78d6ad478b433ec557ee303 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs deleted file mode 100644 index 1eaacad..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly: AssemblyTitle("UnityEngine.Timeline")] -[assembly: AssemblyDescription("Unity Timeline")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Unity Technologies")] -[assembly: AssemblyProduct("UnityEngine.Timeline")] -[assembly: AssemblyCopyright("Copyright � 2016")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: InternalsVisibleTo("Unity.Timeline.Editor")] -[assembly: ComVisible(false)] -#if UNITY_EDITOR // RuntimeEditor version -[assembly: Guid("844F8153-91DB-42D4-9455-CBF1A7BFC434")] -#else // Runtime version -[assembly: Guid("6A10B290-9283-487F-913B-00D94CD3FAF5")] -#endif -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: InternalsVisibleTo("Assembly-CSharp-testable")] -[assembly: InternalsVisibleTo("Assembly-CSharp-Editor-testable")] -[assembly: InternalsVisibleTo("Unity.Timeline.EditorTests")] -[assembly: InternalsVisibleTo("Unity.Timeline.Tests")] -[assembly: InternalsVisibleTo("Unity.Timeline.Tests.Common")] -[assembly: InternalsVisibleTo("Unity.Timeline.Tests.Performance")] -[assembly: InternalsVisibleTo("Unity.Timeline.Tests.Performance.Editor")] diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs.meta deleted file mode 100644 index 01b8128..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Properties/AssemblyInfo.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0bb74b1c097396c49b1691e6a938f814 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting.meta deleted file mode 100644 index fe679ff..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bdb4f6935641b574b984da8dc27cab45 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs deleted file mode 100644 index e785cbf..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A PlayableTrack is a track whose clips are custom playables. - /// </summary> - /// <remarks> - /// This is a track that can contain PlayableAssets that are found in the project and do not have their own specified track type. - /// </remarks> - [Serializable] - public class PlayableTrack : TrackAsset - { - /// <inheritdoc /> - protected override void OnCreateClip(TimelineClip clip) - { - if (clip.asset != null) - clip.displayName = clip.asset.GetType().Name; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs.meta deleted file mode 100644 index 0129ea2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Scripting/PlayableTrack.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 82cd92ffc29383742932b27ca414c80f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs deleted file mode 100644 index ac2b4c2..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - public partial class TimelineAsset - { - [Obsolete("MediaType has been deprecated. It is no longer required, and will be removed in a future release.", false)] - public enum MediaType - { - Animation, - Audio, - Texture = 2, - [Obsolete("Use Texture MediaType instead. (UnityUpgradable) -> UnityEngine.Timeline.TimelineAsset/MediaType.Texture", false)] Video = 2, - Script, - Hybrid, - Group - } - } - - // Defines the type of a track - [AttributeUsage(AttributeTargets.Class)] - [Obsolete("TrackMediaType has been deprecated. It is no longer required, and will be removed in a future release.", false)] - public class TrackMediaType : Attribute - { - public readonly TimelineAsset.MediaType m_MediaType; - - public TrackMediaType(TimelineAsset.MediaType mt) - { - m_MediaType = mt; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs.meta deleted file mode 100644 index cd16af0..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Timeline.deprecated.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7748a1d3701ac824ea7f366ba0388f5d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs deleted file mode 100644 index ca2572e..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs +++ /dev/null @@ -1,455 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A PlayableAsset that represents a timeline. - /// </summary> - [ExcludeFromPreset] - [Serializable] - public partial class TimelineAsset : PlayableAsset, ISerializationCallbackReceiver, ITimelineClipAsset, IPropertyPreview - { - /// <summary> - /// How the duration of the timeline is determined. - /// </summary> - public enum DurationMode - { - /// <summary> - /// The duration of the timeline is determined based on the clips present. - /// </summary> - BasedOnClips, - /// <summary> - /// The duration of the timeline is a fixed length. - /// </summary> - FixedLength - } - - /// <summary> - /// Properties of the timeline that are used by the editor - /// </summary> - [Serializable] - public class EditorSettings - { - internal static readonly float kMinFps = (float)TimeUtility.kFrameRateEpsilon; - internal static readonly float kMaxFps = 1000.0f; - internal static readonly float kDefaultFps = 60.0f; - [HideInInspector, SerializeField] float m_Framerate = kDefaultFps; - - /// <summary> - /// The frames per second used for snapping and time ruler display - /// </summary> - public float fps - { - get - { - return m_Framerate; - } - set - { - m_Framerate = GetValidFramerate(value); - } - } - } - - [HideInInspector, SerializeField] List<ScriptableObject> m_Tracks; - [HideInInspector, SerializeField] double m_FixedDuration; // only applied if duration mode is Fixed - [HideInInspector, NonSerialized] TrackAsset[] m_CacheOutputTracks; - [HideInInspector, NonSerialized] List<TrackAsset> m_CacheRootTracks; - [HideInInspector, NonSerialized] List<TrackAsset> m_CacheFlattenedTracks; - [HideInInspector, SerializeField] EditorSettings m_EditorSettings = new EditorSettings(); - [SerializeField] DurationMode m_DurationMode; - - [HideInInspector, SerializeField] MarkerTrack m_MarkerTrack; - - /// <summary> - /// Settings used by timeline for editing purposes - /// </summary> - public EditorSettings editorSettings - { - get { return m_EditorSettings; } - } - - /// <summary> - /// The length, in seconds, of the timeline - /// </summary> - public override double duration - { - get - { - // @todo cache this value when rebuilt - if (m_DurationMode == DurationMode.BasedOnClips) - return CalculateDuration(); - - return m_FixedDuration; - } - } - - /// <summary> - /// The length of the timeline when durationMode is set to fixed length. - /// </summary> - public double fixedDuration - { - get - { - DiscreteTime discreteDuration = (DiscreteTime)m_FixedDuration; - if (discreteDuration <= 0) - return 0.0; - - //avoid having no clip evaluated at the end by removing a tick from the total duration - return (double)discreteDuration.OneTickBefore(); - } - set { m_FixedDuration = Math.Max(0.0, value); } - } - - /// <summary> - /// The mode used to determine the duration of the Timeline - /// </summary> - public DurationMode durationMode - { - get { return m_DurationMode; } - set { m_DurationMode = value; } - } - - /// <summary> - /// A description of the PlayableOutputs that will be created by the timeline when instantiated. - /// </summary> - /// <remarks> - /// Each track will create an PlayableOutput - /// </remarks> - public override IEnumerable<PlayableBinding> outputs - { - get - { - foreach (var outputTracks in GetOutputTracks()) - foreach (var output in outputTracks.outputs) - yield return output; - } - } - - public ClipCaps clipCaps - { - get - { - var caps = ClipCaps.All; - foreach (var track in GetRootTracks()) - { - foreach (var clip in track.clips) - caps &= clip.clipCaps; - } - return caps; - } - } - - /// <summary> - /// Returns the the number of output tracks in the Timeline. - /// </summary> - /// <remarks> - /// An output track is a track the generates a PlayableOutput. In general, an output track is any track that is not a GroupTrack, a subtrack, or override track. - /// </remarks> - public int outputTrackCount - { - get - { - UpdateOutputTrackCache(); // updates the cache if necessary - return m_CacheOutputTracks.Length; - } - } - - /// <summary> - /// Returns the number of tracks at the root level of the timeline. - /// </summary> - /// <remarks> - /// A root track refers to all tracks that occur at the root of the timeline. These are the outmost level GroupTracks, and output tracks that do not belong to any group - /// </remarks> - public int rootTrackCount - { - get - { - UpdateRootTrackCache(); - return m_CacheRootTracks.Count; - } - } - - void OnValidate() - { - editorSettings.fps = GetValidFramerate(editorSettings.fps); - } - - static float GetValidFramerate(float framerate) - { - return Mathf.Clamp(framerate, EditorSettings.kMinFps, EditorSettings.kMaxFps); - } - - /// <summary> - /// Retrieves at root track at the specified index. - /// </summary> - /// <param name="index">Index of the root track to get. Must be between 0 and rootTrackCount</param> - /// <remarks> - /// A root track refers to all tracks that occur at the root of the timeline. These are the outmost level GroupTracks, and output tracks that do not belong to any group. - /// </remarks> - public TrackAsset GetRootTrack(int index) - { - UpdateRootTrackCache(); - return m_CacheRootTracks[index]; - } - - /// <summary> - /// Get an enumerable list of all root tracks. - /// </summary> - /// <returns>An IEnumerable of all root tracks.</returns> - /// <remarks>A root track refers to all tracks that occur at the root of the timeline. These are the outmost level GroupTracks, and output tracks that do not belong to any group.</remarks> - public IEnumerable<TrackAsset> GetRootTracks() - { - UpdateRootTrackCache(); - return m_CacheRootTracks; - } - - /// <summary> - /// Retrives the output track from the given index. - /// </summary> - /// <param name="index">Index of the output track to retrieve. Must be between 0 and outputTrackCount</param> - /// <returns>The output track from the given index</returns> - public TrackAsset GetOutputTrack(int index) - { - UpdateOutputTrackCache(); - return m_CacheOutputTracks[index]; - } - - /// <summary> - /// Gets a list of all output tracks in the Timeline. - /// </summary> - /// <returns>An IEnumerable of all output tracks</returns> - /// <remarks> - /// An output track is a track the generates a PlayableOutput. In general, an output track is any track that is not a GroupTrack or subtrack. - /// </remarks> - public IEnumerable<TrackAsset> GetOutputTracks() - { - UpdateOutputTrackCache(); - return m_CacheOutputTracks; - } - - void UpdateRootTrackCache() - { - if (m_CacheRootTracks == null) - { - if (m_Tracks == null) - m_CacheRootTracks = new List<TrackAsset>(); - else - { - m_CacheRootTracks = new List<TrackAsset>(m_Tracks.Count); - if (markerTrack != null) - { - m_CacheRootTracks.Add(markerTrack); - } - - foreach (var t in m_Tracks) - { - var trackAsset = t as TrackAsset; - if (trackAsset != null) - m_CacheRootTracks.Add(trackAsset); - } - } - } - } - - void UpdateOutputTrackCache() - { - if (m_CacheOutputTracks == null) - { - var outputTracks = new List<TrackAsset>(); - foreach (var flattenedTrack in flattenedTracks) - { - if (flattenedTrack != null && flattenedTrack.GetType() != typeof(GroupTrack) && !flattenedTrack.isSubTrack) - outputTracks.Add(flattenedTrack); - } - m_CacheOutputTracks = outputTracks.ToArray(); - } - } - - internal IEnumerable<TrackAsset> flattenedTracks - { - get - { - if (m_CacheFlattenedTracks == null) - { - m_CacheFlattenedTracks = new List<TrackAsset>(m_Tracks.Count * 2); - UpdateRootTrackCache(); - - m_CacheFlattenedTracks.AddRange(m_CacheRootTracks); - for (int i = 0; i < m_CacheRootTracks.Count; i++) - { - AddSubTracksRecursive(m_CacheRootTracks[i], ref m_CacheFlattenedTracks); - } - } - return m_CacheFlattenedTracks; - } - } - - /// <summary> - /// Gets the marker track for this TimelineAsset. - /// </summary> - /// <returns>Returns the marker track.</returns> - /// <remarks> - /// Use <see cref="TrackAsset.GetMarkers"/> to get a list of the markers on the returned track. - /// </remarks> - public MarkerTrack markerTrack - { - get { return m_MarkerTrack; } - } - - // access to the track list as scriptable object - internal List<ScriptableObject> trackObjects - { - get { return m_Tracks; } - } - - internal void AddTrackInternal(TrackAsset track) - { - m_Tracks.Add(track); - track.parent = this; - Invalidate(); - } - - internal void RemoveTrack(TrackAsset track) - { - m_Tracks.Remove(track); - Invalidate(); - var parentTrack = track.parent as TrackAsset; - if (parentTrack != null) - { - parentTrack.RemoveSubTrack(track); - } - } - - /// <summary> - /// Creates an instance of the timeline - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable</param> - /// <param name="go">The gameobject that triggered the graph build</param> - /// <returns>The Root Playable of the Timeline</returns> - public override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - bool autoRebalanceTree = false; - #if UNITY_EDITOR - autoRebalanceTree = true; - #endif - - // only create outputs if we are not nested - bool createOutputs = graph.GetPlayableCount() == 0; - var timeline = TimelinePlayable.Create(graph, GetOutputTracks(), go, autoRebalanceTree, createOutputs); - timeline.SetPropagateSetTime(true); - return timeline.IsValid() ? timeline : Playable.Null; - } - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - m_Version = k_LatestVersion; - } - - // resets cache on an Undo - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - Invalidate(); // resets cache on an Undo - if (m_Version < k_LatestVersion) - { - UpgradeToLatestVersion(); - } - } - - void __internalAwake() - { - if (m_Tracks == null) - m_Tracks = new List<ScriptableObject>(); - - // validate the array. DON'T remove Unity null objects, just actual null objects - for (int i = m_Tracks.Count - 1; i >= 0; i--) - { - TrackAsset asset = m_Tracks[i] as TrackAsset; - if (asset != null) - asset.parent = this; -#if UNITY_EDITOR - object o = m_Tracks[i]; - if (o == null) - { - Debug.LogWarning("Empty track found while loading timeline. It will be removed."); - m_Tracks.RemoveAt(i); - } -#endif - } - } - - /// <summary> - /// Called by the Timeline Editor to gather properties requiring preview. - /// </summary> - /// <param name="director">The PlayableDirector invoking the preview</param> - /// <param name="driver">PropertyCollector used to gather previewable properties</param> - public void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { - var outputTracks = GetOutputTracks(); - foreach (var track in outputTracks) - { - track.GatherProperties(director, driver); - } - } - - /// <summary> - /// Creates a marker track for the TimelineAsset. - /// </summary> - /// In the editor, the marker track appears under the Timeline ruler. - /// <remarks> - /// This track is always bound to the GameObject that contains the PlayableDirector component for the current timeline. - /// The marker track is created the first time this method is called. If the marker track is already created, this method does nothing. - /// </remarks> - public void CreateMarkerTrack() - { - if (m_MarkerTrack == null) - { - m_MarkerTrack = CreateInstance<MarkerTrack>(); - TimelineCreateUtilities.SaveAssetIntoObject(m_MarkerTrack, this); - m_MarkerTrack.parent = this; - m_MarkerTrack.name = "Markers"; // This name will show up in the bindings list if it contains signals - Invalidate(); - } - } - - // Invalidates the asset, call this if changing the asset data - internal void Invalidate() - { - m_CacheRootTracks = null; - m_CacheOutputTracks = null; - m_CacheFlattenedTracks = null; - } - - double CalculateDuration() - { - var discreteDuration = new DiscreteTime(0); - foreach (var track in flattenedTracks) - { - if (track.muted) - continue; - - discreteDuration = DiscreteTime.Max(discreteDuration, (DiscreteTime)track.end); - } - - if (discreteDuration <= 0) - return 0.0; - - //avoid having no clip evaluated at the end by removing a tick from the total duration - return (double)discreteDuration.OneTickBefore(); - } - - static void AddSubTracksRecursive(TrackAsset track, ref List<TrackAsset> allTracks) - { - if (track == null) - return; - - allTracks.AddRange(track.GetChildTracks()); - foreach (TrackAsset subTrack in track.GetChildTracks()) - { - AddSubTracksRecursive(subTrack, ref allTracks); - } - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs.meta deleted file mode 100644 index d4c4836..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bfda56da833e2384a9677cd3c976a436 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs deleted file mode 100644 index 8727eae..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs +++ /dev/null @@ -1,255 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Timeline; -using UnityEngine.Playables; -using UnityEngineInternal; // for metro type extensions - -namespace UnityEngine.Timeline -{ - public partial class TimelineAsset - { - /// <summary> - /// Allows you to create a track and add it to the Timeline. - /// </summary> - /// <param name="type">The type of track to create. Must derive from TrackAsset.</param> - /// <param name="parent">Track to parent to. This can be null.</param> - /// <param name="name">Name to give the track.</param> - /// <returns>The created track.</returns> - /// <remarks> - /// This method will throw an InvalidOperationException if the parent is not valid. The parent can be any GroupTrack, or a supported parent type of track. For example, this can be used to create override tracks in AnimationTracks. - /// </remarks> - public TrackAsset CreateTrack(Type type, TrackAsset parent, string name) - { - if (parent != null && parent.timelineAsset != this) - throw new InvalidOperationException("Addtrack cannot parent to a track not in the Timeline"); - - if (!typeof(TrackAsset).IsAssignableFrom(type)) - throw new InvalidOperationException("Supplied type must be a track asset"); - - if (parent != null) - { - if (!TimelineCreateUtilities.ValidateParentTrack(parent, type)) - throw new InvalidOperationException("Cannot assign a child of type " + type.Name + " to a parent of type " + parent.GetType().Name); - } - - - var actualParent = parent != null ? parent as PlayableAsset : this; - TimelineUndo.PushUndo(actualParent, "Create Track"); - - var baseName = name; - if (string.IsNullOrEmpty(baseName)) - { - baseName = type.Name; -#if UNITY_EDITOR - baseName = UnityEditor.ObjectNames.NicifyVariableName(baseName); -#endif - } - - var trackName = baseName; - if (parent != null) - trackName = TimelineCreateUtilities.GenerateUniqueActorName(parent.subTracksObjects, baseName); - else - trackName = TimelineCreateUtilities.GenerateUniqueActorName(trackObjects, baseName); - - TrackAsset newTrack = AllocateTrack(parent, trackName, type); - if (newTrack != null) - { - newTrack.name = trackName; - TimelineCreateUtilities.SaveAssetIntoObject(newTrack, actualParent); - } - return newTrack; - } - - /// <summary> - /// Creates a track and adds it to the Timeline Asset. - /// </summary> - /// <param name="parent">Track to parent to. This can be null.</param> - /// <param name="trackName">The name of the track being created.</param> - /// <typeparam name="T">The type of track being created. The track type must be derived from TrackAsset.</typeparam> - /// <returns>Returns the created track.</returns> - /// <remarks> - /// This method will throw an InvalidOperationException if the parent is not valid. The parent can be any GroupTrack, or a supported parent type of track. For example, this can be used to create override tracks in AnimationTracks. - /// </remarks> - public T CreateTrack<T>(TrackAsset parent, string trackName) where T : TrackAsset, new() - { - return (T)CreateTrack(typeof(T), parent, trackName); - } - - /// <summary> - /// Creates a track and adds it to the Timeline Asset. - /// </summary> - /// <param name="trackName">The name of the track being created.</param> - /// <typeparam name="T">The type of track being created. The track type must be derived from TrackAsset.</typeparam> - /// <returns>Returns the created track.</returns> - public T CreateTrack<T>(string trackName) where T : TrackAsset, new() - { - return (T)CreateTrack(typeof(T), null, trackName); - } - - /// <summary> - /// Creates a track and adds it to the Timeline Asset. - /// </summary> - /// <typeparam name="T">The type of track being created. The track type must be derived from TrackAsset.</typeparam> - /// <returns>Returns the created track.</returns> - public T CreateTrack<T>() where T : TrackAsset, new() - { - return (T)CreateTrack(typeof(T), null, null); - } - - /// <summary> - /// Delete a clip from this timeline. - /// </summary> - /// <param name="clip">The clip to delete.</param> - /// <returns>Returns true if the removal was successful</returns> - /// <remarks> - /// This method will delete a clip and any assets owned by the clip. - /// </remarks> - public bool DeleteClip(TimelineClip clip) - { - if (clip == null || clip.parentTrack == null) - { - return false; - } - if (this != clip.parentTrack.timelineAsset) - { - Debug.LogError("Cannot delete a clip from this timeline"); - return false; - } - - TimelineUndo.PushUndo(clip.parentTrack, "Delete Clip"); - if (clip.curves != null) - { - TimelineUndo.PushDestroyUndo(this, clip.parentTrack, clip.curves, "Delete Curves"); - } - - // handle wrapped assets - if (clip.asset != null) - { - DeleteRecordedAnimation(clip); - - // TODO -- we should flag assets and owned, instead of this check... -#if UNITY_EDITOR - string path = UnityEditor.AssetDatabase.GetAssetPath(clip.asset); - if (path == UnityEditor.AssetDatabase.GetAssetPath(this)) -#endif - { - TimelineUndo.PushDestroyUndo(this, clip.parentTrack, clip.asset, "Delete Clip Asset"); - } - } - - var clipParentTrack = clip.parentTrack; - clipParentTrack.RemoveClip(clip); - clipParentTrack.CalculateExtrapolationTimes(); - - return true; - } - - /// <summary> - /// Deletes a track from a timeline, including all clips and subtracks. - /// </summary> - /// <param name="track">The track to delete. It must be owned by this Timeline.</param> - /// <returns>True if the track was deleted successfully.</returns> - public bool DeleteTrack(TrackAsset track) - { - if (track.timelineAsset != this) - return false; - - // push before we modify properties - TimelineUndo.PushUndo(track, "Delete Track"); - TimelineUndo.PushUndo(this, "Delete Track"); - - TrackAsset parent = track.parent as TrackAsset; - if (parent != null) - TimelineUndo.PushUndo(parent, "Delete Track"); - - var children = track.GetChildTracks(); - foreach (var child in children) - { - DeleteTrack(child); - } - - DeleteRecordedAnimation(track); - - var clipsToDelete = new List<TimelineClip>(track.clips); - foreach (var clip in clipsToDelete) - { - DeleteClip(clip); - } - RemoveTrack(track); - - TimelineUndo.PushDestroyUndo(this, this, track, "Delete Track"); - - return true; - } - - internal void MoveLastTrackBefore(TrackAsset asset) - { - if (m_Tracks == null || m_Tracks.Count < 2 || asset == null) - return; - - var lastTrack = m_Tracks[m_Tracks.Count - 1]; - if (lastTrack == asset) - return; - - for (int i = 0; i < m_Tracks.Count - 1; i++) - { - if (m_Tracks[i] == asset) - { - for (int j = m_Tracks.Count - 1; j > i; j--) - m_Tracks[j] = m_Tracks[j - 1]; - m_Tracks[i] = lastTrack; - Invalidate(); - break; - } - } - } - - internal TrackAsset AllocateTrack(TrackAsset trackAssetParent, string trackName, Type trackType) - { - if (trackAssetParent != null && trackAssetParent.timelineAsset != this) - throw new InvalidOperationException("Addtrack cannot parent to a track not in the Timeline"); - - if (!typeof(TrackAsset).IsAssignableFrom(trackType)) - throw new InvalidOperationException("Supplied type must be a track asset"); - - var asset = (TrackAsset)CreateInstance(trackType); - asset.name = trackName; - - if (trackAssetParent != null) - trackAssetParent.AddChild(asset); - else - AddTrackInternal(asset); - - return asset; - } - - void DeleteRecordedAnimation(TrackAsset track) - { - var animTrack = track as AnimationTrack; - if (animTrack != null && animTrack.infiniteClip != null) - TimelineUndo.PushDestroyUndo(this, track, animTrack.infiniteClip, "Delete Track"); - - if (track.curves != null) - TimelineUndo.PushDestroyUndo(this, track, track.curves, "Delete Track Parameters"); - } - - void DeleteRecordedAnimation(TimelineClip clip) - { - if (clip == null) - return; - - if (clip.curves != null) - TimelineUndo.PushDestroyUndo(this, clip.parentTrack, clip.curves, "Delete Clip Parameters"); - - if (!clip.recordable) - return; - - AnimationPlayableAsset asset = clip.asset as AnimationPlayableAsset; - if (asset == null || asset.clip == null) - return; - - TimelineUndo.PushDestroyUndo(this, asset, asset.clip, "Delete Recording"); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs.meta deleted file mode 100644 index 76d1df6..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAsset_CreateRemove.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 93665e8b67658804d99c4487228cc050 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs deleted file mode 100644 index 69409fd..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs +++ /dev/null @@ -1,222 +0,0 @@ -using System; -using UnityEngine; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Specifies the type of PlayableAsset that a TrackAsset derived class can create clips of. - /// </summary> - [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] - public class TrackClipTypeAttribute : Attribute - { - /// <summary> - /// The type of the clip class associate with this track - /// </summary> - public readonly Type inspectedType; - - /// <summary> - /// Whether to allow automatic creation of these types. - /// </summary> - public readonly bool allowAutoCreate; // true will make it show up in menus - - /// <summary> - /// </summary> - /// <param name="clipClass">The type of the clip class to associate with this track. Must derive from PlayableAsset.</param> - public TrackClipTypeAttribute(Type clipClass) - { - inspectedType = clipClass; - allowAutoCreate = true; - } - - /// <summary> - /// </summary> - /// <param name="clipClass">The type of the clip class to associate with this track. Must derive from PlayableAsset.</param> - /// <param name="allowAutoCreate">Whether to allow automatic creation of these types. Default value is true.</param> - /// <remarks>Setting allowAutoCreate to false will cause Timeline to not show menu items for creating clips of this type.</remarks> - public TrackClipTypeAttribute(Type clipClass, bool allowAutoCreate) - { - inspectedType = clipClass; - allowAutoCreate = false; - } - } - - /// <summary> - /// Apply this to a PlayableBehaviour class or field to indicate that it is not animatable. - /// </summary> - [AttributeUsage(AttributeTargets.Field | AttributeTargets.Class)] - public class NotKeyableAttribute : Attribute - { - } - - - /// <summary> - /// Options for track binding - /// </summary> - [Flags] - public enum TrackBindingFlags - { - /// <summary> - /// No options specified - /// </summary> - None = 0, - - /// <summary> - /// Allow automatic creating of component during gameObject drag and drop - /// </summary> - AllowCreateComponent = 1, - - /// <summary> - /// All options specified - /// </summary> - All = AllowCreateComponent - } - - /// <summary> - /// Specifies the type of object that should be bound to a TrackAsset. - /// </summary> - /// <example> - /// <code> - /// using UnityEngine; - /// using UnityEngine.Timeline; - /// [TrackBindingType(typeof(Light), TrackBindingFlags.AllowCreateComponent)] - /// public class LightTrack : TrackAsset - /// { - /// } - /// </code> - /// </example> - /// <remarks> - /// Use this attribute when creating Custom Tracks to specify the type of object the track requires a binding to. - /// </remarks> - [AttributeUsage(AttributeTargets.Class)] - public class TrackBindingTypeAttribute : Attribute - { - /// <summary> - /// The type of binding for the associate track - /// </summary> - public readonly Type type; - - /// <summary> - /// Options for the the track binding - /// </summary> - public readonly TrackBindingFlags flags; - - public TrackBindingTypeAttribute(Type type) - { - this.type = type; - this.flags = TrackBindingFlags.All; - } - - public TrackBindingTypeAttribute(Type type, TrackBindingFlags flags) - { - this.type = type; - this.flags = flags; - } - } - - // indicates that child tracks are permitted on a track - // internal because not fully supported on custom classes yet - [AttributeUsage(AttributeTargets.Class, Inherited = false)] - class SupportsChildTracksAttribute : Attribute - { - public readonly Type childType; - public readonly int levels; - - public SupportsChildTracksAttribute(Type childType = null, int levels = Int32.MaxValue) - { - this.childType = childType; - this.levels = levels; - } - } - - // indicates that the type should not be put on a PlayableTrack - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] - class IgnoreOnPlayableTrackAttribute : System.Attribute {} - - // used to flag properties as using a time field (second/frames) display - class TimeFieldAttribute : PropertyAttribute - { - public enum UseEditMode - { - None, - ApplyEditMode - } - public UseEditMode useEditMode { get; } - - public TimeFieldAttribute(UseEditMode useEditMode = UseEditMode.ApplyEditMode) - { - this.useEditMode = useEditMode; - } - } - - /// <summary> - /// Use this attribute to hide a class from Timeline menus. - /// </summary> - [AttributeUsage(AttributeTargets.Class, Inherited = false)] - public class HideInMenuAttribute : Attribute {} - - ///<summary> - /// Use this attribute to customize the appearance of a Marker. - /// </summary> - /// Specify the style to use to draw a Marker. - /// <example> - /// [CustomStyle("MyStyle")] - /// public class MyMarker : UnityEngine.Timeline.Marker {} - /// </example> - /// How to create a custom style rule: - /// 1) Create a 'common.uss' USS file in an Editor folder in a StyleSheets/Extensions folder hierarchy. - /// Example of valid folder paths: - /// - Assets/Editor/StyleSheets/Extensions - /// - Assets/Editor/Markers/StyleSheets/Extensions - /// - Assets/Timeline/Editor/MyMarkers/StyleSheets/Extensions - /// Rules in 'dark.uss' are used if you use the Pro Skin and rules in 'light.uss' are used otherwise. - /// - /// 2)In the USS file, create a styling rule to customize the appearance of the marker. - /// <example> - /// MyStyle - /// { - /// /* Specify the appearance of the marker in the collapsed state here. */ - /// } - /// - /// MyStyle:checked - /// { - /// /* Specify the appearance of the marker in the expanded state here. */ - /// } - /// - /// MyStyle:focused:checked - /// { - /// /* Specify the appearance of the marker in the selected state here. */ - /// } - /// </example> - /// <seealso cref="UnityEngine.Timeline.Marker"/> - [AttributeUsage(AttributeTargets.Class)] - public class CustomStyleAttribute : Attribute - { - /// <summary> - /// The name of the USS style. - /// </summary> - public readonly string ussStyle; - - /// <param name="ussStyle">The name of the USS style.</param> - public CustomStyleAttribute(string ussStyle) - { - this.ussStyle = ussStyle; - } - } - - /// <summary> - /// Use this attribute to assign a clip, marker or track to a category in a submenu - /// </summary> - [AttributeUsage(AttributeTargets.Class)] - internal class MenuCategoryAttribute : Attribute - { - /// <summary> - /// The menu name of the category - /// </summary> - public readonly string category; - - public MenuCategoryAttribute(string category) - { - this.category = category ?? string.Empty; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs.meta deleted file mode 100644 index ae5547d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3e99141cd5dbef844a4338bb87930b89 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs deleted file mode 100644 index f1aa05b..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs +++ /dev/null @@ -1,821 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; -using UnityEngine.Serialization; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Implement this interface to support advanced features of timeline clips. - /// </summary> - public interface ITimelineClipAsset - { - /// <summary> - /// Returns a description of the features supported by clips with PlayableAssets implementing this interface. - /// </summary> - ClipCaps clipCaps { get; } - } - - /// <summary> - /// Represents a clip on the timeline. - /// </summary> - [Serializable] - public partial class TimelineClip : ICurvesOwner, ISerializationCallbackReceiver - { - /// <summary> - /// The default capabilities for a clip - /// </summary> - public static readonly ClipCaps kDefaultClipCaps = ClipCaps.Blending; - - /// <summary> - /// The default length of a clip in seconds. - /// </summary> - public static readonly float kDefaultClipDurationInSeconds = 5; - - /// <summary> - /// The minimum timescale allowed on a clip - /// </summary> - public static readonly double kTimeScaleMin = 1.0 / 1000; - - /// <summary> - /// The maximum timescale allowed on a clip - /// </summary> - public static readonly double kTimeScaleMax = 1000; - - internal static readonly string kDefaultCurvesName = "Clip Parameters"; - - internal static readonly double kMinDuration = 1 / 60.0; - - // constant representing the longest possible sequence duration - internal static readonly double kMaxTimeValue = 1000000; // more than a week's time, and within numerical precision boundaries - - /// <summary> - /// How the clip handles time outside its start and end range. - /// </summary> - public enum ClipExtrapolation - { - /// <summary> - /// No extrapolation is applied. - /// </summary> - None, - - /// <summary> - /// Hold the time at the end value of the clip. - /// </summary> - Hold, - - /// <summary> - /// Repeat time values outside the start/end range. - /// </summary> - Loop, - - /// <summary> - /// Repeat time values outside the start/end range, reversing direction at each loop - /// </summary> - PingPong, - - /// <summary> - /// Time values are passed in without modification, extending beyond the clips range - /// </summary> - Continue - }; - - /// <summary> - /// How blend curves are treated in an overlap - /// </summary> - public enum BlendCurveMode - { - /// <summary> - /// The curve is normalized against the opposing clip - /// </summary> - Auto, - - /// <summary> - /// The blend curve is fixed. - /// </summary> - Manual - }; - - internal TimelineClip(TrackAsset parent) - { - // parent clip into track - parentTrack = parent; - } - - [SerializeField] double m_Start; - [SerializeField] double m_ClipIn; - [SerializeField] Object m_Asset; - [SerializeField][FormerlySerializedAs("m_HackDuration")] double m_Duration; - [SerializeField] double m_TimeScale = 1.0; - [SerializeField] TrackAsset m_ParentTrack; - - // for mixing out scripts - default is no mix out (i.e. flat) - [SerializeField] double m_EaseInDuration; - [SerializeField] double m_EaseOutDuration; - - // the blend durations override ease in / out durations - [SerializeField] double m_BlendInDuration = -1.0f; - [SerializeField] double m_BlendOutDuration = -1.0f; - - // doubles as ease in/out and blend in/out curves - [SerializeField] AnimationCurve m_MixInCurve; - [SerializeField] AnimationCurve m_MixOutCurve; - - [SerializeField] BlendCurveMode m_BlendInCurveMode = BlendCurveMode.Auto; - [SerializeField] BlendCurveMode m_BlendOutCurveMode = BlendCurveMode.Auto; - - [SerializeField] List<string> m_ExposedParameterNames; - [SerializeField] AnimationClip m_AnimationCurves; - - [SerializeField] bool m_Recordable; - - // extrapolation - [SerializeField] ClipExtrapolation m_PostExtrapolationMode; - [SerializeField] ClipExtrapolation m_PreExtrapolationMode; - [SerializeField] double m_PostExtrapolationTime; - [SerializeField] double m_PreExtrapolationTime; - - [SerializeField] string m_DisplayName; - - /// <summary> - /// Is the clip being extrapolated before its start time? - /// </summary> - public bool hasPreExtrapolation - { - get { return m_PreExtrapolationMode != ClipExtrapolation.None && m_PreExtrapolationTime > 0; } - } - - /// <summary> - /// Is the clip being extrapolated past its end time? - /// </summary> - public bool hasPostExtrapolation - { - get { return m_PostExtrapolationMode != ClipExtrapolation.None && m_PostExtrapolationTime > 0; } - } - - /// <summary> - /// A speed multiplier for the clip; - /// </summary> - public double timeScale - { - get { return clipCaps.HasAny(ClipCaps.SpeedMultiplier) ? Math.Max(kTimeScaleMin, Math.Min(m_TimeScale, kTimeScaleMax)) : 1.0; } - set - { - UpdateDirty(m_TimeScale, value); - m_TimeScale = clipCaps.HasAny(ClipCaps.SpeedMultiplier) ? Math.Max(kTimeScaleMin, Math.Min(value, kTimeScaleMax)) : 1.0; - } - } - - /// <summary> - /// The start time, in seconds, of the clip - /// </summary> - public double start - { - get { return m_Start; } - set - { - UpdateDirty(value, m_Start); - var newValue = Math.Max(SanitizeTimeValue(value, m_Start), 0); - if (m_ParentTrack != null && m_Start != newValue) - { - m_ParentTrack.OnClipMove(); - } - m_Start = newValue; - } - } - - /// <summary> - /// The length, in seconds, of the clip - /// </summary> - public double duration - { - get { return m_Duration; } - set - { - UpdateDirty(m_Duration, value); - m_Duration = Math.Max(SanitizeTimeValue(value, m_Duration), double.Epsilon); - } - } - - /// <summary> - /// The end time, in seconds of the clip - /// </summary> - public double end - { - get { return m_Start + m_Duration; } - } - - /// <summary> - /// Local offset time of the clip. - /// </summary> - public double clipIn - { - get { return clipCaps.HasAny(ClipCaps.ClipIn) ? m_ClipIn : 0; } - set - { - UpdateDirty(m_ClipIn, value); - m_ClipIn = clipCaps.HasAny(ClipCaps.ClipIn) ? Math.Max(Math.Min(SanitizeTimeValue(value, m_ClipIn), kMaxTimeValue), 0.0) : 0; - } - } - - /// <summary> - /// The name displayed on the clip - /// </summary> - public string displayName - { - get { return m_DisplayName; } - set { m_DisplayName = value; } - } - - - /// <summary> - /// The length, in seconds, of the PlayableAsset attached to the clip. - /// </summary> - public double clipAssetDuration - { - get - { - var playableAsset = m_Asset as IPlayableAsset; - return playableAsset != null ? playableAsset.duration : double.MaxValue; - } - } - - /// <summary> - /// An animation clip containing animated properties of the attached PlayableAsset - /// </summary> - /// <remarks> - /// This is where animated clip properties are stored. - /// </remarks> - public AnimationClip curves - { - get { return m_AnimationCurves; } - internal set { m_AnimationCurves = value; } - } - - string ICurvesOwner.defaultCurvesName - { - get { return kDefaultCurvesName; } - } - - /// <summary> - /// Whether this clip contains animated properties for the attached PlayableAsset. - /// </summary> - /// <remarks> - /// This property is false if the curves property is null or if it contains no information. - /// </remarks> - public bool hasCurves - { - get { return m_AnimationCurves != null && !m_AnimationCurves.empty; } - } - - /// <summary> - /// The PlayableAsset attached to the clip. - /// </summary> - public Object asset - { - get { return m_Asset; } - set { m_Asset = value; } - } - - Object ICurvesOwner.assetOwner - { - get { return parentTrack; } - } - - TrackAsset ICurvesOwner.targetTrack - { - get { return parentTrack; } - } - - [Obsolete("underlyingAsset property is obsolete. Use asset property instead", true)] - public Object underlyingAsset - { - get { return null; } - set {} - } - - /// <summary> - /// Returns the TrackAsset to which this clip is attached. - /// </summary> - public TrackAsset parentTrack - { - get { return m_ParentTrack; } - set - { - if (m_ParentTrack == value) - return; - - if (m_ParentTrack != null) - m_ParentTrack.RemoveClip(this); - - m_ParentTrack = value; - - if (m_ParentTrack != null) - m_ParentTrack.AddClip(this); - } - } - - /// <summary> - /// The ease in duration of the timeline clip in seconds. This only applies if the start of the clip is not overlapping. - /// </summary> - public double easeInDuration - { - get { return clipCaps.HasAny(ClipCaps.Blending) ? Math.Min(Math.Max(m_EaseInDuration, 0), duration * 0.49) : 0; } - set { m_EaseInDuration = clipCaps.HasAny(ClipCaps.Blending) ? Math.Max(0, Math.Min(SanitizeTimeValue(value, m_EaseInDuration), duration * 0.49)) : 0; } - } - - /// <summary> - /// The ease out duration of the timeline clip in seconds. This only applies if the end of the clip is not overlapping. - /// </summary> - public double easeOutDuration - { - get { return clipCaps.HasAny(ClipCaps.Blending) ? Math.Min(Math.Max(m_EaseOutDuration, 0), duration * 0.49) : 0; } - set { m_EaseOutDuration = clipCaps.HasAny(ClipCaps.Blending) ? Math.Max(0, Math.Min(SanitizeTimeValue(value, m_EaseOutDuration), duration * 0.49)) : 0; } - } - - [Obsolete("Use easeOutTime instead (UnityUpgradable) -> easeOutTime", true)] - public double eastOutTime - { - get { return duration - easeOutDuration + m_Start; } - } - - /// <summary> - /// The time in seconds that the ease out begins - /// </summary> - public double easeOutTime - { - get { return duration - easeOutDuration + m_Start; } - } - - /// <summary> - /// The amount of overlap in seconds on the start of a clip. - /// </summary> - public double blendInDuration - { - get { return clipCaps.HasAny(ClipCaps.Blending) ? m_BlendInDuration : 0; } - set { m_BlendInDuration = clipCaps.HasAny(ClipCaps.Blending) ? SanitizeTimeValue(value, m_BlendInDuration) : 0; } - } - - /// <summary> - /// The amount of overlap in seconds at the end of a clip. - /// </summary> - public double blendOutDuration - { - get { return clipCaps.HasAny(ClipCaps.Blending) ? m_BlendOutDuration : 0; } - set { m_BlendOutDuration = clipCaps.HasAny(ClipCaps.Blending) ? SanitizeTimeValue(value, m_BlendOutDuration) : 0; } - } - - /// <summary> - /// The mode for calculating the blend curve of the overlap at the start of the clip - /// </summary> - public BlendCurveMode blendInCurveMode - { - get { return m_BlendInCurveMode; } - set { m_BlendInCurveMode = value; } - } - - /// <summary> - /// The mode for calculating the blend curve of the overlap at the end of the clip - /// </summary> - public BlendCurveMode blendOutCurveMode - { - get { return m_BlendOutCurveMode; } - set { m_BlendOutCurveMode = value; } - } - - /// <summary> - /// Returns whether the clip is blending in - /// </summary> - public bool hasBlendIn { get { return clipCaps.HasAny(ClipCaps.Blending) && m_BlendInDuration > 0; } } - - /// <summary> - /// Returns whether the clip is blending out - /// </summary> - public bool hasBlendOut { get { return clipCaps.HasAny(ClipCaps.Blending) && m_BlendOutDuration > 0; } } - - /// <summary> - /// The animation curve used for calculating weights during an ease in or a blend in. - /// </summary> - public AnimationCurve mixInCurve - { - get - { - // auto fix broken curves - if (m_MixInCurve == null || m_MixInCurve.length < 2) - m_MixInCurve = GetDefaultMixInCurve(); - - return m_MixInCurve; - } - set { m_MixInCurve = value; } - } - - /// <summary> - /// The amount of the clip being used for ease or blend in as a percentage - /// </summary> - public float mixInPercentage - { - get { return (float)(mixInDuration / duration); } - } - - /// <summary> - /// The amount of the clip blending or easing in, in seconds - /// </summary> - public double mixInDuration - { - get { return hasBlendIn ? blendInDuration : easeInDuration; } - } - - /// <summary> - /// The animation curve used for calculating weights during an ease out or a blend out. - /// </summary> - public AnimationCurve mixOutCurve - { - get - { - if (m_MixOutCurve == null || m_MixOutCurve.length < 2) - m_MixOutCurve = GetDefaultMixOutCurve(); - return m_MixOutCurve; - } - set { m_MixOutCurve = value; } - } - - /// <summary> - /// The time in seconds that an ease out or blend out starts - /// </summary> - public double mixOutTime - { - get { return duration - mixOutDuration + m_Start; } - } - - /// <summary> - /// The amount of the clip blending or easing out, in seconds - /// </summary> - public double mixOutDuration - { - get { return hasBlendOut ? blendOutDuration : easeOutDuration; } - } - - /// <summary> - /// The amount of the clip being used for ease or blend out as a percentage - /// </summary> - public float mixOutPercentage - { - get { return (float)(mixOutDuration / duration); } - } - - /// <summary> - /// Returns whether this clip is recordable in editor - /// </summary> - public bool recordable - { - get { return m_Recordable; } - internal set { m_Recordable = value; } - } - - [Obsolete("exposedParameter is deprecated and will be removed in a future release", true)] - public List<string> exposedParameters - { - get { return m_ExposedParameterNames ?? (m_ExposedParameterNames = new List<string>()); } - } - - /// <summary> - /// Returns the capabilities supported by this clip. - /// </summary> - public ClipCaps clipCaps - { - get - { - var clipAsset = asset as ITimelineClipAsset; - return (clipAsset != null) ? clipAsset.clipCaps : kDefaultClipCaps; - } - } - - internal int Hash() - { - return HashUtility.CombineHash(m_Start.GetHashCode(), - m_Duration.GetHashCode(), - m_TimeScale.GetHashCode(), - m_ClipIn.GetHashCode(), - ((int)m_PreExtrapolationMode).GetHashCode(), - ((int)m_PostExtrapolationMode).GetHashCode()); - } - - /// <summary> - /// Given a time, returns the weight from the mix out - /// </summary> - /// <param name="time">Time (relative to the timeline)</param> - /// <returns></returns> - public float EvaluateMixOut(double time) - { - if (!clipCaps.HasAny(ClipCaps.Blending)) - return 1.0f; - - if (mixOutDuration > Mathf.Epsilon) - { - var perc = (float)(time - mixOutTime) / (float)mixOutDuration; - perc = Mathf.Clamp01(mixOutCurve.Evaluate(perc)); - return perc; - } - return 1.0f; - } - - /// <summary> - /// Given a time, returns the weight from the mix in - /// </summary> - /// <param name="time">Time (relative to the timeline)</param> - /// <returns></returns> - public float EvaluateMixIn(double time) - { - if (!clipCaps.HasAny(ClipCaps.Blending)) - return 1.0f; - - if (mixInDuration > Mathf.Epsilon) - { - var perc = (float)(time - m_Start) / (float)mixInDuration; - perc = Mathf.Clamp01(mixInCurve.Evaluate(perc)); - return perc; - } - return 1.0f; - } - - static AnimationCurve GetDefaultMixInCurve() - { - return AnimationCurve.EaseInOut(0, 0, 1, 1); - } - - static AnimationCurve GetDefaultMixOutCurve() - { - return AnimationCurve.EaseInOut(0, 1, 1, 0); - } - - /// <summary> - /// Converts from global time to a clips local time. - /// </summary> - /// <param name="time">time relative to the timeline</param> - /// <returns> - /// The local time with extrapolation applied - /// </returns> - public double ToLocalTime(double time) - { - if (time < 0) - return time; - - // handle Extrapolation - if (IsPreExtrapolatedTime(time)) - time = GetExtrapolatedTime(time - m_Start, m_PreExtrapolationMode, m_Duration); - else if (IsPostExtrapolatedTime(time)) - time = GetExtrapolatedTime(time - m_Start, m_PostExtrapolationMode, m_Duration); - else - time -= m_Start; - - // handle looping and time scale within the clip - time *= timeScale; - time += clipIn; - - return time; - } - - /// <summary> - /// Converts from global time to local time of the clip - /// </summary> - /// <param name="time">The time relative to the timeline</param> - /// <returns>The local time, ignoring any extrapolation or bounds</returns> - public double ToLocalTimeUnbound(double time) - { - return (time - m_Start) * timeScale + clipIn; - } - - /// <summary> - /// Converts from local time of the clip to global time - /// </summary> - /// <param name="time">Time relative to the clip</param> - /// <returns>The time relative to the timeline</returns> - internal double FromLocalTimeUnbound(double time) - { - return (time - clipIn) / timeScale + m_Start; - } - - /// <summary> - /// If this contains an animation asset, returns the animation clip attached. Otherwise returns null. - /// </summary> - public AnimationClip animationClip - { - get - { - if (m_Asset == null) - return null; - - var playableAsset = m_Asset as AnimationPlayableAsset; - return playableAsset != null ? playableAsset.clip : null; - } - } - - static double SanitizeTimeValue(double value, double defaultValue) - { - if (double.IsInfinity(value) || double.IsNaN(value)) - { - Debug.LogError("Invalid time value assigned"); - return defaultValue; - } - - return Math.Max(-kMaxTimeValue, Math.Min(kMaxTimeValue, value)); - } - - /// <summary> - /// Returns whether the clip is being extrapolated past the end time. - /// </summary> - public ClipExtrapolation postExtrapolationMode - { - get { return clipCaps.HasAny(ClipCaps.Extrapolation) ? m_PostExtrapolationMode : ClipExtrapolation.None; } - internal set { m_PostExtrapolationMode = clipCaps.HasAny(ClipCaps.Extrapolation) ? value : ClipExtrapolation.None; } - } - - /// <summary> - /// Returns whether the clip is being extrapolated before the start time. - /// </summary> - public ClipExtrapolation preExtrapolationMode - { - get { return clipCaps.HasAny(ClipCaps.Extrapolation) ? m_PreExtrapolationMode : ClipExtrapolation.None; } - internal set { m_PreExtrapolationMode = clipCaps.HasAny(ClipCaps.Extrapolation) ? value : ClipExtrapolation.None; } - } - - internal void SetPostExtrapolationTime(double time) - { - m_PostExtrapolationTime = time; - } - - internal void SetPreExtrapolationTime(double time) - { - m_PreExtrapolationTime = time; - } - - /// <summary> - /// Given a time, returns whether it falls within the clips extrapolation - /// </summary> - /// <param name="sequenceTime">The time relative to the timeline</param> - public bool IsExtrapolatedTime(double sequenceTime) - { - return IsPreExtrapolatedTime(sequenceTime) || IsPostExtrapolatedTime(sequenceTime); - } - - /// <summary> - /// Given a time, returns whether it falls within the clip pre-extrapolation - /// </summary> - /// <param name="sequenceTime">The time relative to the timeline</param> - public bool IsPreExtrapolatedTime(double sequenceTime) - { - return preExtrapolationMode != ClipExtrapolation.None && - sequenceTime < m_Start && sequenceTime >= m_Start - m_PreExtrapolationTime; - } - - /// <summary> - /// Given a time, returns whether it falls within the clip post-extrapolation - /// </summary> - /// <param name="sequenceTime">The time relative to the timeline</param> - public bool IsPostExtrapolatedTime(double sequenceTime) - { - return postExtrapolationMode != ClipExtrapolation.None && - (sequenceTime > end) && (sequenceTime - end < m_PostExtrapolationTime); - } - - /// <summary> - /// The start time of the clip, accounting for pre-extrapolation - /// </summary> - public double extrapolatedStart - { - get - { - if (m_PreExtrapolationMode != ClipExtrapolation.None) - return m_Start - m_PreExtrapolationTime; - - return m_Start; - } - } - - /// <summary> - /// The length of the clip in seconds, including extrapolation. - /// </summary> - public double extrapolatedDuration - { - get - { - double length = m_Duration; - - if (m_PostExtrapolationMode != ClipExtrapolation.None) - length += Math.Min(m_PostExtrapolationTime, kMaxTimeValue); - - if (m_PreExtrapolationMode != ClipExtrapolation.None) - length += m_PreExtrapolationTime; - - return length; - } - } - - static double GetExtrapolatedTime(double time, ClipExtrapolation mode, double duration) - { - if (duration == 0) - return 0; - - switch (mode) - { - case ClipExtrapolation.None: - break; - - case ClipExtrapolation.Loop: - if (time < 0) - time = duration - (-time % duration); - else if (time > duration) - time %= duration; - break; - - case ClipExtrapolation.Hold: - if (time < 0) - return 0; - if (time > duration) - return duration; - break; - - case ClipExtrapolation.PingPong: - if (time < 0) - { - time = duration * 2 - (-time % (duration * 2)); - time = duration - Math.Abs(time - duration); - } - else - { - time = time % (duration * 2.0); - time = duration - Math.Abs(time - duration); - } - break; - - case ClipExtrapolation.Continue: - break; - } - return time; - } - - /// <summary> - /// Creates an AnimationClip to store animated properties for the attached PlayableAsset. - /// </summary> - /// <remarks> - /// If curves already exists for this clip, this method produces no result regardless of the - /// value specified for curvesClipName. - /// </remarks> - /// <remarks> - /// When used from the editor, this method attempts to save the created curves clip to the TimelineAsset. - /// The TimelineAsset must already exist in the AssetDatabase to save the curves clip. If the TimelineAsset - /// does not exist, the curves clip is still created but it is not saved. - /// </remarks> - /// <param name="curvesClipName"> - /// The name of the AnimationClip to create. - /// This method does not ensure unique names. If you want a unique clip name, you must provide one. - /// See ObjectNames.GetUniqueName for information on a method that creates unique names. - /// </param> - public void CreateCurves(string curvesClipName) - { - if (m_AnimationCurves != null) - return; - - m_AnimationCurves = TimelineCreateUtilities.CreateAnimationClipForTrack(string.IsNullOrEmpty(curvesClipName) ? kDefaultCurvesName : curvesClipName, parentTrack, true); - } - - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - m_Version = k_LatestVersion; - } - - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - if (m_Version < k_LatestVersion) - { - UpgradeToLatestVersion(); - } - } - - /// <summary> - /// Outputs a more readable representation of the timeline clip as a string - /// </summary> - /// <returns></returns> - public override string ToString() - { - return UnityString.Format("{0} ({1:F2}, {2:F2}):{3:F2} | {4}", displayName, start, end, clipIn, parentTrack); - } - -#if UNITY_EDITOR - internal int DirtyIndex { get; private set; } - internal void MarkDirty() - { - DirtyIndex++; - } - - void UpdateDirty(double oldValue, double newValue) - { - if (oldValue != newValue) - DirtyIndex++; - } - -#else - void UpdateDirty(double oldValue, double newValue) {} -#endif - }; -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs.meta deleted file mode 100644 index ded129f..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineClip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 65f3a4c67e4927a478b7036bae1da0e3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs deleted file mode 100644 index f028a7a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs +++ /dev/null @@ -1,310 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Animations; -using UnityEngine.Audio; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - // Generic evaluation callback called after all the clips have been processed - internal interface ITimelineEvaluateCallback - { - void Evaluate(); - } - - -#if UNITY_EDITOR - /// <summary> - /// This Rebalancer class ensures that the interval tree structures stays balance regardless of whether the intervals inside change. - /// </summary> - class IntervalTreeRebalancer - { - private IntervalTree<RuntimeElement> m_Tree; - public IntervalTreeRebalancer(IntervalTree<RuntimeElement> tree) - { - m_Tree = tree; - } - - public bool Rebalance() - { - m_Tree.UpdateIntervals(); - return m_Tree.dirty; - } - } -#endif - - // The TimelinePlayable Playable - // This is the actual runtime playable that gets evaluated as part of a playable graph. - // It "compiles" a list of tracks into an IntervalTree of Runtime clips. - // At each frame, it advances time, then fetches the "intersection: of various time interval - // using the interval tree. - // Finally, on each intersecting clip, it will calculate each clips' local time, as well as - // blend weight and set them accordingly - - - /// <summary> - /// The root Playable generated by timeline. - /// </summary> - public class TimelinePlayable : PlayableBehaviour - { - private IntervalTree<RuntimeElement> m_IntervalTree = new IntervalTree<RuntimeElement>(); - private List<RuntimeElement> m_ActiveClips = new List<RuntimeElement>(); - private List<RuntimeElement> m_CurrentListOfActiveClips; - private int m_ActiveBit = 0; - - private List<ITimelineEvaluateCallback> m_EvaluateCallbacks = new List<ITimelineEvaluateCallback>(); - - private Dictionary<TrackAsset, Playable> m_PlayableCache = new Dictionary<TrackAsset, Playable>(); - - internal static bool muteAudioScrubbing = true; - -#if UNITY_EDITOR - private IntervalTreeRebalancer m_Rebalancer; -#endif - /// <summary> - /// Creates an instance of a Timeline - /// </summary> - /// <param name="graph">The playable graph to inject the timeline.</param> - /// <param name="tracks">The list of tracks to compile</param> - /// <param name="go">The GameObject that initiated the compilation</param> - /// <param name="autoRebalance">In the editor, whether the graph should account for the possibility of changing clip times</param> - /// <param name="createOutputs">Whether to create PlayableOutputs in the graph</param> - /// <returns>A subgraph with the playable containing a TimelinePlayable behaviour as the root</returns> - public static ScriptPlayable<TimelinePlayable> Create(PlayableGraph graph, IEnumerable<TrackAsset> tracks, GameObject go, bool autoRebalance, bool createOutputs) - { - if (tracks == null) - throw new ArgumentNullException("Tracks list is null", "tracks"); - - if (go == null) - throw new ArgumentNullException("GameObject parameter is null", "go"); - - var playable = ScriptPlayable<TimelinePlayable>.Create(graph); - playable.SetTraversalMode(PlayableTraversalMode.Passthrough); - var sequence = playable.GetBehaviour(); - sequence.Compile(graph, playable, tracks, go, autoRebalance, createOutputs); - return playable; - } - - /// <summary> - /// Compiles the subgraph of this timeline - /// </summary> - /// <param name="graph">The playable graph to inject the timeline.</param> - /// <param name="timelinePlayable"></param> - /// <param name="tracks">The list of tracks to compile</param> - /// <param name="go">The GameObject that initiated the compilation</param> - /// <param name="autoRebalance">In the editor, whether the graph should account for the possibility of changing clip times</param> - /// <param name="createOutputs">Whether to create PlayableOutputs in the graph</param> - public void Compile(PlayableGraph graph, Playable timelinePlayable, IEnumerable<TrackAsset> tracks, GameObject go, bool autoRebalance, bool createOutputs) - { - if (tracks == null) - throw new ArgumentNullException("Tracks list is null", "tracks"); - - if (go == null) - throw new ArgumentNullException("GameObject parameter is null", "go"); - - var outputTrackList = new List<TrackAsset>(tracks); - var maximumNumberOfIntersections = outputTrackList.Count * 2 + outputTrackList.Count; // worse case: 2 overlapping clips per track + each track - m_CurrentListOfActiveClips = new List<RuntimeElement>(maximumNumberOfIntersections); - m_ActiveClips = new List<RuntimeElement>(maximumNumberOfIntersections); - - m_EvaluateCallbacks.Clear(); - m_PlayableCache.Clear(); - - CompileTrackList(graph, timelinePlayable, outputTrackList, go, createOutputs); - -#if UNITY_EDITOR - if (autoRebalance) - { - m_Rebalancer = new IntervalTreeRebalancer(m_IntervalTree); - } -#endif - } - - private void CompileTrackList(PlayableGraph graph, Playable timelinePlayable, IEnumerable<TrackAsset> tracks, GameObject go, bool createOutputs) - { - foreach (var track in tracks) - { - if (!track.IsCompilable()) - continue; - - if (!m_PlayableCache.ContainsKey(track)) - { - track.SortClips(); - CreateTrackPlayable(graph, timelinePlayable, track, go, createOutputs); - } - } - } - - void CreateTrackOutput(PlayableGraph graph, TrackAsset track, GameObject go, Playable playable, int port) - { - if (track.isSubTrack) - return; - - var bindings = track.outputs; - foreach (var binding in bindings) - { - var playableOutput = binding.CreateOutput(graph); - playableOutput.SetReferenceObject(binding.sourceObject); - playableOutput.SetSourcePlayable(playable, port); - playableOutput.SetWeight(1.0f); - - // only apply this on our animation track - if (track as AnimationTrack != null) - { - EvaluateWeightsForAnimationPlayableOutput(track, (AnimationPlayableOutput)playableOutput); -#if UNITY_EDITOR - if (!Application.isPlaying) - EvaluateAnimationPreviewUpdateCallback(track, (AnimationPlayableOutput)playableOutput); -#endif - } - if (playableOutput.IsPlayableOutputOfType<AudioPlayableOutput>()) - ((AudioPlayableOutput)playableOutput).SetEvaluateOnSeek(!muteAudioScrubbing); - - // If the track is the timeline marker track, assume binding is the PlayableDirector - if (track.timelineAsset.markerTrack == track) - { - var director = go.GetComponent<PlayableDirector>(); - playableOutput.SetUserData(director); - foreach (var c in go.GetComponents<INotificationReceiver>()) - { - playableOutput.AddNotificationReceiver(c); - } - } - } - } - - void EvaluateWeightsForAnimationPlayableOutput(TrackAsset track, AnimationPlayableOutput animOutput) - { - m_EvaluateCallbacks.Add(new AnimationOutputWeightProcessor(animOutput)); - } - - void EvaluateAnimationPreviewUpdateCallback(TrackAsset track, AnimationPlayableOutput animOutput) - { - m_EvaluateCallbacks.Add(new AnimationPreviewUpdateCallback(animOutput)); - } - - private static Playable CreatePlayableGraph(PlayableGraph graph, TrackAsset asset, GameObject go, IntervalTree<RuntimeElement> tree, Playable timelinePlayable) - { - return asset.CreatePlayableGraph(graph, go, tree, timelinePlayable); - } - - private Playable CreateTrackPlayable(PlayableGraph graph, Playable timelinePlayable, TrackAsset track, GameObject go, bool createOutputs) - { - if (!track.IsCompilable()) // where parents are not compilable (group tracks) - return timelinePlayable; - - Playable playable; - if (m_PlayableCache.TryGetValue(track, out playable)) - return playable; - - if (track.name == "root") - return timelinePlayable; - - TrackAsset parentActor = track.parent as TrackAsset; - var parentPlayable = parentActor != null ? CreateTrackPlayable(graph, timelinePlayable, parentActor, go, createOutputs) : timelinePlayable; - var actorPlayable = CreatePlayableGraph(graph, track, go, m_IntervalTree, timelinePlayable); - bool connected = false; - - if (!actorPlayable.IsValid()) - { - // if a track says it's compilable, but returns Playable.Null, that can screw up the whole graph. - throw new InvalidOperationException(track.name + "(" + track.GetType() + ") did not produce a valid playable. Use the compilable property to indicate whether the track is valid for processing"); - } - - - // Special case for animation tracks - if (parentPlayable.IsValid() && actorPlayable.IsValid()) - { - int port = parentPlayable.GetInputCount(); - parentPlayable.SetInputCount(port + 1); - connected = graph.Connect(actorPlayable, 0, parentPlayable, port); - parentPlayable.SetInputWeight(port, 1.0f); - } - - if (createOutputs && connected) - { - CreateTrackOutput(graph, track, go, parentPlayable, parentPlayable.GetInputCount() - 1); - } - - CacheTrack(track, actorPlayable, connected ? (parentPlayable.GetInputCount() - 1) : -1, parentPlayable); - return actorPlayable; - } - - /// <summary> - /// Overridden to handle synchronizing time on the timeline instance. - /// </summary> - /// <param name="playable">The Playable that owns the current PlayableBehaviour.</param> - /// <param name="info">A FrameData structure that contains information about the current frame context.</param> - public override void PrepareFrame(Playable playable, FrameData info) - { -#if UNITY_EDITOR - if (m_Rebalancer != null) - m_Rebalancer.Rebalance(); -#endif - - // force seek if we are being evaluated - // or if our time has jumped. This is used to - // resynchronize - Evaluate(playable, info); - } - - private void Evaluate(Playable playable, FrameData frameData) - { - if (m_IntervalTree == null) - return; - - double localTime = playable.GetTime(); - m_ActiveBit = m_ActiveBit == 0 ? 1 : 0; - - m_CurrentListOfActiveClips.Clear(); - m_IntervalTree.IntersectsWith(DiscreteTime.GetNearestTick(localTime), m_CurrentListOfActiveClips); - - foreach (var c in m_CurrentListOfActiveClips) - { - c.intervalBit = m_ActiveBit; - if (frameData.timeLooped) - c.Reset(); - } - - // all previously active clips having a different intervalBit flag are not - // in the current intersection, therefore are considered becoming disabled at this frame - var timelineEnd = playable.GetDuration(); - foreach (var c in m_ActiveClips) - { - if (c.intervalBit != m_ActiveBit) - { - var clipEnd = (double)DiscreteTime.FromTicks(c.intervalEnd); - var time = frameData.timeLooped ? Math.Min(clipEnd, timelineEnd) : Math.Min(localTime, clipEnd); - c.EvaluateAt(time, frameData); - c.enable = false; - } - } - - m_ActiveClips.Clear(); - // case 998642 - don't use m_ActiveClips.AddRange, as in 4.6 .Net scripting it causes GC allocs - for (var a = 0; a < m_CurrentListOfActiveClips.Count; a++) - { - m_CurrentListOfActiveClips[a].EvaluateAt(localTime, frameData); - m_ActiveClips.Add(m_CurrentListOfActiveClips[a]); - } - - int count = m_EvaluateCallbacks.Count; - for (int i = 0; i < count; i++) - { - m_EvaluateCallbacks[i].Evaluate(); - } - } - - private void CacheTrack(TrackAsset track, Playable playable, int port, Playable parent) - { - m_PlayableCache[track] = playable; - } - - //necessary to build on AOT platforms - static void ForAOTCompilationOnly() - { - new List<IntervalTree<RuntimeElement>.Entry>(); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs.meta deleted file mode 100644 index cb373dd..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelinePlayable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 80b10e1c58509a449a3c5aecc07d4455 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs deleted file mode 100644 index cc0f607..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs +++ /dev/null @@ -1,1264 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using UnityEngine.Animations; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// A PlayableAsset representing a track inside a timeline. - /// </summary> - [Serializable] - [IgnoreOnPlayableTrack] - public abstract partial class TrackAsset : PlayableAsset, IPropertyPreview, ICurvesOwner - { - // Internal caches used to avoid memory allocation during graph construction - private struct TransientBuildData - { - public List<TrackAsset> trackList; - public List<TimelineClip> clipList; - public List<IMarker> markerList; - - public static TransientBuildData Create() - { - return new TransientBuildData() - { - trackList = new List<TrackAsset>(20), - clipList = new List<TimelineClip>(500), - markerList = new List<IMarker>(100), - }; - } - - public void Clear() - { - trackList.Clear(); - clipList.Clear(); - markerList.Clear(); - } - } - - private static TransientBuildData s_BuildData = TransientBuildData.Create(); - - internal const string kDefaultCurvesName = "Track Parameters"; - - internal static event Action<TimelineClip, GameObject, Playable> OnClipPlayableCreate; - internal static event Action<TrackAsset, GameObject, Playable> OnTrackAnimationPlayableCreate; - - [SerializeField, HideInInspector] bool m_Locked; - [SerializeField, HideInInspector] bool m_Muted; - [SerializeField, HideInInspector] string m_CustomPlayableFullTypename = string.Empty; - [SerializeField, HideInInspector] AnimationClip m_Curves; - [SerializeField, HideInInspector] PlayableAsset m_Parent; - [SerializeField, HideInInspector] List<ScriptableObject> m_Children; - - [NonSerialized] int m_ItemsHash; - [NonSerialized] TimelineClip[] m_ClipsCache; - - DiscreteTime m_Start; - DiscreteTime m_End; - bool m_CacheSorted; - bool? m_SupportsNotifications; - - static TrackAsset[] s_EmptyCache = new TrackAsset[0]; - IEnumerable<TrackAsset> m_ChildTrackCache; - - static Dictionary<Type, TrackBindingTypeAttribute> s_TrackBindingTypeAttributeCache = new Dictionary<Type, TrackBindingTypeAttribute>(); - - [SerializeField, HideInInspector] protected internal List<TimelineClip> m_Clips = new List<TimelineClip>(); - - [SerializeField, HideInInspector] MarkerList m_Markers = new MarkerList(0); - -#if UNITY_EDITOR - internal int DirtyIndex { get; private set; } - internal void MarkDirty() - { - DirtyIndex++; - foreach (var clip in GetClips()) - { - if (clip != null) - clip.MarkDirty(); - } - } - -#endif - - /// <summary> - /// The start time, in seconds, of this track - /// </summary> - public double start - { - get - { - UpdateDuration(); - return (double)m_Start; - } - } - - /// <summary> - /// The end time, in seconds, of this track - /// </summary> - public double end - { - get - { - UpdateDuration(); - return (double)m_End; - } - } - - /// <summary> - /// The length, in seconds, of this track - /// </summary> - public sealed override double duration - { - get - { - UpdateDuration(); - return (double)(m_End - m_Start); - } - } - - /// <summary> - /// Whether the track is muted or not. - /// </summary> - /// <remarks> - /// A muted track is excluded from the generated PlayableGraph - /// </remarks> - public bool muted - { - get { return m_Muted; } - set { m_Muted = value; } - } - - /// <summary> - /// The muted state of a track. - /// </summary> - /// <remarks> - /// A track is also muted when one of its parent tracks are muted. - /// </remarks> - public bool mutedInHierarchy - { - get - { - if (muted) - return true; - - TrackAsset p = this; - while (p.parent as TrackAsset != null) - { - p = (TrackAsset)p.parent; - if (p as GroupTrack != null) - return p.mutedInHierarchy; - } - - return false; - } - } - - /// <summary> - /// The TimelineAsset that this track belongs to. - /// </summary> - public TimelineAsset timelineAsset - { - get - { - var node = this; - while (node != null) - { - if (node.parent == null) - return null; - - var seq = node.parent as TimelineAsset; - if (seq != null) - return seq; - - node = node.parent as TrackAsset; - } - return null; - } - } - - /// <summary> - /// The owner of this track. - /// </summary> - /// <remarks> - /// If this track is a subtrack, the parent is a TrackAsset. Otherwise the parent is a TimelineAsset. - /// </remarks> - public PlayableAsset parent - { - get { return m_Parent; } - internal set { m_Parent = value; } - } - - /// <summary> - /// A list of clips owned by this track - /// </summary> - /// <returns>Returns an enumerable list of clips owned by the track.</returns> - public IEnumerable<TimelineClip> GetClips() - { - return clips; - } - - internal TimelineClip[] clips - { - get - { - if (m_Clips == null) - m_Clips = new List<TimelineClip>(); - - if (m_ClipsCache == null) - { - m_CacheSorted = false; - m_ClipsCache = m_Clips.ToArray(); - } - - return m_ClipsCache; - } - } - - /// <summary> - /// Whether this track is considered empty. - /// </summary> - /// <remarks> - /// A track is considered empty when it does not contain a TimelineClip, Marker, or Curve. - /// </remarks> - /// <remarks> - /// Empty tracks are not included in the playable graph. - /// </remarks> - public virtual bool isEmpty - { - get { return !hasClips && !hasCurves && GetMarkerCount() == 0; } - } - - /// <summary> - /// Whether this track contains any TimelineClip. - /// </summary> - public bool hasClips - { - get { return m_Clips != null && m_Clips.Count != 0; } - } - - /// <summary> - /// Whether this track contains animated properties for the attached PlayableAsset. - /// </summary> - /// <remarks> - /// This property is false if the curves property is null or if it contains no information. - /// </remarks> - public bool hasCurves - { - get { return m_Curves != null && !m_Curves.empty; } - } - - /// <summary> - /// Returns whether this track is a subtrack - /// </summary> - public bool isSubTrack - { - get - { - var owner = parent as TrackAsset; - return owner != null && owner.GetType() == GetType(); - } - } - - - /// <summary> - /// Returns a description of the PlayableOutputs that will be created by this track. - /// </summary> - public override IEnumerable<PlayableBinding> outputs - { - get - { - TrackBindingTypeAttribute attribute; - if (!s_TrackBindingTypeAttributeCache.TryGetValue(GetType(), out attribute)) - { - attribute = (TrackBindingTypeAttribute)Attribute.GetCustomAttribute(GetType(), typeof(TrackBindingTypeAttribute)); - s_TrackBindingTypeAttributeCache.Add(GetType(), attribute); - } - - var trackBindingType = attribute != null ? attribute.type : null; - yield return ScriptPlayableBinding.Create(name, this, trackBindingType); - } - } - - /// <summary> - /// The list of subtracks or child tracks attached to this track. - /// </summary> - /// <returns>Returns an enumerable list of child tracks owned directly by this track.</returns> - /// <remarks> - /// In the case of GroupTracks, this returns all tracks contained in the group. This will return the all subtracks or override tracks, if supported by the track. - /// </remarks> - public IEnumerable<TrackAsset> GetChildTracks() - { - UpdateChildTrackCache(); - return m_ChildTrackCache; - } - - internal string customPlayableTypename - { - get { return m_CustomPlayableFullTypename; } - set { m_CustomPlayableFullTypename = value; } - } - - /// <summary> - /// An animation clip storing animated properties of the attached PlayableAsset - /// </summary> - public AnimationClip curves - { - get { return m_Curves; } - internal set { m_Curves = value; } - } - - string ICurvesOwner.defaultCurvesName - { - get { return kDefaultCurvesName; } - } - - Object ICurvesOwner.asset - { - get { return this; } - } - - Object ICurvesOwner.assetOwner - { - get { return timelineAsset; } - } - - TrackAsset ICurvesOwner.targetTrack - { - get { return this; } - } - - // for UI where we need to detect 'null' objects - internal List<ScriptableObject> subTracksObjects - { - get { return m_Children; } - } - - /// <summary> - /// The local locked state of the track. - /// </summary> - /// <remarks> - /// Note that locking a track only affects operations in the Timeline Editor. It does not prevent other API calls from changing a track or it's clips. - /// - /// This returns or sets the local locked state of the track. A track may still be locked for editing because one or more of it's parent tracks in the hierarchy is locked. Use lockedInHierarchy to test if a track is locked because of it's own locked state or because of a parent tracks locked state. - /// </remarks> - public bool locked - { - get { return m_Locked; } - set { m_Locked = value; } - } - - /// <summary> - /// The locked state of a track. (RO) - /// </summary> - /// <remarks> - /// Note that locking a track only affects operations in the Timeline Editor. It does not prevent other API calls from changing a track or it's clips. - /// - /// This indicates whether a track is locked in the Timeline Editor because either it's locked property is enabled or a parent track is locked. - /// </remarks> - public bool lockedInHierarchy - { - get - { - if (locked) - return true; - - TrackAsset p = this; - while (p.parent as TrackAsset != null) - { - p = (TrackAsset)p.parent; - if (p as GroupTrack != null) - return p.lockedInHierarchy; - } - - return false; - } - } - - /// <summary> - /// Indicates if a track accepts markers that implement <see cref="UnityEngine.Playables.INotification"/>. - /// </summary> - /// <remarks> - /// Only tracks with a bound object of type <see cref="UnityEngine.GameObject"/> or <see cref="UnityEngine.Component"/> can accept notifications. - /// </remarks> - public bool supportsNotifications - { - get - { - if (!m_SupportsNotifications.HasValue) - { - m_SupportsNotifications = NotificationUtilities.TrackTypeSupportsNotifications(GetType()); - } - - return m_SupportsNotifications.Value; - } - } - - void __internalAwake() //do not use OnEnable, since users will want it to initialize their class - { - if (m_Clips == null) - m_Clips = new List<TimelineClip>(); - - m_ChildTrackCache = null; - if (m_Children == null) - m_Children = new List<ScriptableObject>(); -#if UNITY_EDITOR - // validate the array. DON'T remove Unity null objects, just actual null objects - for (int i = m_Children.Count - 1; i >= 0; i--) - { - object o = m_Children[i]; - if (o == null) - { - Debug.LogWarning("Empty child track found while loading timeline. It will be removed."); - m_Children.RemoveAt(i); - } - } -#endif - } - - /// <summary> - /// Creates an AnimationClip to store animated properties for the attached PlayableAsset. - /// </summary> - /// <remarks> - /// If curves already exists for this track, this method produces no result regardless of - /// the value specified for curvesClipName. - /// </remarks> - /// <remarks> - /// When used from the editor, this method attempts to save the created curves clip to the TimelineAsset. - /// The TimelineAsset must already exist in the AssetDatabase to save the curves clip. If the TimelineAsset - /// does not exist, the curves clip is still created but it is not saved. - /// </remarks> - /// <param name="curvesClipName"> - /// The name of the AnimationClip to create. - /// This method does not ensure unique names. If you want a unique clip name, you must provide one. - /// See ObjectNames.GetUniqueName for information on a method that creates unique names. - /// </param> - public void CreateCurves(string curvesClipName) - { - if (m_Curves != null) - return; - - m_Curves = TimelineCreateUtilities.CreateAnimationClipForTrack(string.IsNullOrEmpty(curvesClipName) ? kDefaultCurvesName : curvesClipName, this, true); - } - - /// <summary> - /// Creates a mixer used to blend playables generated by clips on the track. - /// </summary> - /// <param name="graph">The graph to inject playables into</param> - /// <param name="go">The GameObject that requested the graph.</param> - /// <param name="inputCount">The number of playables from clips that will be inputs to the returned mixer</param> - /// <returns>A handle to the [[Playable]] representing the mixer.</returns> - /// <remarks> - /// Override this method to provide a custom playable for mixing clips on a graph. - /// </remarks> - public virtual Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) - { - return Playable.Create(graph, inputCount); - } - - /// <summary> - /// Overrides PlayableAsset.CreatePlayable(). Not used in Timeline. - /// </summary> - public sealed override Playable CreatePlayable(PlayableGraph graph, GameObject go) - { - return Playable.Null; - } - - /// <summary> - /// Creates a TimelineClip on this track. - /// </summary> - /// <returns>Returns a new TimelineClip that is attached to the track.</returns> - /// <remarks> - /// The type of the playable asset attached to the clip is determined by TrackClip attributes that decorate the TrackAsset derived class - /// </remarks> - public TimelineClip CreateDefaultClip() - { - var trackClipTypeAttributes = GetType().GetCustomAttributes(typeof(TrackClipTypeAttribute), true); - Type playableAssetType = null; - foreach (var trackClipTypeAttribute in trackClipTypeAttributes) - { - var attribute = trackClipTypeAttribute as TrackClipTypeAttribute; - if (attribute != null && typeof(IPlayableAsset).IsAssignableFrom(attribute.inspectedType) && typeof(ScriptableObject).IsAssignableFrom(attribute.inspectedType)) - { - playableAssetType = attribute.inspectedType; - break; - } - } - - if (playableAssetType == null) - { - Debug.LogWarning("Cannot create a default clip for type " + GetType()); - return null; - } - return CreateAndAddNewClipOfType(playableAssetType); - } - - /// <summary> - /// Creates a clip on the track with a playable asset attached, whose derived type is specified by T - /// </summary> - /// <typeparam name="T">A PlayableAsset derived type</typeparam> - /// <returns>Returns a TimelineClip whose asset is of type T</returns> - /// <remarks> - /// Throws an InvalidOperationException if the specified type is not supported by the track. - /// Supported types are determined by TrackClip attributes that decorate the TrackAsset derived class - /// </remarks> - public TimelineClip CreateClip<T>() where T : ScriptableObject, IPlayableAsset - { - return CreateClip(typeof(T)); - } - - /// <summary> - /// Creates a marker of the requested type, at a specific time, and adds the marker to the current asset. - /// </summary> - /// <param name="type">The type of marker.</param> - /// <param name="time">The time where the marker is created.</param> - /// <returns>Returns the instance of the created marker.</returns> - /// <remarks> - /// All markers that implement IMarker and inherit from <see cref="UnityEngine.ScriptableObject"/> are supported. - /// Markers that implement the INotification interface cannot be added to tracks that do not support notifications. - /// CreateMarker will throw an <code>InvalidOperationException</code> with tracks that do not support notifications if <code>type</code> implements the INotification interface. - /// </remarks> - /// <seealso cref="UnityEngine.Timeline.Marker"/> - /// <seealso cref="UnityEngine.Timeline.TrackAsset.supportsNotifications"/> - public IMarker CreateMarker(Type type, double time) - { - return m_Markers.CreateMarker(type, time, this); - } - - /// <summary> - /// Creates a marker of the requested type, at a specific time, and adds the marker to the current asset. - /// </summary> - /// <param name="time">The time where the marker is created.</param> - /// <returns>Returns the instance of the created marker.</returns> - /// <remarks> - /// All markers that implement IMarker and inherit from <see cref="UnityEngine.ScriptableObject"/> are supported. - /// CreateMarker will throw an <code>InvalidOperationException</code> with tracks that do not support notifications if <code>T</code> implements the INotification interface. - /// </remarks> - /// <seealso cref="UnityEngine.Timeline.Marker"/> - /// <seealso cref="UnityEngine.Timeline.TrackAsset.supportsNotifications"/> - public T CreateMarker<T>(double time) where T : ScriptableObject, IMarker - { - return (T)CreateMarker(typeof(T), time); - } - - /// <summary> - /// Removes a marker from the current asset. - /// </summary> - /// <param name="marker">The marker instance to be removed.</param> - /// <returns>Returns true if the marker instance was successfully removed. Returns false otherwise.</returns> - public bool DeleteMarker(IMarker marker) - { - return m_Markers.Remove(marker); - } - - /// <summary> - /// Returns an enumerable list of markers on the current asset. - /// </summary> - /// <returns>The list of markers on the asset. - /// </returns> - public IEnumerable<IMarker> GetMarkers() - { - return m_Markers.GetMarkers(); - } - - /// <summary> - /// Returns the number of markers on the current asset. - /// </summary> - /// <returns>The number of markers.</returns> - public int GetMarkerCount() - { - return m_Markers.Count; - } - - /// <summary> - /// Returns the marker at a given position, on the current asset. - /// </summary> - /// <param name="idx">The index of the marker to be returned.</param> - /// <returns>The marker.</returns> - /// <remarks>The ordering of the markers is not guaranteed. - /// </remarks> - public IMarker GetMarker(int idx) - { - return m_Markers[idx]; - } - - internal TimelineClip CreateClip(System.Type requestedType) - { - if (ValidateClipType(requestedType)) - return CreateAndAddNewClipOfType(requestedType); - - throw new InvalidOperationException("Clips of type " + requestedType + " are not permitted on tracks of type " + GetType()); - } - - internal TimelineClip CreateAndAddNewClipOfType(Type requestedType) - { - var newClip = CreateClipOfType(requestedType); - AddClip(newClip); - return newClip; - } - - internal TimelineClip CreateClipOfType(Type requestedType) - { - if (!ValidateClipType(requestedType)) - throw new System.InvalidOperationException("Clips of type " + requestedType + " are not permitted on tracks of type " + GetType()); - - var playableAsset = CreateInstance(requestedType); - if (playableAsset == null) - { - throw new System.InvalidOperationException("Could not create an instance of the ScriptableObject type " + requestedType.Name); - } - playableAsset.name = requestedType.Name; - TimelineCreateUtilities.SaveAssetIntoObject(playableAsset, this); - TimelineUndo.RegisterCreatedObjectUndo(playableAsset, "Create Clip"); - - return CreateClipFromAsset(playableAsset); - } - - /// <summary> - /// Creates a timeline clip from an existing playable asset. - /// </summary> - /// <param name="asset"></param> - /// <returns></returns> - internal TimelineClip CreateClipFromPlayableAsset(IPlayableAsset asset) - { - if (asset == null) - throw new ArgumentNullException("asset"); - - if ((asset as ScriptableObject) == null) - throw new System.ArgumentException("CreateClipFromPlayableAsset " + " only supports ScriptableObject-derived Types"); - - if (!ValidateClipType(asset.GetType())) - throw new System.InvalidOperationException("Clips of type " + asset.GetType() + " are not permitted on tracks of type " + GetType()); - - return CreateClipFromAsset(asset as ScriptableObject); - } - - private TimelineClip CreateClipFromAsset(ScriptableObject playableAsset) - { - TimelineUndo.PushUndo(this, "Create Clip"); - - var newClip = CreateNewClipContainerInternal(); - newClip.displayName = playableAsset.name; - newClip.asset = playableAsset; - - IPlayableAsset iPlayableAsset = playableAsset as IPlayableAsset; - if (iPlayableAsset != null) - { - var candidateDuration = iPlayableAsset.duration; - - if (!double.IsInfinity(candidateDuration) && candidateDuration > 0) - newClip.duration = Math.Min(Math.Max(candidateDuration, TimelineClip.kMinDuration), TimelineClip.kMaxTimeValue); - } - - try - { - OnCreateClip(newClip); - } - catch (Exception e) - { - Debug.LogError(e.Message, playableAsset); - return null; - } - - return newClip; - } - - internal IEnumerable<ScriptableObject> GetMarkersRaw() - { - return m_Markers.GetRawMarkerList(); - } - - internal void ClearMarkers() - { - m_Markers.Clear(); - } - - internal void AddMarker(ScriptableObject e) - { - m_Markers.Add(e); - } - - internal bool DeleteMarkerRaw(ScriptableObject marker) - { - return m_Markers.Remove(marker, timelineAsset, this); - } - - int GetTimeRangeHash() - { - double start = double.MaxValue, end = double.MinValue; - foreach (var marker in GetMarkers()) - { - if (!(marker is INotification)) - { - continue; - } - - if (marker.time < start) - start = marker.time; - if (marker.time > end) - end = marker.time; - } - - return start.GetHashCode().CombineHash(end.GetHashCode()); - } - - internal void AddClip(TimelineClip newClip) - { - if (!m_Clips.Contains(newClip)) - { - m_Clips.Add(newClip); - m_ClipsCache = null; - } - } - - Playable CreateNotificationsPlayable(PlayableGraph graph, Playable mixerPlayable, GameObject go, Playable timelinePlayable) - { - s_BuildData.markerList.Clear(); - GatherNotificiations(s_BuildData.markerList); - var notificationPlayable = NotificationUtilities.CreateNotificationsPlayable(graph, s_BuildData.markerList, go); - if (notificationPlayable.IsValid()) - { - notificationPlayable.GetBehaviour().timeSource = timelinePlayable; - if (mixerPlayable.IsValid()) - { - notificationPlayable.SetInputCount(1); - graph.Connect(mixerPlayable, 0, notificationPlayable, 0); - notificationPlayable.SetInputWeight(mixerPlayable, 1); - } - } - - return notificationPlayable; - } - - internal Playable CreatePlayableGraph(PlayableGraph graph, GameObject go, IntervalTree<RuntimeElement> tree, Playable timelinePlayable) - { - UpdateDuration(); - var mixerPlayable = Playable.Null; - if (CanCompileClipsRecursive()) - mixerPlayable = OnCreateClipPlayableGraph(graph, go, tree); - - var notificationsPlayable = CreateNotificationsPlayable(graph, mixerPlayable, go, timelinePlayable); - if (!notificationsPlayable.IsValid() && !mixerPlayable.IsValid()) - { - Debug.LogErrorFormat("Track {0} of type {1} has no notifications and returns an invalid mixer Playable", name, - GetType().FullName); - - return Playable.Create(graph); - } - - return notificationsPlayable.IsValid() ? notificationsPlayable : mixerPlayable; - } - - internal virtual Playable CompileClips(PlayableGraph graph, GameObject go, IList<TimelineClip> timelineClips, IntervalTree<RuntimeElement> tree) - { - var blend = CreateTrackMixer(graph, go, timelineClips.Count); - for (var c = 0; c < timelineClips.Count; c++) - { - var source = CreatePlayable(graph, go, timelineClips[c]); - if (source.IsValid()) - { - source.SetDuration(timelineClips[c].duration); - var clip = new RuntimeClip(timelineClips[c], source, blend); - tree.Add(clip); - graph.Connect(source, 0, blend, c); - blend.SetInputWeight(c, 0.0f); - } - } - ConfigureTrackAnimation(tree, go, blend); - return blend; - } - - void GatherCompilableTracks(IList<TrackAsset> tracks) - { - if (!muted && CanCompileClips()) - tracks.Add(this); - - foreach (var c in GetChildTracks()) - { - if (c != null) - c.GatherCompilableTracks(tracks); - } - } - - void GatherNotificiations(List<IMarker> markers) - { - if (!muted && CanCompileNotifications()) - markers.AddRange(GetMarkers()); - foreach (var c in GetChildTracks()) - { - if (c != null) - c.GatherNotificiations(markers); - } - } - - internal virtual Playable OnCreateClipPlayableGraph(PlayableGraph graph, GameObject go, IntervalTree<RuntimeElement> tree) - { - if (tree == null) - throw new ArgumentException("IntervalTree argument cannot be null", "tree"); - - if (go == null) - throw new ArgumentException("GameObject argument cannot be null", "go"); - - s_BuildData.Clear(); - GatherCompilableTracks(s_BuildData.trackList); - - // nothing to compile - if (s_BuildData.trackList.Count == 0) - return Playable.Null; - - // check if layers are supported - Playable layerMixer = Playable.Null; - ILayerable layerable = this as ILayerable; - if (layerable != null) - layerMixer = layerable.CreateLayerMixer(graph, go, s_BuildData.trackList.Count); - - if (layerMixer.IsValid()) - { - for (int i = 0; i < s_BuildData.trackList.Count; i++) - { - var mixer = s_BuildData.trackList[i].CompileClips(graph, go, s_BuildData.trackList[i].clips, tree); - if (mixer.IsValid()) - { - graph.Connect(mixer, 0, layerMixer, i); - layerMixer.SetInputWeight(i, 1.0f); - } - } - return layerMixer; - } - - // one track compiles. Add track mixer and clips - if (s_BuildData.trackList.Count == 1) - return s_BuildData.trackList[0].CompileClips(graph, go, s_BuildData.trackList[0].clips, tree); - - // no layer mixer provided. merge down all clips. - for (int i = 0; i < s_BuildData.trackList.Count; i++) - s_BuildData.clipList.AddRange(s_BuildData.trackList[i].clips); - -#if UNITY_EDITOR - bool applyWarning = false; - for (int i = 0; i < s_BuildData.trackList.Count; i++) - applyWarning |= i > 0 && s_BuildData.trackList[i].hasCurves; - - if (applyWarning) - Debug.LogWarning("A layered track contains animated fields, but no layer mixer has been provided. Animated fields on layers will be ignored. Override CreateLayerMixer in " + s_BuildData.trackList[0].GetType().Name + " and return a valid playable to support animated fields on layered tracks."); -#endif - // compile all the clips into a single mixer - return CompileClips(graph, go, s_BuildData.clipList, tree); - } - - internal void ConfigureTrackAnimation(IntervalTree<RuntimeElement> tree, GameObject go, Playable blend) - { - if (!hasCurves) - return; - - blend.SetAnimatedProperties(m_Curves); - tree.Add(new InfiniteRuntimeClip(blend)); - - if (OnTrackAnimationPlayableCreate != null) - OnTrackAnimationPlayableCreate.Invoke(this, go, blend); - } - - // sorts clips by start time - internal void SortClips() - { - var clipsAsArray = clips; // will alloc - if (!m_CacheSorted) - { - Array.Sort(clips, (clip1, clip2) => clip1.start.CompareTo(clip2.start)); - m_CacheSorted = true; - } - } - - // clears the clips after a clone - internal void ClearClipsInternal() - { - m_Clips = new List<TimelineClip>(); - m_ClipsCache = null; - } - - internal void ClearSubTracksInternal() - { - m_Children = new List<ScriptableObject>(); - Invalidate(); - } - - // called by an owned clip when it moves - internal void OnClipMove() - { - m_CacheSorted = false; - } - - internal TimelineClip CreateNewClipContainerInternal() - { - var clipContainer = new TimelineClip(this); - clipContainer.asset = null; - - // position clip at end of sequence - var newClipStart = 0.0; - for (var a = 0; a < m_Clips.Count - 1; a++) - { - var clipDuration = m_Clips[a].duration; - if (double.IsInfinity(clipDuration)) - clipDuration = TimelineClip.kDefaultClipDurationInSeconds; - newClipStart = Math.Max(newClipStart, m_Clips[a].start + clipDuration); - } - - clipContainer.mixInCurve = AnimationCurve.EaseInOut(0, 0, 1, 1); - clipContainer.mixOutCurve = AnimationCurve.EaseInOut(0, 1, 1, 0); - clipContainer.start = newClipStart; - clipContainer.duration = TimelineClip.kDefaultClipDurationInSeconds; - clipContainer.displayName = "untitled"; - return clipContainer; - } - - internal void AddChild(TrackAsset child) - { - if (child == null) - return; - - m_Children.Add(child); - child.parent = this; - Invalidate(); - } - - internal void MoveLastTrackBefore(TrackAsset asset) - { - if (m_Children == null || m_Children.Count < 2 || asset == null) - return; - - var lastTrack = m_Children[m_Children.Count - 1]; - if (lastTrack == asset) - return; - - for (int i = 0; i < m_Children.Count - 1; i++) - { - if (m_Children[i] == asset) - { - for (int j = m_Children.Count - 1; j > i; j--) - m_Children[j] = m_Children[j - 1]; - m_Children[i] = lastTrack; - Invalidate(); - break; - } - } - } - - internal bool RemoveSubTrack(TrackAsset child) - { - if (m_Children.Remove(child)) - { - Invalidate(); - child.parent = null; - return true; - } - return false; - } - - internal void RemoveClip(TimelineClip clip) - { - m_Clips.Remove(clip); - m_ClipsCache = null; - } - - // Is this track compilable for the sequence - // calculate the time interval that this track will be evaluated in. - internal virtual void GetEvaluationTime(out double outStart, out double outDuration) - { - outStart = double.PositiveInfinity; - var outEnd = double.NegativeInfinity; - - if (hasCurves) - { - outStart = 0.0; - outEnd = TimeUtility.GetAnimationClipLength(curves); - } - - foreach (var clip in clips) - { - outStart = Math.Min(clip.start, outStart); - outEnd = Math.Max(clip.end, outEnd); - } - - if (HasNotifications()) - { - var notificationDuration = GetNotificationDuration(); - outStart = Math.Min(notificationDuration, outStart); - outEnd = Math.Max(notificationDuration, outEnd); - } - - if (double.IsInfinity(outStart) || double.IsInfinity(outEnd)) - outStart = outDuration = 0.0; - else - outDuration = outEnd - outStart; - } - - // calculate the time interval that the sequence will use to determine length. - // by default this is the same as the evaluation, but subclasses can have different - // behaviour - internal virtual void GetSequenceTime(out double outStart, out double outDuration) - { - GetEvaluationTime(out outStart, out outDuration); - } - - /// <summary> - /// Called by the Timeline Editor to gather properties requiring preview. - /// </summary> - /// <param name="director">The PlayableDirector invoking the preview</param> - /// <param name="driver">PropertyCollector used to gather previewable properties</param> - public virtual void GatherProperties(PlayableDirector director, IPropertyCollector driver) - { - // only push on game objects if there is a binding. Subtracks - // will use objects on the stack - var gameObject = GetGameObjectBinding(director); - if (gameObject != null) - driver.PushActiveGameObject(gameObject); - - if (hasCurves) - driver.AddObjectProperties(this, m_Curves); - - foreach (var clip in clips) - { - if (clip.curves != null && clip.asset != null) - driver.AddObjectProperties(clip.asset, clip.curves); - - IPropertyPreview modifier = clip.asset as IPropertyPreview; - if (modifier != null) - modifier.GatherProperties(director, driver); - } - - foreach (var subtrack in GetChildTracks()) - { - if (subtrack != null) - subtrack.GatherProperties(director, driver); - } - - if (gameObject != null) - driver.PopActiveGameObject(); - } - - internal GameObject GetGameObjectBinding(PlayableDirector director) - { - if (director == null) - return null; - - var binding = director.GetGenericBinding(this); - - var gameObject = binding as GameObject; - if (gameObject != null) - return gameObject; - - var comp = binding as Component; - if (comp != null) - return comp.gameObject; - - return null; - } - - internal bool ValidateClipType(Type clipType) - { - var attrs = GetType().GetCustomAttributes(typeof(TrackClipTypeAttribute), true); - for (var c = 0; c < attrs.Length; ++c) - { - var attr = (TrackClipTypeAttribute)attrs[c]; - if (attr.inspectedType.IsAssignableFrom(clipType)) - return true; - } - - // special case for playable tracks, they accept all clips (in the runtime) - return typeof(PlayableTrack).IsAssignableFrom(GetType()) && - typeof(IPlayableAsset).IsAssignableFrom(clipType) && - typeof(ScriptableObject).IsAssignableFrom(clipType); - } - - /// <summary> - /// Called when a clip is created on a track. - /// </summary> - /// <param name="clip">The timeline clip added to this track</param> - /// <remarks>Use this method to set default values on a timeline clip, or it's PlayableAsset.</remarks> - protected virtual void OnCreateClip(TimelineClip clip) {} - - void UpdateDuration() - { - // check if something changed in the clips that require a re-calculation of the evaluation times. - var itemsHash = CalculateItemsHash(); - if (itemsHash == m_ItemsHash) - return; - m_ItemsHash = itemsHash; - - double trackStart, trackDuration; - GetSequenceTime(out trackStart, out trackDuration); - - m_Start = (DiscreteTime)trackStart; - m_End = (DiscreteTime)(trackStart + trackDuration); - - // calculate the extrapolations time. - // TODO Extrapolation time should probably be extracted from the SequenceClip so only a track is aware of it. - this.CalculateExtrapolationTimes(); - } - - protected internal virtual int CalculateItemsHash() - { - return HashUtility.CombineHash(GetClipsHash(), GetAnimationClipHash(m_Curves), GetTimeRangeHash()); - } - - /// <summary> - /// Constructs a Playable from a TimelineClip. - /// </summary> - /// <param name="graph">PlayableGraph that will own the playable.</param> - /// <param name="gameObject">The GameObject that builds the PlayableGraph.</param> - /// <param name="clip">The TimelineClip to construct a playable for.</param> - /// <returns>A playable that will be set as an input to the Track Mixer playable, or Playable.Null if the clip does not have a valid PlayableAsset</returns> - /// <exception cref="ArgumentException">Thrown if the specified PlayableGraph is not valid.</exception> - /// <exception cref="ArgumentNullException">Thrown if the specified TimelineClip is not valid.</exception> - /// <remarks> - /// By default, this method invokes Playable.CreatePlayable, sets animated properties, and sets the speed of the created playable. Override this method to change this default implementation. - /// </remarks> - protected virtual Playable CreatePlayable(PlayableGraph graph, GameObject gameObject, TimelineClip clip) - { - if (!graph.IsValid()) - throw new ArgumentException("graph must be a valid PlayableGraph"); - if (clip == null) - throw new ArgumentNullException("clip"); - - var asset = clip.asset as IPlayableAsset; - if (asset != null) - { - var handle = asset.CreatePlayable(graph, gameObject); - if (handle.IsValid()) - { - handle.SetAnimatedProperties(clip.curves); - handle.SetSpeed(clip.timeScale); - if (OnClipPlayableCreate != null) - OnClipPlayableCreate(clip, gameObject, handle); - } - return handle; - } - return Playable.Null; - } - - internal void Invalidate() - { - m_ChildTrackCache = null; - var timeline = timelineAsset; - if (timeline != null) - { - timeline.Invalidate(); - } - } - - internal double GetNotificationDuration() - { - if (!supportsNotifications) - { - return 0; - } - - var maxTime = 0.0; - foreach (var marker in GetMarkers()) - { - if (!(marker is INotification)) - { - continue; - } - maxTime = Math.Max(maxTime, marker.time); - } - - return maxTime; - } - - internal virtual bool CanCompileClips() - { - return hasClips || hasCurves; - } - - internal bool IsCompilable() - { - var isContainer = typeof(GroupTrack).IsAssignableFrom(GetType()); - - if (isContainer) - return false; - - var ret = !mutedInHierarchy && (CanCompileClips() || CanCompileNotifications()); - if (!ret) - { - foreach (var t in GetChildTracks()) - { - if (t.IsCompilable()) - return true; - } - } - - return ret; - } - - private void UpdateChildTrackCache() - { - if (m_ChildTrackCache == null) - { - if (m_Children == null || m_Children.Count == 0) - m_ChildTrackCache = s_EmptyCache; - else - { - var childTracks = new List<TrackAsset>(m_Children.Count); - for (int i = 0; i < m_Children.Count; i++) - { - var subTrack = m_Children[i] as TrackAsset; - if (subTrack != null) - childTracks.Add(subTrack); - } - m_ChildTrackCache = childTracks; - } - } - } - - internal virtual int Hash() - { - return clips.Length + (m_Markers.Count << 16); - } - - int GetClipsHash() - { - var hash = 0; - foreach (var clip in m_Clips) - { - hash = hash.CombineHash(clip.Hash()); - } - return hash; - } - - protected static int GetAnimationClipHash(AnimationClip clip) - { - var hash = 0; - if (clip != null && !clip.empty) - hash = hash.CombineHash(clip.frameRate.GetHashCode()) - .CombineHash(clip.length.GetHashCode()); - - return hash; - } - - bool HasNotifications() - { - return m_Markers.HasNotifications(); - } - - bool CanCompileNotifications() - { - return supportsNotifications && m_Markers.HasNotifications(); - } - - bool CanCompileClipsRecursive() - { - if (CanCompileClips()) - return true; - foreach (var track in GetChildTracks()) - { - if (track.CanCompileClipsRecursive()) - return true; - } - - return false; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs.meta deleted file mode 100644 index 06213be..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TrackAsset.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3ad53269c7421084ab67f804591994e0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef deleted file mode 100644 index d4d4bbe..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "Unity.Timeline", - "references": [], - "includePlatforms": [], - "excludePlatforms": [] -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef.meta deleted file mode 100644 index 454c5db..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Unity.Timeline.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f06555f75b070af458a003d92f9efb00 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities.meta deleted file mode 100644 index b9c8db0..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f8730045d7da0f84cb11c0d868899577 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs deleted file mode 100644 index b8ab669..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs +++ /dev/null @@ -1,266 +0,0 @@ -#if UNITY_EDITOR -using System.Collections.Generic; -using UnityEditor; - - -namespace UnityEngine.Timeline -{ - static class AnimationPreviewUtilities - { - private const string k_PosX = "m_LocalPosition.x"; - private const string k_PosY = "m_LocalPosition.y"; - private const string k_PosZ = "m_LocalPosition.z"; - private const string k_RotX = "m_LocalRotation.x"; - private const string k_RotY = "m_LocalRotation.y"; - private const string k_RotZ = "m_LocalRotation.z"; - private const string k_RotW = "m_LocalRotation.w"; - private const string k_ScaleX = "m_LocalScale.x"; - private const string k_ScaleY = "m_LocalScale.y"; - private const string k_ScaleZ = "m_LocalScale.z"; - private const string k_EulerAnglesRaw = "localEulerAnglesRaw"; - private const string k_EulerHint = "m_LocalEulerAnglesHint"; - private const string k_Pos = "m_LocalPosition"; - private const string k_Rot = "m_LocalRotation"; - private const string k_MotionT = "MotionT"; - private const string k_MotionQ = "MotionQ"; - private const string k_RootT = "RootT"; - private const string k_RootQ = "RootQ"; - - - internal class EditorCurveBindingComparer : IEqualityComparer<EditorCurveBinding> - { - public bool Equals(EditorCurveBinding x, EditorCurveBinding y) { return x.path.Equals(y.path) && x.type == y.type && x.propertyName == y.propertyName; } - public int GetHashCode(EditorCurveBinding obj) - { - return obj.propertyName.GetHashCode() ^ obj.path.GetHashCode(); - } - - public static readonly EditorCurveBindingComparer Instance = new EditorCurveBindingComparer(); - } - - // a dictionary is faster than a hashset, because the capacity can be pre-set - private static readonly Dictionary<EditorCurveBinding, int> s_CurveSet = new Dictionary<EditorCurveBinding, int>(10000, EditorCurveBindingComparer.Instance); - private static readonly AnimatorBindingCache s_BindingCache = new AnimatorBindingCache(); - - public static void ClearCaches() - { - s_BindingCache.Clear(); - s_CurveSet.Clear(); - } - - public static EditorCurveBinding[] GetBindings(GameObject animatorRoot, IEnumerable<AnimationClip> clips) - { - s_CurveSet.Clear(); - foreach (var clip in clips) - { - AddBindings(s_BindingCache.GetCurveBindings(clip)); - } - - // if we have a transform binding, bind the entire skeleton - if (NeedsSkeletonBindings(s_CurveSet.Keys)) - AddBindings(s_BindingCache.GetAnimatorBindings(animatorRoot)); - - var bindings = new EditorCurveBinding[s_CurveSet.Keys.Count]; - s_CurveSet.Keys.CopyTo(bindings, 0); - return bindings; - } - - public static void PreviewFromCurves(GameObject animatorRoot, IEnumerable<EditorCurveBinding> keys) - { - if (!AnimationMode.InAnimationMode()) - return; - - var avatarRoot = GetAvatarRoot(animatorRoot); - foreach (var binding in keys) - { - if (IsAvatarBinding(binding) || IsEuler(binding)) - continue; - - bool isTransform = typeof(Transform).IsAssignableFrom(binding.type); - if (isTransform && binding.propertyName == AnimatorBindingCache.TRPlaceHolder) - AddTRBinding(animatorRoot, binding); - else if (isTransform && binding.propertyName == AnimatorBindingCache.ScalePlaceholder) - AddScaleBinding(animatorRoot, binding); - else - AnimationMode.AddEditorCurveBinding(avatarRoot, binding); - } - } - - public static AnimationClip CreateDefaultClip(GameObject animatorRoot, IEnumerable<EditorCurveBinding> keys) - { - AnimationClip animClip = new AnimationClip() { name = "DefaultPose" }; - var keyFrames = new[] {new Keyframe(0, 0)}; - var curve = new AnimationCurve(keyFrames); - bool rootMotion = false; - var avatarRoot = GetAvatarRoot(animatorRoot); - - foreach (var binding in keys) - { - if (IsRootMotion(binding)) - { - rootMotion = true; - continue; - } - - if (typeof(Transform).IsAssignableFrom(binding.type) && binding.propertyName == AnimatorBindingCache.TRPlaceHolder) - { - if (string.IsNullOrEmpty(binding.path)) - rootMotion = true; - else - { - var transform = animatorRoot.transform.Find(binding.path); - if (transform != null) - { - var pos = transform.localPosition; - var rot = transform.localRotation; - animClip.SetCurve(binding.path, typeof(Transform), k_PosX, SetZeroKey(curve, keyFrames, pos.x)); - animClip.SetCurve(binding.path, typeof(Transform), k_PosY, SetZeroKey(curve, keyFrames, pos.y)); - animClip.SetCurve(binding.path, typeof(Transform), k_PosZ, SetZeroKey(curve, keyFrames, pos.z)); - animClip.SetCurve(binding.path, typeof(Transform), k_RotX, SetZeroKey(curve, keyFrames, rot.x)); - animClip.SetCurve(binding.path, typeof(Transform), k_RotY, SetZeroKey(curve, keyFrames, rot.y)); - animClip.SetCurve(binding.path, typeof(Transform), k_RotZ, SetZeroKey(curve, keyFrames, rot.z)); - animClip.SetCurve(binding.path, typeof(Transform), k_RotW, SetZeroKey(curve, keyFrames, rot.w)); - } - } - - continue; - } - - if (typeof(Transform).IsAssignableFrom(binding.type) && binding.propertyName == AnimatorBindingCache.ScalePlaceholder) - { - var transform = animatorRoot.transform.Find(binding.path); - if (transform != null) - { - var scale = transform.localScale; - animClip.SetCurve(binding.path, typeof(Transform), k_ScaleX, SetZeroKey(curve, keyFrames, scale.x)); - animClip.SetCurve(binding.path, typeof(Transform), k_ScaleY, SetZeroKey(curve, keyFrames, scale.y)); - animClip.SetCurve(binding.path, typeof(Transform), k_ScaleZ, SetZeroKey(curve, keyFrames, scale.z)); - } - - continue; - } - - // Not setting curves through AnimationUtility.SetEditorCurve to avoid reentrant - // onCurveWasModified calls in timeline. This means we don't get sprite curves - // in the default clip right now. - if (IsAvatarBinding(binding) || IsEulerHint(binding) || binding.isPPtrCurve) - continue; - - float floatValue; - AnimationUtility.GetFloatValue(avatarRoot, binding, out floatValue); - animClip.SetCurve(binding.path, binding.type, binding.propertyName, SetZeroKey(curve, keyFrames, floatValue)); - } - - // add root motion explicitly. - if (rootMotion) - { - var pos = Vector3.zero; // the appropriate root motion offsets are applied by timeline - var rot = Quaternion.identity; - animClip.SetCurve(string.Empty, typeof(Transform), k_PosX, SetZeroKey(curve, keyFrames, pos.x)); - animClip.SetCurve(string.Empty, typeof(Transform), k_PosY, SetZeroKey(curve, keyFrames, pos.y)); - animClip.SetCurve(string.Empty, typeof(Transform), k_PosZ, SetZeroKey(curve, keyFrames, pos.z)); - animClip.SetCurve(string.Empty, typeof(Transform), k_RotX, SetZeroKey(curve, keyFrames, rot.x)); - animClip.SetCurve(string.Empty, typeof(Transform), k_RotY, SetZeroKey(curve, keyFrames, rot.y)); - animClip.SetCurve(string.Empty, typeof(Transform), k_RotZ, SetZeroKey(curve, keyFrames, rot.z)); - animClip.SetCurve(string.Empty, typeof(Transform), k_RotW, SetZeroKey(curve, keyFrames, rot.w)); - } - - return animClip; - } - - public static bool IsRootMotion(EditorCurveBinding binding) - { - // Root Transform TR. - if (typeof(Transform).IsAssignableFrom(binding.type) && string.IsNullOrEmpty(binding.path)) - { - return binding.propertyName.StartsWith(k_Pos) || binding.propertyName.StartsWith(k_Rot); - } - - // MotionCurves/RootCurves. - if (binding.type == typeof(Animator)) - { - return binding.propertyName.StartsWith(k_MotionT) || binding.propertyName.StartsWith(k_MotionQ) || - binding.propertyName.StartsWith(k_RootT) || binding.propertyName.StartsWith(k_RootQ); - } - - return false; - } - - private static bool NeedsSkeletonBindings(IEnumerable<EditorCurveBinding> bindings) - { - foreach (var b in bindings) - { - if (IsSkeletalBinding(b)) - return true; - } - - return false; - } - - private static void AddBindings(IEnumerable<EditorCurveBinding> bindings) - { - foreach (var b in bindings) - { - if (!s_CurveSet.ContainsKey(b)) - s_CurveSet[b] = 1; - } - } - - private static void AddTRBinding(GameObject root, EditorCurveBinding binding) - { - // This is faster than AnimationMode.AddTransformTR - binding.propertyName = k_PosX; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_PosY; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_PosZ; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_RotX; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_RotY; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_RotZ; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_RotW; AnimationMode.AddEditorCurveBinding(root, binding); - } - - private static void AddScaleBinding(GameObject root, EditorCurveBinding binding) - { - // AnimationMode.AddTransformTRS is slow - binding.propertyName = k_ScaleX; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_ScaleY; AnimationMode.AddEditorCurveBinding(root, binding); - binding.propertyName = k_ScaleZ; AnimationMode.AddEditorCurveBinding(root, binding); - } - - private static bool IsEuler(EditorCurveBinding binding) - { - return typeof(Transform).IsAssignableFrom(binding.type) && binding.propertyName.StartsWith(k_EulerAnglesRaw); - } - - private static bool IsAvatarBinding(EditorCurveBinding binding) - { - return typeof(Animator).IsAssignableFrom(binding.type) && string.IsNullOrEmpty(binding.path); - } - - private static bool IsSkeletalBinding(EditorCurveBinding binding) - { - // skin mesh incorporates blend shapes - return typeof(Transform).IsAssignableFrom(binding.type) || typeof(SkinnedMeshRenderer).IsAssignableFrom(binding.type); - } - - private static AnimationCurve SetZeroKey(AnimationCurve curve, Keyframe[] keys, float val) - { - keys[0].value = val; - curve.keys = keys; - return curve; - } - - private static bool IsEulerHint(EditorCurveBinding binding) - { - return typeof(Transform).IsAssignableFrom(binding.type) && binding.propertyName.StartsWith(k_EulerHint); - } - - private static GameObject GetAvatarRoot(GameObject animatorRoot) - { - var animator = animatorRoot.GetComponent<Animator>(); - if (animator != null && animator.avatarRoot != animatorRoot.transform) - return animator.avatarRoot.gameObject; - return animatorRoot; - } - } -} -#endif diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs.meta deleted file mode 100644 index 82e3768..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimationPreviewUtilities.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 01da6c5b7c781174d818662ce6f39b8b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs deleted file mode 100644 index 53198ea..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs +++ /dev/null @@ -1,133 +0,0 @@ -#if UNITY_EDITOR -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Playables; -using UnityEngine.Timeline; -using UnityEditor; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Animator to Editor Curve Binding cache. Used to prevent frequent calls to GetAnimatorBindings which can be costly - /// </summary> - class AnimatorBindingCache - { - public const string TRPlaceHolder = "TransformTR"; - public const string ScalePlaceholder = "TransformScale"; - - struct AnimatorEntry - { - public int animatorID; - public bool applyRootMotion; - public bool humanoid; - } - - class AnimatorEntryComparer : IEqualityComparer<AnimatorEntry> - { - public bool Equals(AnimatorEntry x, AnimatorEntry y) { return x.animatorID == y.animatorID && x.applyRootMotion == y.applyRootMotion && x.humanoid == y.humanoid; } - public int GetHashCode(AnimatorEntry obj) { return HashUtility.CombineHash(obj.animatorID, obj.applyRootMotion.GetHashCode(), obj.humanoid.GetHashCode()); } - public static readonly AnimatorEntryComparer Instance = new AnimatorEntryComparer(); - } - - readonly Dictionary<AnimatorEntry, EditorCurveBinding[]> m_AnimatorCache = new Dictionary<AnimatorEntry, EditorCurveBinding[]>(AnimatorEntryComparer.Instance); - readonly Dictionary<AnimationClip, EditorCurveBinding[]> m_ClipCache = new Dictionary<AnimationClip, EditorCurveBinding[]>(); - - private static readonly EditorCurveBinding[] kEmptyArray = new EditorCurveBinding[0]; - private static readonly List<EditorCurveBinding> s_BindingScratchPad = new List<EditorCurveBinding>(1000); - - public AnimatorBindingCache() - { - AnimationUtility.onCurveWasModified += OnCurveWasModified; - } - - public EditorCurveBinding[] GetAnimatorBindings(GameObject gameObject) - { - if (gameObject == null) - return kEmptyArray; - - Animator animator = gameObject.GetComponent<Animator>(); - if (animator == null) - return kEmptyArray; - - AnimatorEntry entry = new AnimatorEntry() - { - animatorID = animator.GetInstanceID(), - applyRootMotion = animator.applyRootMotion, - humanoid = animator.isHuman - }; - - EditorCurveBinding[] result = null; - if (m_AnimatorCache.TryGetValue(entry, out result)) - return result; - - s_BindingScratchPad.Clear(); - - // Replacement for AnimationMode.GetAnimatorBinding - this is faster and allocates kB instead of MB - var transforms = animator.GetComponentsInChildren<Transform>(); - foreach (var t in transforms) - { - if (animator.IsBoneTransform(t)) - s_BindingScratchPad.Add(EditorCurveBinding.FloatCurve(AnimationUtility.CalculateTransformPath(t, animator.transform), typeof(Transform), TRPlaceHolder)); - } - - var streamBindings = AnimationUtility.GetAnimationStreamBindings(animator.gameObject); - UpdateTransformBindings(streamBindings); - s_BindingScratchPad.AddRange(streamBindings); - - result = new EditorCurveBinding[s_BindingScratchPad.Count]; - s_BindingScratchPad.CopyTo(result); - m_AnimatorCache[entry] = result; - return result; - } - - public EditorCurveBinding[] GetCurveBindings(AnimationClip clip) - { - if (clip == null) - return kEmptyArray; - - EditorCurveBinding[] result; - if (!m_ClipCache.TryGetValue(clip, out result)) - { - result = AnimationMode.GetCurveBindings(clip); - UpdateTransformBindings(result); - m_ClipCache[clip] = result; - } - - return result; - } - - private static void UpdateTransformBindings(EditorCurveBinding[] bindings) - { - for (int i = 0; i < bindings.Length; i++) - { - var binding = bindings[i]; - if (AnimationPreviewUtilities.IsRootMotion(binding)) - { - binding.type = typeof(Transform); - binding.propertyName = TRPlaceHolder; - } - else if (typeof(Transform).IsAssignableFrom(binding.type) && (binding.propertyName.StartsWith("m_LocalRotation.") || binding.propertyName.StartsWith("m_LocalPosition."))) - { - binding.propertyName = TRPlaceHolder; - } - else if (typeof(Transform).IsAssignableFrom(binding.type) && binding.propertyName.StartsWith("m_LocalScale.")) - { - binding.propertyName = ScalePlaceholder; - } - bindings[i] = binding; - } - } - - public void Clear() - { - m_AnimatorCache.Clear(); - m_ClipCache.Clear(); - } - - void OnCurveWasModified(AnimationClip clip, EditorCurveBinding binding, AnimationUtility.CurveModifiedType modification) - { - m_ClipCache.Remove(clip); - } - } -} -#endif diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs.meta deleted file mode 100644 index dc6dc1d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/AnimatorBindingCache.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d0080567f62c3f94cb75b2927a349e22 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs deleted file mode 100644 index 34408c9..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using UnityEngine; - -// Extension methods responsible for managing extrapolation time -namespace UnityEngine.Timeline -{ - static class Extrapolation - { - /// <summary> - /// The minimum amount of extrapolation time to apply - /// </summary> - internal static readonly double kMinExtrapolationTime = TimeUtility.kTimeEpsilon * 1000; - - // Calculates the extrapolation times - internal static void CalculateExtrapolationTimes(this TrackAsset asset) - { - TimelineClip[] clips = asset.clips; - if (clips == null || clips.Length == 0) - return; - - // extrapolation not supported - if (!clips[0].SupportsExtrapolation()) - return; - - var orderedClips = SortClipsByStartTime(clips); - if (orderedClips.Length > 0) - { - // post extrapolation is the minimum time to the next clip - for (int i = 0; i < orderedClips.Length; i++) - { - double minTime = double.PositiveInfinity; - for (int j = 0; j < orderedClips.Length; j++) - { - if (i == j) - continue; - - double deltaTime = orderedClips[j].start - orderedClips[i].end; - if (deltaTime >= -TimeUtility.kTimeEpsilon && deltaTime < minTime) - minTime = Math.Min(minTime, deltaTime); - // check for overlapped clips - if (orderedClips[j].start <= orderedClips[i].end && orderedClips[j].end > orderedClips[i].end) - minTime = 0; - } - minTime = minTime <= kMinExtrapolationTime ? 0 : minTime; - orderedClips[i].SetPostExtrapolationTime(minTime); - } - - // the first clip gets pre-extrapolation, then it's only respected if there is no post extrapolation - orderedClips[0].SetPreExtrapolationTime(Math.Max(0, orderedClips[0].start)); - for (int i = 1; i < orderedClips.Length; i++) - { - double preTime = 0; - int prevClip = -1; - for (int j = 0; j < i; j++) - { - // overlap, no pre-time - if (orderedClips[j].end > orderedClips[i].start) - { - prevClip = -1; - preTime = 0; - break; - } - - double gap = orderedClips[i].start - orderedClips[j].end; - if (prevClip == -1 || gap < preTime) - { - preTime = gap; - prevClip = j; - } - } - // check for a post extrapolation time - if (prevClip >= 0) - { - if (orderedClips[prevClip].postExtrapolationMode != TimelineClip.ClipExtrapolation.None) - preTime = 0; - } - - preTime = preTime <= kMinExtrapolationTime ? 0 : preTime; - orderedClips[i].SetPreExtrapolationTime(preTime); - } - } - } - - static TimelineClip[] SortClipsByStartTime(TimelineClip[] clips) - { - var orderedClips = new TimelineClip[clips.Length]; - Array.Copy(clips, orderedClips, clips.Length); - Array.Sort(orderedClips, (clip1, clip2) => clip1.start.CompareTo(clip2.start)); - return orderedClips; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs.meta deleted file mode 100644 index 69c90cf..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/Extrapolation.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 32535dd294c621e4297fba34b15b1c52 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs deleted file mode 100644 index 81fa940..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs +++ /dev/null @@ -1,51 +0,0 @@ -namespace UnityEngine.Timeline -{ - static class HashUtility - { - // Note. We could have used "params int[] hashes" but we want to avoid allocating. - - public static int CombineHash(this int h1, int h2) - { - return h1 ^ (int)(h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2)); // Similar to c++ boost::hash_combine - } - - public static int CombineHash(int h1, int h2, int h3) - { - return CombineHash(h1, h2).CombineHash(h3); - } - - public static int CombineHash(int h1, int h2, int h3, int h4) - { - return CombineHash(h1, h2, h3).CombineHash(h4); - } - - public static int CombineHash(int h1, int h2, int h3, int h4, int h5) - { - return CombineHash(h1, h2, h3, h4).CombineHash(h5); - } - - public static int CombineHash(int h1, int h2, int h3, int h4, int h5, int h6) - { - return CombineHash(h1, h2, h3, h4, h5).CombineHash(h6); - } - - public static int CombineHash(int h1, int h2, int h3, int h4, int h5, int h6, int h7) - { - return CombineHash(h1, h2, h3, h4, h5, h6).CombineHash(h7); - } - - public static int CombineHash(int[] hashes) - { - if (hashes == null || hashes.Length == 0) - return 0; - - var h = hashes[0]; - for (int i = 1; i < hashes.Length; ++i) - { - h = CombineHash(h, hashes[i]); - } - - return h; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs.meta deleted file mode 100644 index fec5c19..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/HashUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d0ca7b2e84542bf4ab9987087e8d79ad -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs deleted file mode 100644 index 08f991a..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs +++ /dev/null @@ -1,102 +0,0 @@ -using System.Collections.Generic; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Interface used to inform the Timeline Editor about potential property modifications that may occur while previewing. - /// </summary> - public interface IPropertyCollector - { - /// <summary> - /// Sets the active game object for subsequent property modifications. - /// </summary> - /// <param name="gameObject">The GameObject to push.</param> - void PushActiveGameObject(GameObject gameObject); - - /// <summary> - /// Removes the active GameObject from the modification stack, restoring the previous value. - /// </summary> - void PopActiveGameObject(); - - /// <summary> - /// Add properties modified by an animation clip. - /// </summary> - /// <param name="clip">The animation clip that contains the properties</param> - void AddFromClip(AnimationClip clip); - - /// <summary> - /// Add property modifications specified by a list of animation clips. - /// </summary> - /// <param name="clips">The list of animation clips used to determine which property modifications to apply.</param> - void AddFromClips(IEnumerable<AnimationClip> clips); - - /// <summary> - /// Add property modifications using the serialized property name. - /// </summary> - /// <param name="name">The name of the serialized property</param> - /// <typeparam name="T">The type of the component the property exists on</typeparam> - /// <remarks> - /// This method uses the most recent gameObject from PushActiveGameObject - /// </remarks> - void AddFromName<T>(string name) where T : Component; - - /// <summary> - /// Add property modifications using the serialized property name. - /// </summary> - /// <param name="name">The name of the serialized property</param> - /// <remarks> - /// This method uses the most recent gameObject from PushActiveGameObject - /// </remarks> - void AddFromName(string name); - - /// <summary> - /// Add property modifications modified by an animation clip. - /// </summary> - /// <param name="obj">The GameObject where the properties exist</param> - /// <param name="clip">The animation clip that contains the properties</param> - void AddFromClip(GameObject obj, AnimationClip clip); - - /// <summary> - /// Add property modifications specified by a list of animation clips. - /// </summary> - /// <param name="obj">The gameObject that will be animated</param> - /// <param name="clips">The list of animation clips used to determine which property modifications to apply.</param> - void AddFromClips(GameObject obj, IEnumerable<AnimationClip> clips); - - /// <summary> - /// Add property modifications using the serialized property name. - /// </summary> - /// <param name="name">The name of the serialized property</param> - /// <param name="obj">The gameObject where the properties exist</param> - /// <typeparam name="T">The type of the component the property exists on</typeparam>> - void AddFromName<T>(GameObject obj, string name) where T : Component; - - /// <summary> - /// Add property modifications using the serialized property name. - /// </summary> - /// <param name="obj">The gameObject where the properties exist</param> - /// <param name="name">The name of the serialized property</param> - void AddFromName(GameObject obj, string name); - - /// <summary> - /// Add property modifications using the serialized property name. - /// </summary> - /// <param name="name">The name of the serialized property</param> - /// <param name="component">The component where the properties exist</param> - void AddFromName(Component component, string name); - - /// <summary> - /// Set all serializable properties on a component to be under preview control. - /// </summary> - /// <param name="obj">The gameObject where the properties exist</param> - /// <param name="component">The component to set in preview mode</param> - void AddFromComponent(GameObject obj, Component component); - - /// <summary> - /// Add property modifications modified by an animation clip. - /// </summary> - /// <param name="obj">The Object where the properties exist</param> - /// <param name="clip">The animation clip that contains the properties</param> - void AddObjectProperties(Object obj, AnimationClip clip); - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs.meta deleted file mode 100644 index 05ecf1d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyCollector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 66b2b8fd1d9b4bc4c96b07335ad822f3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs deleted file mode 100644 index b779f15..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs +++ /dev/null @@ -1,17 +0,0 @@ -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - /// <summary> - /// Implement this interface in a PlayableAsset to specify which properties will be modified when Timeline is in preview mode. - /// </summary> - public interface IPropertyPreview - { - /// <summary> - /// Called by the Timeline Editor to gather properties requiring preview. - /// </summary> - /// <param name="director">The PlayableDirector invoking the preview</param> - /// <param name="driver">PropertyCollector used to gather previewable properties</param> - void GatherProperties(PlayableDirector director, IPropertyCollector driver); - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs.meta deleted file mode 100644 index 31806d8..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/IPropertyPreview.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b5f0881228e5827438f74e9b7b33c2dc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs deleted file mode 100644 index 41aabce..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - static class NotificationUtilities - { - public static ScriptPlayable<TimeNotificationBehaviour> CreateNotificationsPlayable(PlayableGraph graph, IEnumerable<IMarker> markers, GameObject go) - { - var notificationPlayable = ScriptPlayable<TimeNotificationBehaviour>.Null; - var director = go.GetComponent<PlayableDirector>(); - foreach (var e in markers) - { - var notif = e as INotification; - if (notif == null) - continue; - - if (notificationPlayable.Equals(ScriptPlayable<TimeNotificationBehaviour>.Null)) - { - notificationPlayable = TimeNotificationBehaviour.Create(graph, - director.playableAsset.duration, director.extrapolationMode); - } - - var time = (DiscreteTime)e.time; - var tlDuration = (DiscreteTime)director.playableAsset.duration; - if (time >= tlDuration && time <= tlDuration.OneTickAfter() && tlDuration != 0) - { - time = tlDuration.OneTickBefore(); - } - - var notificationOptionProvider = e as INotificationOptionProvider; - if (notificationOptionProvider != null) - { - notificationPlayable.GetBehaviour().AddNotification((double)time, notif, notificationOptionProvider.flags); - } - else - { - notificationPlayable.GetBehaviour().AddNotification((double)time, notif); - } - } - - return notificationPlayable; - } - - public static bool TrackTypeSupportsNotifications(Type type) - { - var binding = (TrackBindingTypeAttribute)Attribute.GetCustomAttribute(type, typeof(TrackBindingTypeAttribute)); - return binding != null && - (typeof(Component).IsAssignableFrom(binding.type) || - typeof(GameObject).IsAssignableFrom(binding.type)); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs.meta deleted file mode 100644 index 6e5c8c3..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/NotificationUtilities.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b90311a8f07b00f4bbeb2fff3b128d25 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs deleted file mode 100644 index 549de4c..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs +++ /dev/null @@ -1,212 +0,0 @@ -using System; -using System.Text.RegularExpressions; - -namespace UnityEngine.Timeline -{ - // Sequence specific utilities for time manipulation - static class TimeUtility - { - // chosen because it will cause no rounding errors between time/frames for frames values up to at least 10 million - public static readonly double kTimeEpsilon = 1e-14; - public static readonly double kFrameRateEpsilon = 1e-6; - public static readonly double k_MaxTimelineDurationInSeconds = 9e6; //104 days of running time - - static void ValidateFrameRate(double frameRate) - { - if (frameRate <= kTimeEpsilon) - throw new ArgumentException("frame rate cannot be 0 or negative"); - } - - public static int ToFrames(double time, double frameRate) - { - ValidateFrameRate(frameRate); - time = Math.Min(Math.Max(time, -k_MaxTimelineDurationInSeconds), k_MaxTimelineDurationInSeconds); - // this matches OnFrameBoundary - double tolerance = GetEpsilon(time, frameRate) / 2.0; - if (time < 0) - { - return (int)Math.Ceiling(time * frameRate - tolerance); - } - return (int)Math.Floor(time * frameRate + tolerance); - } - - public static double ToExactFrames(double time, double frameRate) - { - ValidateFrameRate(frameRate); - return time * frameRate; - } - - public static double FromFrames(int frames, double frameRate) - { - ValidateFrameRate(frameRate); - return (frames / frameRate); - } - - public static double FromFrames(double frames, double frameRate) - { - ValidateFrameRate(frameRate); - return frames / frameRate; - } - - public static bool OnFrameBoundary(double time, double frameRate) - { - return OnFrameBoundary(time, frameRate, GetEpsilon(time, frameRate)); - } - - public static double GetEpsilon(double time, double frameRate) - { - return Math.Max(Math.Abs(time), 1) * frameRate * kTimeEpsilon; - } - - public static bool OnFrameBoundary(double time, double frameRate, double epsilon) - { - ValidateFrameRate(frameRate); - - double exact = ToExactFrames(time, frameRate); - double rounded = Math.Round(exact); - - return Math.Abs(exact - rounded) < epsilon; - } - - public static double RoundToFrame(double time, double frameRate) - { - ValidateFrameRate(frameRate); - - var frameBefore = (int)Math.Floor(time * frameRate) / frameRate; - var frameAfter = (int)Math.Ceiling(time * frameRate) / frameRate; - - return Math.Abs(time - frameBefore) < Math.Abs(time - frameAfter) ? frameBefore : frameAfter; - } - - public static string TimeAsFrames(double timeValue, double frameRate, string format = "F2") - { - if (OnFrameBoundary(timeValue, frameRate)) // make integral values when on time borders - return ToFrames(timeValue, frameRate).ToString(); - return ToExactFrames(timeValue, frameRate).ToString(format); - } - - public static string TimeAsTimeCode(double timeValue, double frameRate, string format = "F2") - { - ValidateFrameRate(frameRate); - - int intTime = (int)Math.Abs(timeValue); - - int hours = intTime / 3600; - int minutes = (intTime % 3600) / 60; - int seconds = intTime % 60; - - string result; - string sign = timeValue < 0 ? "-" : string.Empty; - if (hours > 0) - result = hours + ":" + minutes.ToString("D2") + ":" + seconds.ToString("D2"); - else if (minutes > 0) - result = minutes + ":" + seconds.ToString("D2"); - else - result = seconds.ToString(); - - int frameDigits = (int)Math.Floor(Math.Log10(frameRate) + 1); - - // Add partial digits on the frame if needed. - // we are testing the original value (not the truncated), because the truncation can cause rounding errors leading - // to invalid strings for items on frame boundaries - string frames = (ToFrames(timeValue, frameRate) - ToFrames(intTime, frameRate)).ToString().PadLeft(frameDigits, '0'); - if (!OnFrameBoundary(timeValue, frameRate)) - { - string decimals = ToExactFrames(timeValue, frameRate).ToString(format); - int decPlace = decimals.IndexOf('.'); - if (decPlace >= 0) - frames += " [" + decimals.Substring(decPlace) + "]"; - } - - return sign + result + ":" + frames; - } - - // Given a time code string, return the time in seconds - // 1.5 -> 1.5 seconds - // 1:1.5 -> 1 minute, 1.5 seconds - // 1:1[.5] -> 1 second, 1.5 frames - // 2:3:4 -> 2 minutes, 3 seconds, 4 frames - // 1[.6] -> 1.6 frames - public static double ParseTimeCode(string timeCode, double frameRate, double defaultValue) - { - timeCode = RemoveChar(timeCode, c => char.IsWhiteSpace(c)); - string[] sections = timeCode.Split(':'); - if (sections.Length == 0 || sections.Length > 4) - return defaultValue; - - int hours = 0; - int minutes = 0; - double seconds = 0; - double frames = 0; - - try - { - // depending on the format of the last numbers - // seconds format - string lastSection = sections[sections.Length - 1]; - if (Regex.Match(lastSection, @"^\d+\.\d+$").Success) - { - seconds = double.Parse(lastSection); - if (sections.Length > 3) return defaultValue; - if (sections.Length > 1) minutes = int.Parse(sections[sections.Length - 2]); - if (sections.Length > 2) hours = int.Parse(sections[sections.Length - 3]); - } - // frame formats - else - { - if (Regex.Match(lastSection, @"^\d+\[\.\d+\]$").Success) - { - string stripped = RemoveChar(lastSection, c => c == '[' || c == ']'); - frames = double.Parse(stripped); - } - else if (Regex.Match(lastSection, @"^\d*$").Success) - { - frames = int.Parse(lastSection); - } - else - { - return defaultValue; - } - - if (sections.Length > 1) seconds = int.Parse(sections[sections.Length - 2]); - if (sections.Length > 2) minutes = int.Parse(sections[sections.Length - 3]); - if (sections.Length > 3) hours = int.Parse(sections[sections.Length - 4]); - } - } - catch (FormatException) - { - return defaultValue; - } - - return frames / frameRate + seconds + minutes * 60 + hours * 3600; - } - - // fixes rounding errors from using single precision for length - public static double GetAnimationClipLength(AnimationClip clip) - { - if (clip == null || clip.empty) - return 0; - - double length = clip.length; - if (clip.frameRate > 0) - { - double frames = Mathf.Round(clip.length * clip.frameRate); - length = frames / clip.frameRate; - } - return length; - } - - static string RemoveChar(string str, Func<char, bool> charToRemoveFunc) - { - var len = str.Length; - var src = str.ToCharArray(); - var dstIdx = 0; - for (var i = 0; i < len; i++) - { - if (!charToRemoveFunc(src[i])) - src[dstIdx++] = src[i]; - } - return new string(src, 0, dstIdx); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs.meta deleted file mode 100644 index ff1d820..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimeUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f779e779d62b5ca49b658236c337845d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs deleted file mode 100644 index 0870e40..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -#if UNITY_EDITOR -using UnityEditor; -#endif - -namespace UnityEngine.Timeline -{ - static class TimelineCreateUtilities - { - // based off of ObjectNames.GetUniqueName, but can exist in runtime - public static string GenerateUniqueActorName(List<ScriptableObject> tracks, string name) - { - if (!tracks.Exists(x => ((object)x) != null && x.name == name)) - return name; - - int numberInParentheses = 0; - string baseName = name; - - if (!string.IsNullOrEmpty(name) && name[name.Length - 1] == ')') - { - int index = name.LastIndexOf('('); - if (index > 0) - { - string numberString = name.Substring(index + 1, name.Length - index - 2); - if (int.TryParse(numberString, out numberInParentheses)) - { - numberInParentheses++; - baseName = name.Substring(0, index); - } - } - } - - baseName = baseName.TrimEnd(); - - for (int i = numberInParentheses; i < numberInParentheses + 5000; i++) - { - if (i > 0) - { - string result = string.Format("{0} ({1})", baseName, i); - if (!tracks.Exists(x => ((object)x) != null && x.name == result)) - return result; - } - } - - // Fallback - return name; - } - - public static void SaveAssetIntoObject(Object childAsset, Object masterAsset) - { - if (childAsset == null || masterAsset == null) - return; - - if ((masterAsset.hideFlags & HideFlags.DontSave) != 0) - { - childAsset.hideFlags |= HideFlags.DontSave; - } - else - { - childAsset.hideFlags |= HideFlags.HideInHierarchy; -#if UNITY_EDITOR - if (!AssetDatabase.Contains(childAsset) && AssetDatabase.Contains(masterAsset)) - AssetDatabase.AddObjectToAsset(childAsset, masterAsset); -#endif - } - } - - public static AnimationClip CreateAnimationClipForTrack(string name, TrackAsset track, bool isLegacy) - { - var timelineAsset = track != null ? track.timelineAsset : null; - var trackFlags = track != null ? track.hideFlags : HideFlags.None; - - var curves = new AnimationClip - { - legacy = isLegacy, - - name = name, - - frameRate = timelineAsset == null - ? TimelineAsset.EditorSettings.kDefaultFps - : timelineAsset.editorSettings.fps - }; - - SaveAssetIntoObject(curves, timelineAsset); - curves.hideFlags = trackFlags & ~HideFlags.HideInHierarchy; // Never hide in hierarchy - - TimelineUndo.RegisterCreatedObjectUndo(curves, "Create Curves"); - - return curves; - } - - public static bool ValidateParentTrack(TrackAsset parent, Type childType) - { - if (childType == null || !typeof(TrackAsset).IsAssignableFrom(childType)) - return false; - - // no parent is valid for any type - if (parent == null) - return true; - - // A track supports layers if it implements ILayerable. Only supported for parents that are - // the same exact type as the child class, and 1 level of nesting only - if (parent is ILayerable && !parent.isSubTrack && parent.GetType() == childType) - return true; - - var attr = Attribute.GetCustomAttribute(parent.GetType(), typeof(SupportsChildTracksAttribute)) as SupportsChildTracksAttribute; - if (attr == null) - return false; - - // group track case, accepts all - if (attr.childType == null) - return true; - - // specific case. Specifies nesting level - if (childType == attr.childType) - { - int nestCount = 0; - var p = parent; - while (p != null && p.isSubTrack) - { - nestCount++; - p = p.parent as TrackAsset; - } - - return nestCount < attr.levels; - } - return false; - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs.meta deleted file mode 100644 index f81aa91..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineCreateUtilities.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 40cb137d0e9816e48a4141ed13afedad -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs deleted file mode 100644 index b6392f0..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using UnityEngine.Playables; - -#if UNITY_EDITOR -using UnityEditor; -#endif - -namespace UnityEngine.Timeline -{ - static class TimelineUndo - { - public static void PushDestroyUndo(TimelineAsset timeline, Object thingToDirty, Object objectToDestroy, string operation) - { -#if UNITY_EDITOR - if (objectToDestroy == null || !DisableUndoGuard.enableUndo) - return; - - if (thingToDirty != null) - EditorUtility.SetDirty(thingToDirty); - - if (timeline != null) - EditorUtility.SetDirty(timeline); - - Undo.DestroyObjectImmediate(objectToDestroy); -#else - if (objectToDestroy != null) - Object.Destroy(objectToDestroy); -#endif - } - - [Conditional("UNITY_EDITOR")] - public static void PushUndo(Object thingToDirty, string operation) - { -#if UNITY_EDITOR - if (thingToDirty != null && DisableUndoGuard.enableUndo) - { - var track = thingToDirty as TrackAsset; - if (track != null) - track.MarkDirty(); - - EditorUtility.SetDirty(thingToDirty); - Undo.RegisterCompleteObjectUndo(thingToDirty, "Timeline " + operation); - } -#endif - } - - [Conditional("UNITY_EDITOR")] - public static void RegisterCreatedObjectUndo(Object thingCreated, string operation) - { -#if UNITY_EDITOR - if (DisableUndoGuard.enableUndo) - { - Undo.RegisterCreatedObjectUndo(thingCreated, "Timeline " + operation); - } -#endif - } - -#if UNITY_EDITOR - public struct DisableUndoGuard : IDisposable - { - internal static bool enableUndo = true; - static readonly Stack<bool> m_UndoStateStack = new Stack<bool>(); - bool m_Disposed; - public DisableUndoGuard(bool disable) - { - m_Disposed = false; - m_UndoStateStack.Push(enableUndo); - enableUndo = !disable; - } - - public void Dispose() - { - if (!m_Disposed) - { - if (m_UndoStateStack.Count == 0) - { - Debug.LogError("UnMatched DisableUndoGuard calls"); - enableUndo = true; - return; - } - enableUndo = m_UndoStateStack.Pop(); - m_Disposed = true; - } - } - } -#endif - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs.meta deleted file mode 100644 index c62c751..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/TimelineUndo.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1f2a7e0d1b6bbba408a41e206945c23c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs deleted file mode 100644 index 22db909..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs +++ /dev/null @@ -1,30 +0,0 @@ -using UnityEngine.Playables; - -namespace UnityEngine.Timeline -{ - static class WeightUtility - { - // Given a mixer, normalizes the mixer if required - // returns the output weight that should be applied to the mixer as input - public static float NormalizeMixer(Playable mixer) - { - if (!mixer.IsValid()) - return 0; - int count = mixer.GetInputCount(); - float weight = 0.0f; - for (int c = 0; c < count; c++) - { - weight += mixer.GetInputWeight(c); - } - - if (weight > Mathf.Epsilon && weight < 1) - { - for (int c = 0; c < count; c++) - { - mixer.SetInputWeight(c, mixer.GetInputWeight(c) / weight); - } - } - return Mathf.Clamp01(weight); - } - } -} diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs.meta b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs.meta deleted file mode 100644 index bf2c55d..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Utilities/WeightUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e7a505b341283e14696e86433a5b1ae9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: |
