internal virtual void OnEnable() { if (!target) { return; } m_DiffuseTexture = serializedObject.FindProperty("m_DiffuseTexture"); m_NormalMapTexture = serializedObject.FindProperty("m_NormalMapTexture"); m_MaskMapTexture = serializedObject.FindProperty("m_MaskMapTexture"); m_TileSize = serializedObject.FindProperty("m_TileSize"); m_TileOffset = serializedObject.FindProperty("m_TileOffset"); m_Specular = serializedObject.FindProperty("m_Specular"); m_Metallic = serializedObject.FindProperty("m_Metallic"); m_Smoothness = serializedObject.FindProperty("m_Smoothness"); m_NormalScale = serializedObject.FindProperty("m_NormalScale"); m_MaskRemapMinR = serializedObject.FindProperty("m_MaskMapRemapMin.x"); m_MaskRemapMinG = serializedObject.FindProperty("m_MaskMapRemapMin.y"); m_MaskRemapMinB = serializedObject.FindProperty("m_MaskMapRemapMin.z"); m_MaskRemapMinA = serializedObject.FindProperty("m_MaskMapRemapMin.w"); m_MaskRemapMaxR = serializedObject.FindProperty("m_MaskMapRemapMax.x"); m_MaskRemapMaxG = serializedObject.FindProperty("m_MaskMapRemapMax.y"); m_MaskRemapMaxB = serializedObject.FindProperty("m_MaskMapRemapMax.z"); m_MaskRemapMaxA = serializedObject.FindProperty("m_MaskMapRemapMax.w"); m_NormalMapHasCorrectTextureType = TerrainLayerUtility.CheckNormalMapTextureType(m_NormalMapTexture.objectReferenceValue as Texture2D); }
public override void OnInspectorGUI() { if (!target) { return; } if (m_CustomUI != null && m_CustomUITerrain != null && m_CustomUI.OnTerrainLayerGUI(target as TerrainLayer, m_CustomUITerrain)) { return; } serializedObject.Update(); EditorGUI.BeginChangeCheck(); var curMaskMap = m_MaskMapTexture.objectReferenceValue as Texture2D; bool maskMapUsed = m_MaskMapUsed || curMaskMap != null; var r = EditorGUILayout.GetControlRect(true, EditorGUI.kObjectFieldThumbnailHeight); var diffuseLabel = m_ShowMaskMap ? (maskMapUsed ? m_DiffuseMapMaskMapEnabledText : m_DiffuseMapText) : s_Styles.diffuseTexture; EditorGUI.BeginProperty(r, diffuseLabel, m_DiffuseTexture); EditorGUI.BeginChangeCheck(); var diffuseTexture = EditorGUI.ObjectField(r, diffuseLabel, m_DiffuseTexture.objectReferenceValue as Texture2D, typeof(Texture2D), false) as Texture2D; if (EditorGUI.EndChangeCheck()) { m_DiffuseTexture.objectReferenceValue = diffuseTexture; } EditorGUI.EndProperty(); TerrainLayerUtility.ValidateDiffuseTextureUI(diffuseTexture); r = EditorGUILayout.GetControlRect(true, EditorGUI.kObjectFieldThumbnailHeight); EditorGUI.BeginProperty(r, s_Styles.normalMapTexture, m_NormalMapTexture); EditorGUI.BeginChangeCheck(); var normalMapTexture = EditorGUI.ObjectField(r, s_Styles.normalMapTexture, m_NormalMapTexture.objectReferenceValue as Texture2D, typeof(Texture2D), false) as Texture2D; if (EditorGUI.EndChangeCheck()) { m_NormalMapTexture.objectReferenceValue = normalMapTexture; m_NormalMapHasCorrectTextureType = TerrainLayerUtility.CheckNormalMapTextureType(normalMapTexture); } EditorGUI.EndProperty(); TerrainLayerUtility.ValidateNormalMapTextureUI(normalMapTexture, m_NormalMapHasCorrectTextureType); if (normalMapTexture != null) { ++EditorGUI.indentLevel; EditorGUILayout.PropertyField(m_NormalScale); --EditorGUI.indentLevel; EditorGUILayout.Space(); } if (m_ShowMaskMap) { r = EditorGUILayout.GetControlRect(true, EditorGUI.kObjectFieldThumbnailHeight); EditorGUI.BeginProperty(r, m_MaskMapText, m_MaskMapTexture); EditorGUI.BeginChangeCheck(); var maskMapTexture = EditorGUI.ObjectField(r, m_MaskMapText, curMaskMap, typeof(Texture2D), false) as Texture2D; if (EditorGUI.EndChangeCheck()) { m_MaskMapTexture.objectReferenceValue = maskMapTexture; } EditorGUI.EndProperty(); TerrainLayerUtility.ValidateMaskMapTextureUI(maskMapTexture); if (maskMapUsed) { ++EditorGUI.indentLevel; m_ShowMaskRemap = EditorGUILayout.Foldout(m_ShowMaskRemap, s_Styles.channelRemapping); if (m_ShowMaskRemap) { DoMinMaxLabels(s_Styles.min, s_Styles.max, EditorStyles.miniLabel); DoMinMaxFloatFields(m_MaskRemapRText, EditorStyles.miniLabel, m_MaskRemapMinR, m_MaskRemapMaxR, EditorStyles.miniTextField); DoMinMaxFloatFields(m_MaskRemapGText, EditorStyles.miniLabel, m_MaskRemapMinG, m_MaskRemapMaxG, EditorStyles.miniTextField); DoMinMaxFloatFields(m_MaskRemapBText, EditorStyles.miniLabel, m_MaskRemapMinB, m_MaskRemapMaxB, EditorStyles.miniTextField); DoMinMaxFloatFields(m_MaskRemapAText, EditorStyles.miniLabel, m_MaskRemapMinA, m_MaskRemapMaxA, EditorStyles.miniTextField); } --EditorGUI.indentLevel; } } EditorGUILayout.Space(); EditorGUILayout.PropertyField(m_Specular); EditorGUILayout.Slider(m_Metallic, 0.0f, 1.0f); EditorGUILayout.Slider(m_Smoothness, 0.0f, 1.0f); EditorGUILayout.Space(); TerrainLayerUtility.TilingSettingsUI(m_TileSize, m_TileOffset); m_HasChanged |= EditorGUI.EndChangeCheck(); serializedObject.ApplyModifiedProperties(); }