Fixed a lot of bad math causing issues in negative chunks
This commit is contained in:
@@ -5,6 +5,7 @@ import "core:fmt"
|
||||
import "core:os"
|
||||
import "core:path/filepath"
|
||||
import "core:mem"
|
||||
import "core:math"
|
||||
|
||||
CELL_SIZE :: 16
|
||||
CHUNK_SIZE :: 32
|
||||
@@ -173,24 +174,37 @@ get_chunk_from_world_pos :: proc(w:^World, pos:rl.Vector2) -> ^Chunk {
|
||||
}
|
||||
|
||||
world_pos_to_chunk_pos :: proc(pos:rl.Vector2) -> Vec2i {
|
||||
chunk_pos := vec2_to_vec2i({pos.x / CHUNK_SIZE, pos.y / CHUNK_SIZE})
|
||||
return chunk_pos
|
||||
|
||||
x := int(math.floor(pos.x / CHUNK_SIZE))
|
||||
y := int(math.floor(pos.y / CHUNK_SIZE))
|
||||
return Vec2i{x,y}
|
||||
}
|
||||
|
||||
get_local_chunk_pos :: proc(pos:Vec2i) -> Vec2i {
|
||||
return Vec2i {
|
||||
(pos.x % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE,
|
||||
(pos.y % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE,
|
||||
}
|
||||
x := (pos.x % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE
|
||||
y := (pos.y % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE
|
||||
|
||||
return Vec2i{x,y}
|
||||
}
|
||||
|
||||
get_world_tile :: proc(w:^World, pos:Vec2i) -> ^Tile {
|
||||
chunk_pos := world_pos_to_chunk_pos(vec2i_to_vec2(pos))
|
||||
local_pos := get_local_chunk_pos(pos)
|
||||
chunk_x := int(math.floor(f32(pos.x) / f32(CHUNK_SIZE)))
|
||||
chunk_y := int(math.floor(f32(pos.y) / f32(CHUNK_SIZE)))
|
||||
chunk_pos := Vec2i{chunk_x, chunk_y}
|
||||
|
||||
local_x := (pos.x % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE
|
||||
local_y := (pos.y % CHUNK_SIZE + CHUNK_SIZE) % CHUNK_SIZE
|
||||
local_pos := Vec2i{local_x, local_y}
|
||||
|
||||
chunk := get_chunk(w, chunk_pos)
|
||||
|
||||
return get_chunk_tile(chunk, local_pos)
|
||||
|
||||
// chunk_pos := world_pos_to_chunk_pos(vec2i_to_vec2(pos))
|
||||
// local_pos := get_local_chunk_pos(pos)
|
||||
//
|
||||
// chunk := get_chunk(w, chunk_pos)
|
||||
|
||||
// return get_chunk_tile(chunk, local_pos)
|
||||
}
|
||||
|
||||
get_chunk_tile :: proc(c:^Chunk, pos:Vec2i) -> ^Tile {
|
||||
|
||||
Reference in New Issue
Block a user