package render import ( "github.com/pnx/go-raytracer/graphics" "github.com/pnx/go-raytracer/math" "github.com/pnx/go-raytracer/world" ) func DrawMiniMap(ctx *graphics.Context, camera math.Transform, level *world.Level) { const tileSize = 32 const scale = float64(tileSize) / float64(world.TileSize) // offset := math.Vec2i32{X: 25, Y: 25} // size := math.Vec2i32{X: 200, Y: 100} ctx.DrawRect(0, 0, int32(level.W*tileSize)+3, int32(level.H*tileSize)+3, 0) for y := range level.H { for x := range level.W { if level.Wall(x, y) { ctx.DrawRect(int32(x*tileSize), int32(y*tileSize), tileSize, tileSize, 4) } } } // Camera Position cPos := camera.Position.Get().Scale(scale) ctx.DrawRect(int32(cPos.X-2), int32(cPos.Y-2), 4, 4, 2) // Rays for x := range ctx.Width() { hit := CastRay(camera, level, int(x), int(ctx.Width())) end := camera.Position.Get().AddVec(hit.Pos.Scale(world.TileSize)).Scale(scale) ctx.DrawLine(int32(cPos.X), int32(cPos.Y), int32(end.X), int32(end.Y), 2) } }