aboutsummaryrefslogtreecommitdiff
path: root/src/rope.odin
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-02-27 23:23:16 -0500
committeriamcheeseman <[hidden email]>2026-02-27 23:23:16 -0500
commit97e7909e4d730524b3ea319fa86520ed3bb3df5c (patch)
treea95a7fc3fe27e3391814b4c06ae04affdb2818ed /src/rope.odin
parentf45cafdf46455768985e3d3a118bbca1839e937f (diff)
use odin's new handle maps rather than my own
Diffstat (limited to 'src/rope.odin')
-rw-r--r--src/rope.odin20
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,
})