private void DrawShadingGUI() { string label = "Shading"; string id = "shading" + data.Id; GenericMenu menu = new GenericMenu(); menu.AddItem( new GUIContent("Reset"), false, () => { data.Shading.ResetFull(); }); menu.AddItem( new GUIContent("Refresh"), false, () => { data.Shading.UpdateLookupTextures(); data.Shading.UpdateMaterials(); }); menu.AddItem( new GUIContent("Set Shader"), false, () => { GWizardWindow.ShowSetShaderTab(terrain); }); menu.AddSeparator(null); menu.AddItem( new GUIContent("Advanced/Convert Splats To Albedo"), false, () => { data.Shading.ConvertSplatsToAlbedo(); }); menu.AddSeparator("Advanced/"); menu.AddItem( new GUIContent("Advanced/Remove Albedo Map"), false, () => { ConfirmAndRemoveAlbedoMap(); }); menu.AddItem( new GUIContent("Advanced/Remove Metallic Map"), false, () => { ConfirmAndRemoveMetallicMap(); }); menu.AddItem( new GUIContent("Advanced/Remove Splat Control Maps"), false, () => { ConfirmAndRemoveControlMaps(); }); menu.AddItem( new GUIContent("Advanced/Remove Gradient Lookup Maps"), false, () => { ConfirmAndRemoveGradientLookupMaps(); }); GEditorCommon.Foldout(label, false, id, () => { GShading settings = data.Shading; EditorGUI.BeginChangeCheck(); #if __MICROSPLAT_POLARIS__ GEditorCommon.Header("System"); settings.ShadingSystem = (GShadingSystem)EditorGUILayout.EnumPopup("Shading System", settings.ShadingSystem); #endif GEditorCommon.Header("Material & Shader"); settings.CustomMaterial = EditorGUILayout.ObjectField("Material", settings.CustomMaterial, typeof(Material), false) as Material; if (settings.CustomMaterial != null) { GUI.enabled = false; EditorGUILayout.LabelField("Shader", settings.CustomMaterial.shader.name); GUI.enabled = true; } #if __MICROSPLAT_POLARIS__ if (settings.ShadingSystem == GShadingSystem.MicroSplat) { settings.MicroSplatTextureArrayConfig = EditorGUILayout.ObjectField("Texture Array Config", settings.MicroSplatTextureArrayConfig, typeof(TextureArrayConfig), false) as TextureArrayConfig; } #endif if (settings.ShadingSystem == GShadingSystem.Polaris) { GEditorCommon.Header("Color Map & Gradient Lookup"); settings.AlbedoMapResolution = EditorGUILayout.DelayedIntField("Albedo Map Resolution", settings.AlbedoMapResolution); settings.MetallicMapResolution = EditorGUILayout.DelayedIntField("Metallic Map Resolution", settings.MetallicMapResolution); if (EditorGUI.EndChangeCheck()) { data.SetDirty(GTerrainData.DirtyFlags.Shading); } EditorGUI.BeginChangeCheck(); SerializedObject so = new SerializedObject(settings); SerializedProperty colorByNormalProps = so.FindProperty("colorByNormal"); EditorGUILayout.PropertyField(colorByNormalProps); settings.ColorBlendCurve = EditorGUILayout.CurveField("Blend By Height", settings.ColorBlendCurve, Color.red, new Rect(0, 0, 1, 1)); SerializedProperty colorByHeightProps = so.FindProperty("colorByHeight"); EditorGUILayout.PropertyField(colorByHeightProps); if (EditorGUI.EndChangeCheck()) { so.ApplyModifiedProperties(); settings.UpdateLookupTextures(); data.SetDirty(GTerrainData.DirtyFlags.Shading); } colorByHeightProps.Dispose(); colorByNormalProps.Dispose(); so.Dispose(); } EditorGUI.BeginChangeCheck(); GEditorCommon.Header("Splats"); if (settings.ShadingSystem == GShadingSystem.Polaris) { settings.Splats = EditorGUILayout.ObjectField("Prototypes", settings.Splats, typeof(GSplatPrototypeGroup), false) as GSplatPrototypeGroup; } settings.SplatControlResolution = EditorGUILayout.DelayedIntField("Control Map Resolution", settings.SplatControlResolution); if (settings.ShadingSystem == GShadingSystem.Polaris) { GEditorCommon.Header("Advanced"); DrawAdvancedShading(); } if (EditorGUI.EndChangeCheck()) { data.SetDirty(GTerrainData.DirtyFlags.Shading); } }, menu); }
public static void ShowExtensionWindow() { GWizardWindow.ShowExtensionTab(); }
private void DrawShadingOverrideGUI() { string label = "Shading Override"; string id = "shadingoverride" + instance.GetInstanceID(); GenericMenu context = new GenericMenu(); context.AddItem( new GUIContent("Default"), false, () => { instance.ResetShading(); }); context.AddSeparator(null); context.AddItem( new GUIContent("Reset"), false, () => { GCommon.ForEachTerrain( instance.GroupId, (t) => { if (t.TerrainData == null) { return; } t.TerrainData.Shading.ResetFull(); }); }); context.AddItem( new GUIContent("Refresh"), false, () => { GCommon.ForEachTerrain( instance.GroupId, (t) => { if (t.TerrainData == null) { return; } t.TerrainData.Shading.UpdateLookupTextures(); t.TerrainData.Shading.UpdateMaterials(); }); }); context.AddItem( new GUIContent("Set Shader"), false, () => { GWizardWindow.ShowSetShaderTab(instance.GroupId); }); GEditorCommon.Foldout(label, false, id, () => { EditorGUI.indentLevel -= 1; GShadingOverride s = instance.ShadingOverride; EditorGUI.BeginChangeCheck(); float labelWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = labelWidth - TOGGLE_WIDTH; EditorGUI.indentLevel += 1; GEditorCommon.Header("Material"); EditorGUI.indentLevel -= 1; EditorGUILayout.BeginHorizontal(); s.OverrideCustomMaterial = EditorGUILayout.Toggle(s.OverrideCustomMaterial, GUILayout.Width(TOGGLE_WIDTH)); s.CustomMaterial = EditorGUILayout.ObjectField("Material Template", s.CustomMaterial, typeof(Material), false) as Material; EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel += 1; GEditorCommon.Header("Color Map & Gradient Lookup"); EditorGUI.indentLevel -= 1; EditorGUILayout.BeginHorizontal(); s.OverrideAlbedoMapResolution = EditorGUILayout.Toggle(s.OverrideAlbedoMapResolution, GUILayout.Width(TOGGLE_WIDTH)); s.AlbedoMapResolution = EditorGUILayout.DelayedIntField("Albedo Map Resolution", s.AlbedoMapResolution); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideMetallicMapResolution = EditorGUILayout.Toggle(s.OverrideMetallicMapResolution, GUILayout.Width(TOGGLE_WIDTH)); s.MetallicMapResolution = EditorGUILayout.DelayedIntField("Metallic Map Resolution", s.MetallicMapResolution); EditorGUILayout.EndHorizontal(); SerializedObject so = new SerializedObject(instance); SerializedProperty sp = so.FindProperty("shadingOverride"); EditorGUILayout.BeginHorizontal(); s.OverrideColorByNormal = EditorGUILayout.Toggle(s.OverrideColorByNormal, GUILayout.Width(TOGGLE_WIDTH)); SerializedProperty cbnProps = sp.FindPropertyRelative("colorByNormal"); EditorGUILayout.PropertyField(cbnProps); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideColorBlendCurve = EditorGUILayout.Toggle(s.OverrideColorBlendCurve, GUILayout.Width(TOGGLE_WIDTH)); s.ColorBlendCurve = EditorGUILayout.CurveField("Blend By Height", s.ColorBlendCurve, Color.red, new Rect(0, 0, 1, 1)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideColorByHeight = EditorGUILayout.Toggle(s.OverrideColorByHeight, GUILayout.Width(TOGGLE_WIDTH)); SerializedProperty cbhProps = sp.FindPropertyRelative("colorByHeight"); EditorGUILayout.PropertyField(cbhProps); EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel += 1; GEditorCommon.Header("Splats"); EditorGUI.indentLevel -= 1; EditorGUILayout.BeginHorizontal(); s.OverrideSplats = EditorGUILayout.Toggle(s.OverrideSplats, GUILayout.Width(TOGGLE_WIDTH)); s.Splats = EditorGUILayout.ObjectField("Prototypes", s.Splats, typeof(GSplatPrototypeGroup), false) as GSplatPrototypeGroup; EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatControlResolution = EditorGUILayout.Toggle(s.OverrideSplatControlResolution, GUILayout.Width(TOGGLE_WIDTH)); s.SplatControlResolution = EditorGUILayout.DelayedIntField("Splat Control Maps Resolution", s.SplatControlResolution); EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel += 1; GEditorCommon.Header("Advanced"); EditorGUI.indentLevel -= 1; EditorGUILayout.BeginHorizontal(); s.OverrideAlbedoMapPropertyName = EditorGUILayout.Toggle(s.OverrideAlbedoMapPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.AlbedoMapPropertyName = EditorGUILayout.DelayedTextField("Albedo Map Property Name", s.AlbedoMapPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideMetallicMapPropertyName = EditorGUILayout.Toggle(s.OverrideMetallicMapPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.MetallicMapPropertyName = EditorGUILayout.DelayedTextField("Metallic Map Property Name", s.MetallicMapPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideColorByHeightPropertyName = EditorGUILayout.Toggle(s.OverrideColorByHeightPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.ColorByHeightPropertyName = EditorGUILayout.DelayedTextField("Color By Height Property Name", s.ColorByHeightPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideColorByNormalPropertyName = EditorGUILayout.Toggle(s.OverrideColorByNormalPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.ColorByNormalPropertyName = EditorGUILayout.DelayedTextField("Color By Normal Property Name", s.ColorByNormalPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideColorBlendPropertyName = EditorGUILayout.Toggle(s.OverrideColorBlendPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.ColorBlendPropertyName = EditorGUILayout.DelayedTextField("Color Blend Property Name", s.ColorBlendPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideDimensionPropertyName = EditorGUILayout.Toggle(s.OverrideDimensionPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.DimensionPropertyName = EditorGUILayout.DelayedTextField("Dimension Property Name", s.DimensionPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatControlMapPropertyName = EditorGUILayout.Toggle(s.OverrideSplatControlMapPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.SplatControlMapPropertyName = EditorGUILayout.DelayedTextField("Splat Control Map Property Name", s.SplatControlMapPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatMapPropertyName = EditorGUILayout.Toggle(s.OverrideSplatMapPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.SplatMapPropertyName = EditorGUILayout.DelayedTextField("Splat Map Property Name", s.SplatMapPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatNormalPropertyName = EditorGUILayout.Toggle(s.OverrideSplatNormalPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.SplatNormalPropertyName = EditorGUILayout.DelayedTextField("Splat Normal Property Name", s.SplatNormalPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatMetallicPropertyName = EditorGUILayout.Toggle(s.OverrideSplatMetallicPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.SplatMetallicPropertyName = EditorGUILayout.DelayedTextField("Splat Metallic Property Name", s.SplatMetallicPropertyName); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); s.OverrideSplatSmoothnessPropertyName = EditorGUILayout.Toggle(s.OverrideSplatSmoothnessPropertyName, GUILayout.Width(TOGGLE_WIDTH)); s.SplatSmoothnessPropertyName = EditorGUILayout.DelayedTextField("Splat Smoothness Property Name", s.SplatSmoothnessPropertyName); EditorGUILayout.EndHorizontal(); EditorGUIUtility.labelWidth = labelWidth; if (EditorGUI.EndChangeCheck()) { so.ApplyModifiedProperties(); instance.ShadingOverride = s; if (!instance.DeferredUpdate) { GAnalytics.Record(GAnalytics.GROUP_OVERRIDE_SHADING); instance.OverrideShading(); } } so.Dispose(); sp.Dispose(); cbhProps.Dispose(); cbnProps.Dispose(); EditorGUI.indentLevel += 1; }, context); }
public static void ShowCreateTerrainWizard(MenuCommand menuCmd) { GWizardWindow.ShowCreateLevelTab(menuCmd); }