Bugfixes
This commit is contained in:
parent
6698cf2301
commit
5bc671936c
4 changed files with 58 additions and 45 deletions
14
grid.odin
14
grid.odin
|
|
@ -4,7 +4,7 @@ import "core:math/linalg"
|
|||
import rl "libraries/raylib"
|
||||
|
||||
Grid :: struct {
|
||||
cell_size: v2,
|
||||
cell_size_px: v2,
|
||||
zoom_previous, zoom: v2,
|
||||
world_position, world_size, offset: v2,
|
||||
}
|
||||
|
|
@ -13,18 +13,18 @@ grid_get_zoom :: proc(zoom: v2) -> v2 {
|
|||
return linalg.pow(v2(2.0), zoom)
|
||||
}
|
||||
|
||||
grid_get_line_separation :: proc(zoom: v2, min_line_distance: f32) -> v2 {
|
||||
grid_get_line_separation :: proc(zoom: v2, min_line_distance: v2) -> v2 {
|
||||
zoom_factor := grid_get_zoom(zoom)
|
||||
sep := linalg.pow(v2(10.0), linalg.floor(linalg.log10(min_line_distance * zoom_factor)))
|
||||
for {
|
||||
if sep.x / zoom_factor.x >= min_line_distance {
|
||||
if sep.x / zoom_factor.x >= min_line_distance.x {
|
||||
break
|
||||
}
|
||||
if sep.x * 2.5 / zoom_factor.x >= min_line_distance {
|
||||
if sep.x * 2.5 / zoom_factor.x >= min_line_distance.x {
|
||||
sep *= 2.5
|
||||
break
|
||||
}
|
||||
if sep.x * 5.0 / zoom_factor.x >= min_line_distance {
|
||||
if sep.x * 5.0 / zoom_factor.x >= min_line_distance.x {
|
||||
sep *= 5.0
|
||||
break
|
||||
}
|
||||
|
|
@ -44,15 +44,13 @@ grid_world_to_grid_matrix :: proc(zoom, offset: v2) -> mat3 {
|
|||
linalg.matrix3_scale(v3{**zoom_amount, 1.0}))
|
||||
}
|
||||
|
||||
import "core:fmt"
|
||||
|
||||
draw_grid :: proc(grid: Grid, text_draw, text_clip: rect2) {
|
||||
world_to_grid_matrix := grid_world_to_grid_matrix(grid.zoom, grid.offset)
|
||||
grid_to_world_matrix := linalg.inverse(world_to_grid_matrix)
|
||||
grid_world_br := grid.world_position + grid.world_size
|
||||
grid_color := rl.Color{64, 64, 64, 255}
|
||||
|
||||
sep := grid_get_line_separation(grid.zoom, 32.0)
|
||||
sep := grid_get_line_separation(grid.zoom, grid.cell_size_px)
|
||||
tl := (v3{**grid.world_position, 1.0} * world_to_grid_matrix).xy
|
||||
tl = linalg.floor(tl / sep) * sep
|
||||
br := (v3{**grid_world_br, 1.0} * world_to_grid_matrix).xy
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue