Fix multiple point deletion
This commit is contained in:
parent
64dbe0c5e4
commit
686d034b06
@ -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)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user