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 } }
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); }
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)); } }
public override void OnNodeProcess() { UpdateWetnessMap(); if (inputBiomeData != null) { inputBiomeData.UpdateSamplerValue(BiomeSamplerName.wetness, wetnessMap); } outputBiomData = inputBiomeData; }
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; }