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.
70 lines
2.7 KiB
70 lines
2.7 KiB
using UnityEngine; |
|
using UnityEngine.Rendering.Universal; |
|
|
|
namespace UnityEditor.Rendering.Universal |
|
{ |
|
[VolumeComponentEditor(typeof(FilmGrain))] |
|
sealed class FilmGrainEditor : VolumeComponentEditor |
|
{ |
|
SerializedDataParameter m_Type; |
|
SerializedDataParameter m_Intensity; |
|
SerializedDataParameter m_Response; |
|
SerializedDataParameter m_Texture; |
|
|
|
public override void OnEnable() |
|
{ |
|
var o = new PropertyFetcher<FilmGrain>(serializedObject); |
|
|
|
m_Type = Unpack(o.Find(x => x.type)); |
|
m_Intensity = Unpack(o.Find(x => x.intensity)); |
|
m_Response = Unpack(o.Find(x => x.response)); |
|
m_Texture = Unpack(o.Find(x => x.texture)); |
|
} |
|
|
|
public override void OnInspectorGUI() |
|
{ |
|
PropertyField(m_Type); |
|
|
|
if (m_Type.value.intValue == (int)FilmGrainLookup.Custom) |
|
{ |
|
using (new IndentLevelScope()) |
|
PropertyField(m_Texture); |
|
|
|
var texture = (target as FilmGrain).texture.value; |
|
|
|
if (texture != null) |
|
{ |
|
var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter; |
|
|
|
// Fails when using an internal texture as you can't change import settings on |
|
// builtin resources, thus the check for null |
|
if (importer != null) |
|
{ |
|
bool valid = importer.mipmapEnabled == false |
|
&& importer.alphaSource == TextureImporterAlphaSource.FromGrayScale |
|
&& importer.filterMode == FilterMode.Point |
|
&& importer.textureCompression == TextureImporterCompression.Uncompressed |
|
&& importer.textureType == TextureImporterType.SingleChannel; |
|
|
|
if (!valid) |
|
CoreEditorUtils.DrawFixMeBox("Invalid texture import settings.", () => SetTextureImportSettings(importer)); |
|
} |
|
} |
|
} |
|
|
|
PropertyField(m_Intensity); |
|
PropertyField(m_Response); |
|
} |
|
|
|
static void SetTextureImportSettings(TextureImporter importer) |
|
{ |
|
importer.textureType = TextureImporterType.SingleChannel; |
|
importer.alphaSource = TextureImporterAlphaSource.FromGrayScale; |
|
importer.mipmapEnabled = false; |
|
importer.filterMode = FilterMode.Point; |
|
importer.textureCompression = TextureImporterCompression.Uncompressed; |
|
importer.SaveAndReimport(); |
|
AssetDatabase.Refresh(); |
|
} |
|
} |
|
}
|
|
|