123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using UnityEngine;
- using UnityEngine.PostProcessing;
- namespace UnityEditor.PostProcessing
- {
- using Settings = UserLutModel.Settings;
- [PostProcessingModelEditor(typeof(UserLutModel))]
- public class UserLutModelEditor : PostProcessingModelEditor
- {
- SerializedProperty m_Texture;
- SerializedProperty m_Contribution;
- public override void OnEnable()
- {
- m_Texture = FindSetting((Settings x) => x.lut);
- m_Contribution = FindSetting((Settings x) => x.contribution);
- }
- public override void OnInspectorGUI()
- {
- var lut = (target as UserLutModel).settings.lut;
- // Checks import settings on the lut, offers to fix them if invalid
- if (lut != null)
- {
- var importer = (TextureImporter)AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(lut));
- if (importer != null) // Fails when using an internal texture
- {
- #if UNITY_5_5_OR_NEWER
- bool valid = importer.anisoLevel == 0
- && importer.mipmapEnabled == false
- && importer.sRGBTexture == false
- && (importer.textureCompression == TextureImporterCompression.Uncompressed);
- #else
- bool valid = importer.anisoLevel == 0
- && importer.mipmapEnabled == false
- && importer.linearTexture == true
- && (importer.textureFormat == TextureImporterFormat.RGB24 || importer.textureFormat == TextureImporterFormat.AutomaticTruecolor);
- #endif
- if (!valid)
- {
- EditorGUILayout.HelpBox("Invalid LUT import settings.", MessageType.Warning);
- GUILayout.Space(-32);
- using (new EditorGUILayout.HorizontalScope())
- {
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Fix", GUILayout.Width(60)))
- {
- SetLUTImportSettings(importer);
- AssetDatabase.Refresh();
- }
- GUILayout.Space(8);
- }
- GUILayout.Space(11);
- }
- }
- else
- {
- m_Texture.objectReferenceValue = null;
- }
- }
- EditorGUILayout.PropertyField(m_Texture);
- EditorGUILayout.PropertyField(m_Contribution);
- }
- void SetLUTImportSettings(TextureImporter importer)
- {
- #if UNITY_5_5_OR_NEWER
- importer.textureType = TextureImporterType.Default;
- importer.sRGBTexture = false;
- importer.textureCompression = TextureImporterCompression.Uncompressed;
- #else
- importer.textureType = TextureImporterType.Advanced;
- importer.linearTexture = true;
- importer.textureFormat = TextureImporterFormat.RGB24;
- #endif
- importer.anisoLevel = 0;
- importer.mipmapEnabled = false;
- importer.SaveAndReimport();
- }
- }
- }
|