public override TopDownChunkData CreateChunkData(FinalTerrain terrain) { TopDownChunkData chunk = new TopDownChunkData(); FillChunkData(chunk as ChunkData, terrain); return(chunk); }
public void FillChunkData(ChunkData chunk, FinalTerrain finalTerrain) { chunk.size = finalTerrain.mergedTerrain.size; chunk.materializerType = finalTerrain.materializerType; chunk.terrain = finalTerrain.mergedTerrain; chunk.biomeMap = finalTerrain.biomeData.biomeMap; chunk.biomeMap3D = null; }
public T RequestChunk(Vector3 pos, int seed) { if (seed != oldSeed) { graph.seed = seed; } graph.chunkPosition = pos; graph.Process(); oldSeed = seed; FinalTerrain finalTerrain = graph.GetOutput <FinalTerrain>(); if (finalTerrain == null) { Debug.LogWarning("[PWTerrainBase] Graph output does not contains T type"); return(null); } return(CreateChunkData(finalTerrain)); }
public abstract T CreateChunkData(FinalTerrain terrain);
public override TopDownChunkData CreateChunkData(FinalTerrain terrain) { Debug.Log("TODO !"); return(null); }
public override void OnNodeProcess() { if (mergedBiomeTerrain == null) { mergedBiomeTerrain = new FinalTerrain(); } if (inputBlendedTerrain.biomeData == null) { Debug.LogError("[PWBiomeMerger] Can't find BiomeData, did you forgot to specify the BiomeGraph in a Biome node"); return; } var inputTerrain = inputBlendedTerrain.biomeData.GetSampler(BiomeSamplerName.terrainHeight); finalTerrain = inputTerrain.Clone(finalTerrain); if (finalTerrain.type == SamplerType.Sampler2D) { BiomeMap2D biomeMap = inputBlendedTerrain.biomeData.biomeMap; (finalTerrain as Sampler2D).Foreach((x, y, val) => { float ret = 0; var biomeInfo = biomeMap.GetBiomeBlendInfo(x, y); foreach (var biome in inputBlendedTerrain.biomes) { var terrain = biome.modifiedTerrain as Sampler2D; if (terrain == null) { PWUtils.LogErrorMax("[PWNodeMerger] can't access to the terrain of the biome " + biome.id + "(" + biome.name + ")", 100); continue; } //TODO: test this blending ! for (int i = 0; i < biomeInfo.length; i++) { if (biomeInfo.biomeIds[i] == biome.id) { ret += terrain[x, y] * biomeInfo.biomeBlends[i] / biomeInfo.totalBlend; } } } return(ret); }); } else if (finalTerrain.type == SamplerType.Sampler3D) { Debug.Log("TODO: 3D Terrains"); } mergedBiomeTerrain.biomeData = inputBlendedTerrain.biomeData; mergedBiomeTerrain.mergedTerrain = finalTerrain; mergedBiomeTerrain.materializerType = mainGraphRef.materializerType; mergedBiomeTerrain.biomeSurfacesList.Clear(); foreach (var biome in inputBlendedTerrain.biomes) { if (mergedBiomeTerrain.biomeSurfacesList.ContainsKey(biome.id)) { Debug.LogError("[PWBiomeMerger] Duplicate biome in the biome graph: " + biome.name + ", id: " + biome.id); } mergedBiomeTerrain.biomeSurfacesList[biome.id] = biome.biomeSurfaceGraph; } update = true; }