using System; namespace UnityEngine.Rendering.PostProcessing { /// <summary> /// Use this attribute to associate a <see cref="PostProcessEffectSettings"/> to a /// <see cref="PostProcessEffectRenderer{T}"/> type. /// </summary> /// <seealso cref="PostProcessEffectSettings"/> /// <seealso cref="PostProcessEffectRenderer{T}"/> [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public sealed class PostProcessAttribute : Attribute { /// <summary> /// The renderer type to associate with a <see cref="PostProcessEffectSettings"/>. /// </summary> public readonly Type renderer; /// <summary> /// The injection point for the effect. /// </summary> public readonly PostProcessEvent eventType; /// <summary> /// The menu item name to set for the effect. You can use a `/` character to add sub-menus. /// </summary> public readonly string menuItem; /// <summary> /// Should this effect be allowed in the Scene View? /// </summary> public readonly bool allowInSceneView; internal readonly bool builtinEffect; /// <summary> /// Creates a new attribute. /// </summary> /// <param name="renderer">The renderer type to associate with a <see cref="PostProcessEffectSettings"/></param> /// <param name="eventType">The injection point for the effect</param> /// <param name="menuItem">The menu item name to set for the effect. You can use a `/` character to add sub-menus.</param> /// <param name="allowInSceneView">Should this effect be allowed in the Scene View?</param> public PostProcessAttribute(Type renderer, PostProcessEvent eventType, string menuItem, bool allowInSceneView = true) { this.renderer = renderer; this.eventType = eventType; this.menuItem = menuItem; this.allowInSceneView = allowInSceneView; builtinEffect = false; } internal PostProcessAttribute(Type renderer, string menuItem, bool allowInSceneView = true) { this.renderer = renderer; this.menuItem = menuItem; this.allowInSceneView = allowInSceneView; builtinEffect = true; } } }