コード例 #1
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");
                }
            }
        }