summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs222
1 files changed, 222 insertions, 0 deletions
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
new file mode 100644
index 0000000..69409fd
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs
@@ -0,0 +1,222 @@
+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;
+ }
+ }
+}