Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SupportedOnRenderer.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Reflection;
  3. using Unity.Collections;
  4. namespace UnityEngine.Rendering.Universal
  5. {
  6. /// <summary>
  7. /// Defines the compatiblility with a set of renderer(s)
  8. /// </summary>
  9. [AttributeUsage(AttributeTargets.Class)]
  10. public class SupportedOnRendererAttribute : Attribute
  11. {
  12. /// <summary>
  13. /// Returns the compatible renderers
  14. /// </summary>
  15. public Type[] rendererTypes { get; }
  16. /// <summary>
  17. /// Sets a compatible renderer
  18. /// </summary>
  19. /// <param name="renderer">The compatible renderer to set.</param>
  20. public SupportedOnRendererAttribute(Type renderer)
  21. : this(new[] { renderer }) {}
  22. /// <summary>
  23. /// Sets one or more compatible renderers
  24. /// </summary>
  25. /// <param name="renderers">The compatible renderer(s) to set.</param>
  26. public SupportedOnRendererAttribute(params Type[] renderers)
  27. {
  28. if (renderers == null)
  29. {
  30. Debug.LogError($"The {nameof(SupportedOnRendererAttribute)} parameters cannot be null.");
  31. return;
  32. }
  33. for (var i = 0; i < renderers.Length; i++)
  34. {
  35. var r = renderers[i];
  36. if (r == null || !typeof(ScriptableRendererData).IsAssignableFrom(r))
  37. {
  38. Debug.LogError($"The {nameof(SupportedOnRendererAttribute)} Attribute targets an invalid {nameof(ScriptableRendererData)}. One of the types cannot be assigned from {nameof(ScriptableRendererData)}");
  39. return;
  40. }
  41. }
  42. rendererTypes = renderers;
  43. }
  44. }
  45. }