using System;
using UnityEditor;
using static UnityEngine.Rendering.DebugUI.Table;
namespace UnityEngine.Rendering
{
///
/// Attribute specifying that fields of this type should be inspected in depth by the .
/// If the associated class instance is null, the system attempts to recreate it using its default constructor.
///
///
/// Make sure classes using it have a default constructor!
///
///
///
///
/// This shows how to use the attribute in the expected scenario. This is particularly useful for content creators.
/// Adding a new field to a class that defines an asset results in null values for existing instances missing the field in their serialized data. Therefore, when a new field is added, a system for reloading null values may be necessary.
///
///using UnityEngine;
///using UnityEditor;
///
///[ReloadGroup]
///public class MyShaders
///{
/// [Reload("Shaders/Blit.shader")]
/// public Shader blit;
///}
///
///public class MyResourcesAsset : ScriptableObject
///{
/// // Object used for contextualizing would resolve to be null in already existing
/// // instance of MyResourcesAsset that already exists.
/// public MyShaders shaders;
///
/// [Reload("Textures/BayerMatrix.png")]
/// public Texture2D bayerMatrixTex;
///}
///
///public static class MyResourceHandler
///{
/// public static MyResourcesAsset GetAndReload()
/// {
/// var resources = AssetDatabase.LoadAssetAtPath<MyResourcesAsset>("MyResources.asset");
///
/// // Ensure that update of the data layout of MyResourcesAsset
/// // will not result in null value for asset already existing.
/// // (e.g.: adding new field in MyResourcesAsset or MyShaders classes)
/// ResourceReloader.ReloadAllNullIn(resources, "Packages/com.my-custom-package/");
/// return resources;
/// }
///}
///
///
[AttributeUsage(AttributeTargets.Class)]
public sealed class ReloadGroupAttribute : Attribute
{ }
}