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); } }
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); } }