diff options
Diffstat (limited to 'src/phys')
| -rw-r--r-- | src/phys/world.odin | 11 |
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 } } |
