Fix multiple point deletion

This commit is contained in:
sergeypdev 2025-01-03 23:22:51 +04:00
parent 64dbe0c5e4
commit 686d034b06

View File

@ -67,7 +67,7 @@ Editor_State :: struct {
g_mem: ^Game_Memory
world :: proc() -> ^World {
get_world :: proc() -> ^World {
return &g_mem.es.world
}
@ -156,8 +156,8 @@ is_point_selected :: proc() -> bool {
add_track_spline_point :: proc() {
forward := camera_rotation_matrix()[2]
append(&world().track.points, g_mem.player_pos + forward)
select_track_point(len(&world().track.points) - 1)
append(&get_world().track.points, g_mem.player_pos + forward)
select_track_point(len(&get_world().track.points) - 1)
}
get_movement_axes :: proc(
@ -218,9 +218,10 @@ update_editor :: proc() {
if is_point_selected() {
if rl.IsKeyPressed(.X) {
for k, v in es.point_selection {
assert(v)
ordered_remove(&world().track.points, k)
#reverse for _, i in get_world().track.points {
if i in es.point_selection {
ordered_remove(&get_world().track.points, i)
}
}
clear(&es.point_selection)
@ -294,7 +295,7 @@ update_editor :: proc() {
}
for k in es.point_selection {
world().track.points[k] += movement_world
get_world().track.points[k] += movement_world
}
}
}
@ -366,7 +367,7 @@ draw :: proc() {
rl.WHITE,
)
points := &world().track.points
points := &get_world().track.points
// road: rl.Mesh
// defer rl.UnloadMesh(road)
@ -437,12 +438,12 @@ draw :: proc() {
if g_mem.editor {
es := &g_mem.es
points := &world().track.points
points := &get_world().track.points
points_len := len(points)
selected_point := false
for i in 0 ..< points_len {
if spline_handle(world().track.points[i], camera, es.point_selection[i]) {
if spline_handle(get_world().track.points[i], camera, es.point_selection[i]) {
if !rl.IsKeyDown(.LEFT_CONTROL) {
clear(&g_mem.es.point_selection)
}
@ -535,7 +536,7 @@ game_init :: proc() {
@(export)
game_shutdown :: proc() {
assets.shutdown(&g_mem.assetman)
delete(world().track.points)
delete(get_world().track.points)
delete(g_mem.es.point_selection)
free(g_mem)
}