aboutsummaryrefslogtreecommitdiff
path: root/src/platform.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/platform.odin
parentf45cafdf46455768985e3d3a118bbca1839e937f (diff)
use odin's new handle maps rather than my own
Diffstat (limited to 'src/platform.odin')
-rw-r--r--src/platform.odin21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/platform.odin b/src/platform.odin
index b12551f..e495b36 100644
--- a/src/platform.odin
+++ b/src/platform.odin
@@ -2,32 +2,35 @@ package demonchime
import "fw"
import "phys"
+import hm "core:container/handle_map"
Platform :: struct {
- handle: Entity_Handle,
+ handle: Handle,
body: phys.Body_Handle,
}
-make_platform :: proc(rect: Rect) -> (Entity_Handle, ^Platform) {
- handle := phys.make_body(transmute(phys.Rect)rect, layers = {.Hard})
- return make_entity(&state.platform_list, Platform{body = handle})
+make_platform :: proc(rect: Rect) -> (Handle, ^Platform) {
+ phys_handle := phys.make_body(transmute(phys.Rect)rect, layers = {.Hard})
+ handle := hm.add(&state.platform_list, Platform{body = phys_handle})
+ return handle, hm.get(&state.platform_list, handle)
}
draw_platforms :: proc() {
- iter := iter_entity_list(state.platform_list)
+ iter := hm.iterator_make(&state.platform_list)
color := Color{1, 0, 0, 0.25}
- for p in entity_list_iter(&iter) {
+ for p, _ in hm.iterate(&iter) {
rect := phys.get_rect(p.body)
fw.draw_rect(rect.start, rect.size, color = color)
}
}
clear_platforms :: proc() {
- iter := iter_entity_list(state.platform_list)
- for p in entity_list_iter(&iter) {
+ iter := hm.iterator_make(&state.platform_list)
+ for p, _ in hm.iterate(&iter) {
phys.remove_body(p.body)
- delete_entity(&state.platform_list, p.handle)
}
+
+ hm.clear(&state.platform_list)
}
setup_room_collisions :: proc() {