///Wrap an object if wrapper available, within provided environment public static void Wrap(object o, Environment env) { var wrapper = DecoratorFactory.GetDecorator <IExpressionDecorator>(o); if (wrapper != null) { wrapper.Wrap(env); } }
public static async Task DecorateAsync(Chunk chunk, double[,] terrainHeightMap, OverworldTerrain ot, World world) { var noise = new TerrainNoise(ot.settings); for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { var b = ChunkBiome.GetBiome((chunk.X << 4) + x, (chunk.Z << 4) + z, ot); var blockPos = new Vector(x, (int)terrainHeightMap[x, z], z); IDecorator decorator = DecoratorFactory.GetDecorator(b, chunk, blockPos, noise); decorator.Decorate(); await GenerateTreesAsync(world, blockPos + (chunk.X << 4, 0, chunk.Z << 4), decorator.Features, noise); await GenerateFloraAsync(world, blockPos + (chunk.X << 4, 0, chunk.Z << 4), decorator.Features, noise); } } }