diff options
Diffstat (limited to 'src/rope.odin')
| -rw-r--r-- | src/rope.odin | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/rope.odin b/src/rope.odin index 7e2cbe1..6950555 100644 --- a/src/rope.odin +++ b/src/rope.odin @@ -3,25 +3,26 @@ package demonchime import "core:log" import "core:math" import "core:math/linalg" +import hm "core:container/handle_map" import "fw" Rope :: struct { - handle: Entity_Handle, + handle: Handle, hanging_id: Image_Id, verlet: Verlet_Rope, } step_ropes :: proc(dt: f32) { - iter := iter_entity_list(state.rope_list) - for rope in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.rope_list) + for rope, _ in hm.iterate(&iter) { update_verlet_rope(&rope.verlet) } } draw_ropes :: proc() { - iter := iter_entity_list(state.rope_list) - for rope in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.rope_list) + for rope, _ in hm.iterate(&iter) { for i in 0..<len(rope.verlet.nodes) - 1 { cur := rope.verlet.nodes[i] nex := rope.verlet.nodes[i + 1] @@ -49,11 +50,12 @@ draw_ropes :: proc() { } clear_ropes :: proc() { - iter := iter_entity_list(state.rope_list) - for rope in entity_list_iter(&iter) { + iter := hm.iterator_make(&state.rope_list) + for rope, _ in hm.iterate(&iter) { delete(rope.verlet.nodes) - delete_entity(&state.rope_list, rope.handle) } + + hm.clear(&state.rope_list) } on_room_open_rope :: proc(room_id: Room_Id) { @@ -87,7 +89,7 @@ object_spawner_rope :: proc(obj: Object_Resource) { update_verlet_rope(&verlet) } - make_entity(&state.rope_list, Rope{ + handle := hm.add(&state.rope_list, Rope{ hanging_id = image_id, verlet = verlet, }) |
