Exemple #1
0
        protected virtual void AggregateTiles(TileGridBlock block, ITileDefinitionSource tileDefinitionSource, GraphicsContext graphicsContext, ref Vector2 cellSize)
        {
            var        blockSize = block.BlockSize;
            RectangleF outRect   = new RectangleF();

            outRect.X      = block.Origin.X;
            outRect.Y      = block.Origin.Y;
            outRect.Width  = cellSize.X;
            outRect.Height = cellSize.Y;
            for (int y = 0; y < blockSize; y++)
            {
                for (int x = 0; x < blockSize; x++)
                {
                    var tileRef = block.GetCell(x, y);

                    if (!tileRef.IsEmpty)
                    {
                        var tile = tileDefinitionSource.GetTile(ref tileRef);

                        if (tile != null && tile.CanCacheTileMesh)
                        {
                            var frame = tile[0];

                            Add(frame.Texture, ref frame.TextureRegion, ref outRect);
                        }
                    }
                    outRect.X += cellSize.X;
                }
                outRect.X  = block.Origin.X;
                outRect.Y -= cellSize.Y;
            }
        }
Exemple #2
0
 public TileMesh(ITileMeshDrawBuilder tileMeshDrawBuilder, ITileDefinitionSource tileDefinitionSource)
 {
     this.tileMeshDrawBuilder  = tileMeshDrawBuilder;
     this.tileDefinitionSource = tileDefinitionSource;
     tileMeshDraws             = new Dictionary <ShortPoint, TileMeshDraw>();
     previousTileMeshDraws     = new Dictionary <ShortPoint, TileMeshDraw>();
     tileMeshDrawsForRecycle   = new List <TileMeshDraw>();
     pendingBlocks             = new List <TileGridBlock>();
 }
Exemple #3
0
        public virtual TileMeshDraw Build(TileGridBlock block, ITileDefinitionSource tileDefinitionSource, GraphicsContext graphicsContext, ref Vector2 cellSize)
        {
            TileMeshDraw tileMeshDraw = null;

            AggregateTiles(block, tileDefinitionSource, graphicsContext, ref cellSize);
            CompleteBuild(graphicsContext, block.BlockSize * block.BlockSize, ref tileMeshDraw);

            return(tileMeshDraw);
        }
Exemple #4
0
 public virtual void Recycle(TileMeshDraw tileMeshDraw, TileGridBlock block, ITileDefinitionSource tileDefinitionSource, GraphicsContext graphicsContext, ref Vector2 cellSize)
 {
     AggregateTiles(block, tileDefinitionSource, graphicsContext, ref cellSize);
     CompleteBuild(graphicsContext, block.BlockSize * block.BlockSize, ref tileMeshDraw);
 }