diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Runtime/TimelineAttributes.cs | |
| download | Project-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.cs | 222 |
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; + } + } +} |
