aboutsummaryrefslogtreecommitdiff
path: root/src/phys
diff options
context:
space:
mode:
Diffstat (limited to 'src/phys')
-rw-r--r--src/phys/world.odin11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/phys/world.odin b/src/phys/world.odin
index 3dbd052..0f1451c 100644
--- a/src/phys/world.odin
+++ b/src/phys/world.odin
@@ -84,13 +84,10 @@ _remove_from_bins :: proc(b: Body) {
assert(len(bin) > 0)
assert(bin[b.bin_idx] == b.handle)
- last := pop(bin)
- if last != b.handle {
- // log.debug(last, b.handle)
- bin[b.bin_idx] = last
-
- last_body := _get_body(last)
- last_body.bin_idx = b.bin_idx
+ unordered_remove(bin, b.bin_idx)
+ if int(b.bin_idx) != len(bin) {
+ swapped_body := _get_body(bin[b.bin_idx])
+ swapped_body.bin_idx = b.bin_idx
}
}