private void DrawRayTracer(AbstractMap map, RayTracer rayTracer, Surface surface) { int positionX; int positionY; foreach (RayTracerPoint rayTracerPoint in rayTracer) { positionX = (int)(rayTracerPoint.X / precision); positionY = (int)(rayTracerPoint.Y / precision); if (PointLoader.IsPositionValid(positionX, positionY)) { surface.Draw(PointLoader.GetPoint(positionX, positionY), Color.White); } } }
private Surface GetOrCreateMapSurface(AbstractMap map) { if (this.currentMap != map) { this.currentMap = map; mapSurface = null; } if (mapSurface != null) { return(mapSurface); } int pixelWidth = (int)Math.Ceiling((double)map.Width / precision); int pixelHeight = (int)Math.Ceiling((double)map.Height / precision); mapSurface = new Surface(pixelWidth, pixelHeight); int pixelLocationX = 0; for (double mapLocationX = 0; mapLocationX < map.Width; mapLocationX += precision) { int pixelLocationY = 0; for (double mapLocationY = 0; mapLocationY < map.Height; mapLocationY += precision) { if (map.GetMatterTypeAt(mapLocationX, mapLocationY) != null) { if (PointLoader.IsPositionValid(pixelLocationX, pixelLocationY)) { mapSurface.Draw(PointLoader.GetPoint(pixelLocationX, pixelLocationY), Color.Gray); } } pixelLocationY++; } pixelLocationX++; } mapSurface.Transparent = true; return(mapSurface); }