Exemplo n.º 1
0
        void SendMapTiles(IPlayer player)
        {
            var visionTracker = player.GetVisionTracker(this);

            int w = this.Width;
            int h = this.Height;
            int d = this.Depth;

            var size = new IntSize3(w, h, 1);

            var arr = new ulong[w * h];

            for (int z = 0; z < d; ++z)
            {
                var bounds = new IntGrid3(new IntVector3(0, 0, z), size);

                Parallel.For(0, h, y =>
                {
                    for (int x = 0; x < w; ++x)
                    {
                        var p = new IntVector3(x, y, z);

                        ulong v;

                        if (!visionTracker.Sees(p))
                        {
                            v = 0;
                        }
                        else
                        {
                            v = GetTileData(p).Raw;
                        }

                        arr[y * w + x] = v;
                    }
                });

                var msg = new Messages.MapDataTerrainsMessage()
                {
                    Environment = this.ObjectID,
                    Bounds      = bounds,
                    TerrainData = arr,
                };

                player.Send(msg);
                //Trace.TraceError("Sent {0}", z);
            }
        }
Exemplo n.º 2
0
        void SendMapTiles(IPlayer player)
        {
            var visionTracker = player.GetVisionTracker(this);

            int w = this.Width;
            int h = this.Height;
            int d = this.Depth;

            var size = new IntSize3(w, h, 1);

            var arr = new ulong[w * h];

            for (int z = 0; z < d; ++z)
            {
                var bounds = new IntGrid3(new IntVector3(0, 0, z), size);

                Parallel.For(0, h, y =>
                {
                    for (int x = 0; x < w; ++x)
                    {
                        var p = new IntVector3(x, y, z);

                        ulong v;

                        if (!visionTracker.Sees(p))
                            v = 0;
                        else
                            v = GetTileData(p).Raw;

                        arr[y * w + x] = v;
                    }
                });

                var msg = new Messages.MapDataTerrainsMessage()
                {
                    Environment = this.ObjectID,
                    Bounds = bounds,
                    TerrainData = arr,
                };

                player.Send(msg);
                //Trace.TraceError("Sent {0}", z);
            }
        }