Fix multiple point deletion
This commit is contained in:
parent
64dbe0c5e4
commit
686d034b06
@ -67,7 +67,7 @@ Editor_State :: struct {
|
|||||||
|
|
||||||
g_mem: ^Game_Memory
|
g_mem: ^Game_Memory
|
||||||
|
|
||||||
world :: proc() -> ^World {
|
get_world :: proc() -> ^World {
|
||||||
return &g_mem.es.world
|
return &g_mem.es.world
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,8 +156,8 @@ is_point_selected :: proc() -> bool {
|
|||||||
add_track_spline_point :: proc() {
|
add_track_spline_point :: proc() {
|
||||||
forward := camera_rotation_matrix()[2]
|
forward := camera_rotation_matrix()[2]
|
||||||
|
|
||||||
append(&world().track.points, g_mem.player_pos + forward)
|
append(&get_world().track.points, g_mem.player_pos + forward)
|
||||||
select_track_point(len(&world().track.points) - 1)
|
select_track_point(len(&get_world().track.points) - 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
get_movement_axes :: proc(
|
get_movement_axes :: proc(
|
||||||
@ -218,9 +218,10 @@ update_editor :: proc() {
|
|||||||
|
|
||||||
if is_point_selected() {
|
if is_point_selected() {
|
||||||
if rl.IsKeyPressed(.X) {
|
if rl.IsKeyPressed(.X) {
|
||||||
for k, v in es.point_selection {
|
#reverse for _, i in get_world().track.points {
|
||||||
assert(v)
|
if i in es.point_selection {
|
||||||
ordered_remove(&world().track.points, k)
|
ordered_remove(&get_world().track.points, i)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clear(&es.point_selection)
|
clear(&es.point_selection)
|
||||||
@ -294,7 +295,7 @@ update_editor :: proc() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for k in es.point_selection {
|
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,
|
rl.WHITE,
|
||||||
)
|
)
|
||||||
|
|
||||||
points := &world().track.points
|
points := &get_world().track.points
|
||||||
|
|
||||||
// road: rl.Mesh
|
// road: rl.Mesh
|
||||||
// defer rl.UnloadMesh(road)
|
// defer rl.UnloadMesh(road)
|
||||||
@ -437,12 +438,12 @@ draw :: proc() {
|
|||||||
if g_mem.editor {
|
if g_mem.editor {
|
||||||
es := &g_mem.es
|
es := &g_mem.es
|
||||||
|
|
||||||
points := &world().track.points
|
points := &get_world().track.points
|
||||||
points_len := len(points)
|
points_len := len(points)
|
||||||
|
|
||||||
selected_point := false
|
selected_point := false
|
||||||
for i in 0 ..< points_len {
|
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) {
|
if !rl.IsKeyDown(.LEFT_CONTROL) {
|
||||||
clear(&g_mem.es.point_selection)
|
clear(&g_mem.es.point_selection)
|
||||||
}
|
}
|
||||||
@ -535,7 +536,7 @@ game_init :: proc() {
|
|||||||
@(export)
|
@(export)
|
||||||
game_shutdown :: proc() {
|
game_shutdown :: proc() {
|
||||||
assets.shutdown(&g_mem.assetman)
|
assets.shutdown(&g_mem.assetman)
|
||||||
delete(world().track.points)
|
delete(get_world().track.points)
|
||||||
delete(g_mem.es.point_selection)
|
delete(g_mem.es.point_selection)
|
||||||
free(g_mem)
|
free(g_mem)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user