123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using UnityEngine;
- using UnityEngine.PostProcessing;
- namespace UnityEditor.PostProcessing
- {
- using VignetteMode = VignetteModel.Mode;
- using Settings = VignetteModel.Settings;
- [PostProcessingModelEditor(typeof(VignetteModel))]
- public class VignetteModelEditor : PostProcessingModelEditor
- {
- SerializedProperty m_Mode;
- SerializedProperty m_Color;
- SerializedProperty m_Center;
- SerializedProperty m_Intensity;
- SerializedProperty m_Smoothness;
- SerializedProperty m_Roundness;
- SerializedProperty m_Mask;
- SerializedProperty m_Opacity;
- SerializedProperty m_Rounded;
- public override void OnEnable()
- {
- m_Mode = FindSetting((Settings x) => x.mode);
- m_Color = FindSetting((Settings x) => x.color);
- m_Center = FindSetting((Settings x) => x.center);
- m_Intensity = FindSetting((Settings x) => x.intensity);
- m_Smoothness = FindSetting((Settings x) => x.smoothness);
- m_Roundness = FindSetting((Settings x) => x.roundness);
- m_Mask = FindSetting((Settings x) => x.mask);
- m_Opacity = FindSetting((Settings x) => x.opacity);
- m_Rounded = FindSetting((Settings x) => x.rounded);
- }
- public override void OnInspectorGUI()
- {
- EditorGUILayout.PropertyField(m_Mode);
- EditorGUILayout.PropertyField(m_Color);
- if (m_Mode.intValue < (int)VignetteMode.Masked)
- {
- EditorGUILayout.PropertyField(m_Center);
- EditorGUILayout.PropertyField(m_Intensity);
- EditorGUILayout.PropertyField(m_Smoothness);
- EditorGUILayout.PropertyField(m_Roundness);
- EditorGUILayout.PropertyField(m_Rounded);
- }
- else
- {
- var mask = (target as VignetteModel).settings.mask;
- // Checks import settings on the mask, offers to fix them if invalid
- if (mask != null)
- {
- var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(mask)) as TextureImporter;
- if (importer != null) // Fails when using an internal texture
- {
- #if UNITY_5_5_OR_NEWER
- bool valid = importer.anisoLevel == 0
- && importer.mipmapEnabled == false
- //&& importer.alphaUsage == TextureImporterAlphaUsage.FromGrayScale
- && importer.alphaSource == TextureImporterAlphaSource.FromGrayScale
- && importer.textureCompression == TextureImporterCompression.Uncompressed
- && importer.wrapMode == TextureWrapMode.Clamp;
- #else
- bool valid = importer.anisoLevel == 0
- && importer.mipmapEnabled == false
- && importer.grayscaleToAlpha == true
- && importer.textureFormat == TextureImporterFormat.Alpha8
- && importer.wrapMode == TextureWrapMode.Clamp;
- #endif
- if (!valid)
- {
- EditorGUILayout.HelpBox("Invalid mask import settings.", MessageType.Warning);
- GUILayout.Space(-32);
- using (new EditorGUILayout.HorizontalScope())
- {
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Fix", GUILayout.Width(60)))
- {
- SetMaskImportSettings(importer);
- AssetDatabase.Refresh();
- }
- GUILayout.Space(8);
- }
- GUILayout.Space(11);
- }
- }
- }
- EditorGUILayout.PropertyField(m_Mask);
- EditorGUILayout.PropertyField(m_Opacity);
- }
- }
- void SetMaskImportSettings(TextureImporter importer)
- {
- #if UNITY_5_5_OR_NEWER
- importer.textureType = TextureImporterType.SingleChannel;
- //importer.alphaUsage = TextureImporterAlphaUsage.FromGrayScale;
- importer.alphaSource = TextureImporterAlphaSource.FromGrayScale;
- importer.textureCompression = TextureImporterCompression.Uncompressed;
- #else
- importer.textureType = TextureImporterType.Advanced;
- importer.grayscaleToAlpha = true;
- importer.textureFormat = TextureImporterFormat.Alpha8;
- #endif
- importer.anisoLevel = 0;
- importer.mipmapEnabled = false;
- importer.wrapMode = TextureWrapMode.Clamp;
- importer.SaveAndReimport();
- }
- }
- }
|