diff options
| author | iamcheeseman <[hidden email]> | 2026-02-27 23:23:16 -0500 |
|---|---|---|
| committer | iamcheeseman <[hidden email]> | 2026-02-27 23:23:16 -0500 |
| commit | 97e7909e4d730524b3ea319fa86520ed3bb3df5c (patch) | |
| tree | a95a7fc3fe27e3391814b4c06ae04affdb2818ed /src/platform.odin | |
| parent | f45cafdf46455768985e3d3a118bbca1839e937f (diff) | |
use odin's new handle maps rather than my own
Diffstat (limited to 'src/platform.odin')
| -rw-r--r-- | src/platform.odin | 21 |
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() { |
