public void OnGUI(BiomeData biomeData) { bbList.listFoldout = EditorGUILayout.Foldout(bbList.listFoldout, "Biome blending list"); int length = bbList.blendEnabled.GetLength(0); int foldoutSize = 16; int leftPadding = 10; base.OnGUI(new Rect()); if (bbList.listFoldout) { float biomeSamplerNameWidth = BiomeSamplerName.GetNames().Max(n => EditorStyles.label.CalcSize(new GUIContent(n)).x); Rect r = GUILayoutUtility.GetRect(length * foldoutSize + biomeSamplerNameWidth, length * foldoutSize); using (DefaultGUISkin.Get()) { GUIStyle coloredLabel = new GUIStyle(EditorStyles.label); for (int i = 0; i < bbList.blendEnabled.GetLength(0); i++) { Rect labelRect = r; labelRect.y += i * foldoutSize; labelRect.x += leftPadding; GUI.Label(labelRect, biomeData.GetBiomeKey(i), coloredLabel); Rect toggleRect = r; toggleRect.size = new Vector2(foldoutSize, foldoutSize); toggleRect.y += i * foldoutSize; toggleRect.x += leftPadding + biomeSamplerNameWidth; bbList.blendEnabled[i] = GUI.Toggle(toggleRect, bbList.blendEnabled[i], GUIContent.none); } } } }
public override void OnNodeGUI() { BiomeData biomeData = GetBiomeData(); if (biomeData == null) { EditorGUILayout.LabelField("biomes not connected !"); return; } else { EditorGUIUtility.labelWidth = 120; EditorGUI.BeginChangeCheck(); biomeBlendPercent = PWGUI.Slider("Biome blend ratio: ", biomeBlendPercent, 0f, .5f); if (EditorGUI.EndChangeCheck()) { delayedChanges.UpdateValue(updateBiomeMapKey); } blendList.UpdateIfNeeded(biomeData); EditorGUI.BeginChangeCheck(); blendList.DrawList(biomeData, visualRect); if (EditorGUI.EndChangeCheck()) { delayedChanges.UpdateValue(updateBiomeMapKey); } } if (biomeData != null) { if (biomeData.biomeMap != null) { PWGUI.BiomeMap2DPreview(biomeData); } //TODO: biome 3D preview } else { EditorGUILayout.LabelField("no biome data"); } if (updateBiomeMap) { PWGUI.SetUpdateForField(1, true); updateBiomeMap = false; } var biomeCoverage = biomeData.biomeSwitchGraph.GetBiomeCoverage(); bool biomeCoverageError = biomeCoverage.Any(b => b.Value > 0 && b.Value < 1); GUIStyle biomeCoverageFoloutStyle = (biomeCoverageError) ? PWStyles.errorFoldout : EditorStyles.foldout; if (biomeCoverageRecap = EditorGUILayout.Foldout(biomeCoverageRecap, "Biome coverage recap", biomeCoverageFoloutStyle)) { if (biomeData != null && biomeData.biomeSwitchGraph != null) { foreach (var biomeCoverageKP in biomeCoverage) { if (biomeCoverageKP.Value > 0) { string paramName = biomeData.GetBiomeKey(biomeCoverageKP.Key); EditorGUILayout.LabelField(paramName, (biomeCoverageKP.Value * 100).ToString("F2") + "%"); } } } else { EditorGUILayout.LabelField("Null biome data/biome tree"); } } }