VignetteEditor.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using UnityEngine;
  2. using UnityEngine.Rendering.PostProcessing;
  3. namespace UnityEditor.Rendering.PostProcessing
  4. {
  5. [PostProcessEditor(typeof(Vignette))]
  6. internal sealed class VignetteEditor : PostProcessEffectEditor<Vignette>
  7. {
  8. SerializedParameterOverride m_Mode;
  9. SerializedParameterOverride m_Color;
  10. SerializedParameterOverride m_Center;
  11. SerializedParameterOverride m_Intensity;
  12. SerializedParameterOverride m_Smoothness;
  13. SerializedParameterOverride m_Roundness;
  14. SerializedParameterOverride m_Rounded;
  15. SerializedParameterOverride m_Mask;
  16. SerializedParameterOverride m_Opacity;
  17. public override void OnEnable()
  18. {
  19. m_Mode = FindParameterOverride(x => x.mode);
  20. m_Color = FindParameterOverride(x => x.color);
  21. m_Center = FindParameterOverride(x => x.center);
  22. m_Intensity = FindParameterOverride(x => x.intensity);
  23. m_Smoothness = FindParameterOverride(x => x.smoothness);
  24. m_Roundness = FindParameterOverride(x => x.roundness);
  25. m_Rounded = FindParameterOverride(x => x.rounded);
  26. m_Mask = FindParameterOverride(x => x.mask);
  27. m_Opacity = FindParameterOverride(x => x.opacity);
  28. }
  29. public override void OnInspectorGUI()
  30. {
  31. PropertyField(m_Mode);
  32. PropertyField(m_Color);
  33. if (m_Mode.value.intValue == (int)VignetteMode.Classic)
  34. {
  35. PropertyField(m_Center);
  36. PropertyField(m_Intensity);
  37. PropertyField(m_Smoothness);
  38. PropertyField(m_Roundness);
  39. PropertyField(m_Rounded);
  40. }
  41. else
  42. {
  43. PropertyField(m_Mask);
  44. var mask = (target as Vignette).mask.value;
  45. // Checks import settings on the mask
  46. if (mask != null)
  47. {
  48. var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(mask)) as TextureImporter;
  49. // Fails when using an internal texture as you can't change import settings on
  50. // builtin resources, thus the check for null
  51. if (importer != null)
  52. {
  53. bool valid = importer.anisoLevel == 0
  54. && importer.mipmapEnabled == false
  55. && importer.alphaSource == TextureImporterAlphaSource.FromGrayScale
  56. && importer.textureCompression == TextureImporterCompression.Uncompressed
  57. && importer.wrapMode == TextureWrapMode.Clamp;
  58. if (!valid)
  59. EditorUtilities.DrawFixMeBox("Invalid mask import settings.", () => SetMaskImportSettings(importer));
  60. }
  61. }
  62. PropertyField(m_Opacity);
  63. }
  64. }
  65. void SetMaskImportSettings(TextureImporter importer)
  66. {
  67. importer.textureType = TextureImporterType.SingleChannel;
  68. importer.alphaSource = TextureImporterAlphaSource.FromGrayScale;
  69. importer.textureCompression = TextureImporterCompression.Uncompressed;
  70. importer.anisoLevel = 0;
  71. importer.mipmapEnabled = false;
  72. importer.wrapMode = TextureWrapMode.Clamp;
  73. importer.SaveAndReimport();
  74. AssetDatabase.Refresh();
  75. }
  76. }
  77. }