public void UpdateWaterMap()
        {
            outputBiome.UpdateSamplerValue(BiomeSamplerName.terrainHeight, terrainNoise);

            outputBiome.waterLevel = waterLevel;

            if (terrainNoise.type == SamplerType.Sampler2D)
            {
                //terrain mapping
                var mappedTerrain = NoiseFunctions.Map(terrainNoise as Sampler2D, mapMin, mapMax, true);
                outputBiome.UpdateSamplerValue(BiomeSamplerName.terrainHeight, mappedTerrain);

                //waterHeight evaluation
                Sampler2D waterHeight = new Sampler2D(terrainNoise.size, terrainNoise.step);
                waterHeight.min = waterLevel - mappedTerrain.max;
                waterHeight.max = waterLevel;
                mappedTerrain.Foreach((x, y, val) => {
                    waterHeight[x, y] = waterLevel - val;
                });
                outputBiome.UpdateSamplerValue(BiomeSamplerName.waterHeight, waterHeight);
            }
            else
            {
                //TODO 3D terrain water level
            }
        }
Beispiel #2
0
        public void SimpleSwitchGraphBuild()
        {
            PWMainGraph graph = TestUtils.GenerateTestMainGraphBiomeSwitch();
            BiomeData   bd    = new BiomeData();

            var wlevel  = graph.FindNodeByName("wlevel");
            var bswitch = graph.FindNodeByName <PWNodeBiomeSwitch>("bswitch");
            var b1      = graph.FindNodeByName <PWNodeBiome>("b1");
            var b2      = graph.FindNodeByName <PWNodeBiome>("b2");

            bd.biomeSwitchGraphStartPoint = wlevel;

            PartialBiome p1 = new PartialBiome();
            PartialBiome p2 = new PartialBiome();

            b1.outputBiome = p1;
            b2.outputBiome = p2;

            //setup the switch values
            var sd = bswitch.switchList.switchDatas;

            sd[0].min         = 0;
            sd[0].max         = 5;
            sd[0].name        = "1";
            sd[0].samplerName = BiomeSamplerName.terrainHeight;
            sd[1].min         = 5;
            sd[1].max         = 10;
            sd[1].name        = "2";
            sd[1].samplerName = BiomeSamplerName.terrainHeight;

            Sampler2D terrainHeight = new Sampler2D(32, 1);

            terrainHeight.min = 0;
            terrainHeight.max = 10;

            bd.UpdateSamplerValue(BiomeSamplerName.terrainHeight, terrainHeight);

            BiomeSwitchGraph switchGraph = new BiomeSwitchGraph();

            switchGraph.BuildGraph(bd);

            Assert.That(switchGraph.isBuilt == true);

            var values = new BiomeSwitchValues();

            values[0] = 4.0f;
            Assert.That(switchGraph.FindBiome(values).id == p1.id);
            values[0] = 0f;
            Assert.That(switchGraph.FindBiome(values).id == p1.id);
            values[0] = 5f;
            Assert.That(switchGraph.FindBiome(values).id == p1.id);

            values[0] = 6.0f;
            Assert.That(switchGraph.FindBiome(values).id == p2.id);
            values[0] = 10f;
            Assert.That(switchGraph.FindBiome(values).id == p2.id);
        }
Beispiel #3
0
        public override void OnNodeProcess()
        {
            outputBiome.Reset();

            if (terrain != null && terrain.type == SamplerType.Sampler2D)
            {
                //terrain mapping
                outputBiome.UpdateSamplerValue(BiomeSamplerName.terrainHeight, NoiseFunctions.Map(terrain as Sampler2D, mapMin, mapMax, true));
            }
        }
Beispiel #4
0
        public override void OnNodeProcess()
        {
            UpdateWetnessMap();

            if (inputBiomeData != null)
            {
                inputBiomeData.UpdateSamplerValue(BiomeSamplerName.wetness, wetnessMap);
            }

            outputBiomData = inputBiomeData;
        }
Beispiel #5
0
        void UpdateTemperatureMap()
        {
            if (localTemperatureMap == null || inputBiomeData == null)
            {
                return;
            }

            var inputTemperatureMap = temperatureMap as Sampler2D;

            var terrain     = inputBiomeData.GetSampler2D(BiomeSamplerName.terrainHeight);
            var waterHeight = inputBiomeData.GetSampler2D(BiomeSamplerName.waterHeight);

            (localTemperatureMap as Sampler2D).Foreach((x, y, val) => {
                float terrainMod       = 0;
                float waterMod         = 0;
                float temperatureRange = (maxTemperature - minTemperature);
                float mapValue         = averageTemperature;

                if (!internalTemperatureMap)
                {
                    mapValue = Mathf.Lerp(Mathf.Max(minTemperature, minTemperatureMapInput), Mathf.Min(maxTemperature, maxTemperatureMapInput), inputTemperatureMap[x, y]);
                }

                if (terrainHeightMultiplier != 0 && terrain != null)
                {
                    terrainMod = terrain.At(x, y, true) * terrainHeightMultiplier * temperatureRange;
                }
                if (waterMultiplier != 0 && waterHeight != null)
                {
                    waterMod = waterHeight.At(x, y, true) * waterMultiplier * temperatureRange;
                }
                return(Mathf.Clamp(mapValue + terrainMod + waterMod, minTemperature, maxTemperature));
            });

            localTemperatureMap.min = minTemperature;
            localTemperatureMap.max = maxTemperature;

            if (inputBiomeData != null)
            {
                inputBiomeData.UpdateSamplerValue(BiomeSamplerName.temperature, localTemperatureMap);
            }

            updateTemperatureMap = true;
        }