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.
118 lines
4.8 KiB
118 lines
4.8 KiB
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(); |
|
} |
|
} |
|
}
|
|
|