protected BaseDecorator(Biomes biome, Chunk chunk, Vector pos, BaseBiomeNoise noise) { this.biome = biome; this.chunk = chunk; this.pos = pos; this.noise = noise; Features = new DecoratorFeatures(); }
private static void GenerateTrees(World world, Vector pos, DecoratorFeatures features, TerrainNoise noise) { foreach (var(tree, index) in features.Trees.Select((value, i) => (value, i))) { if (tree.Frequency == 0) { continue; } var treeInstance = Activator.CreateInstance(tree.TreeType, world) as BaseTree; // Use a different noisemap for each tree type by setting another Y value. var noiseVal = noise.Decoration(pos.X, -45 + (index * 10), pos.Z); var freq = tree.Frequency / 100.0; bool isTree = noiseVal > 0.8 && noiseVal <= freq + 0.8; if (!isTree) { continue; } int heightVariance = (int)(((noiseVal - 0.8) * 100) - (freq / 2)); GrowTree(pos, treeInstance, heightVariance); } }