示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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");
                }
            }
        }