BananaMpq.Geometry.Builders.ChunkBuilder.BuildTerrain C# (CSharp) Method

BuildTerrain() public method

public BuildTerrain ( Adt adt, RectangleF bounds ) : IEnumerable
adt BananaMpq.Layer.Adt
bounds RectangleF
return IEnumerable
        public IEnumerable<SceneObject> BuildTerrain(Adt adt, RectangleF bounds)
        {
            foreach (var chunk in adt.MapChunks)
            {
                var offset = chunk.Bounds.Maximum;
                offset.Z = chunk.Bounds.Minimum.Z;
                var meshBuilder = new SquareMeshBuilder(chunk.HeightMap, offset, -MapChunk.TileSize);
                var description = string.Format(DescriptionTemplate, "Terrain", chunk.X, chunk.Y);
                var sceneObject = meshBuilder.BuildSquareMesh(chunk.HasHole, MaterialFlags.None, bounds, description);
                if (sceneObject != null) yield return sceneObject;
            }
        }

Usage Example

Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="continent"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="padding">You can pad from 0 up to an mcnk sized strip around the adt.</param>
        /// <returns></returns>
        public Scene BuildTile(string continent, int x, int y, float padding = MapChunk.TileSize)
        {
            var chunkBuilder  = new ChunkBuilder(GetLiquidMaterialProperties);
            var doodadBuilder = new DoodadBuilder(_files);
            var wmoBuilder    = new WmoBuilder(_files, doodadBuilder, GetLiquidMaterialProperties);
            var terrain       = new List <SceneObject>();
            var liquids       = new List <SceneObject>();
            var doodads       = new List <SceneObject>();
            var wmos          = new List <SceneObject>();

            var centerAdt = _files.GetAdt(continent, x, y);
            var bounds    = GetSceneBounds(centerAdt, padding);

            foreach (var p in AdtRegion(continent, x, y))
            {
                var curX = (int)p.X;
                var curY = (int)p.Y;
                var adt  = _files.GetAdt(continent, curX, curY);
                terrain.AddRange(chunkBuilder.BuildTerrain(adt, bounds));
                liquids.AddRange(chunkBuilder.BuildLiquid(adt, bounds));
                doodads.AddRange(doodadBuilder.BuildDoodads(DefinedDoodads(adt), adt.DoodadReferences, bounds));
                var wmoResults = wmoBuilder.BuildWmos(DefinedWmos(adt), adt.WmoReferences, bounds);
                wmos.AddRange(wmoResults.GroupObjects);

                doodads.AddRange(wmoResults.Doodads);
                liquids.AddRange(wmoResults.Liquids);
            }

            return(MergeIntoScene(centerAdt, terrain, liquids, doodads, wmos));
        }
All Usage Examples Of BananaMpq.Geometry.Builders.ChunkBuilder::BuildTerrain