diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2024-06-08 02:27:41 +0200 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-06-08 02:27:41 +0200 |
| commit | 6945fbda28d0111f846458f4c4d63beb14d02f8d (patch) | |
| tree | 472084a7b1fd4f2eefb41f18d0ab913072c32d53 /src/chunk.cpp | |
| parent | 6cb94b6c8c0bcd8812605044bb56c4af2b6abe17 (diff) | |
wa
Diffstat (limited to 'src/chunk.cpp')
| -rw-r--r-- | src/chunk.cpp | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/src/chunk.cpp b/src/chunk.cpp index bf305fc5..2ecf668b 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -146,7 +146,7 @@ void chunk::add_object_pre(const std::shared_ptr<object>& e) if (!_pass_modified) [[likely]] { if (!dyn || upd) - _add_bbox_static_(); + _add_bbox_static_(e); else if (bbox bb; _bbox_for_scenery(*e, bb)) _add_bbox_dynamic(bb); } @@ -186,23 +186,22 @@ void chunk::remove_object(size_t i) fm_assert(_objects_sorted); fm_debug_assert(i < _objects.size()); + const auto& eʹ = _objects[i]; + auto& e = *eʹ; + fm_assert(e.c == this); + fm_assert(!e.gone); + + const auto dyn = e.is_dynamic(), upd = e.updates_passability(); + if (!dyn) + mark_scenery_modified(); + + if (!_pass_modified) [[likely]] { - const auto& e = *_objects[i]; - fm_assert(e.c == this); - fm_assert(!e.gone); - - const auto dyn = e.is_dynamic(), upd = e.updates_passability(); - if (!dyn) - mark_scenery_modified(); - if (!_pass_modified) [[likely]] - { - if (!dyn || upd) - _remove_bbox_static_(); - else if (bbox bb; _bbox_for_scenery(e, bb)) - _remove_bbox_dynamic(bb); - } + if (!dyn || upd) + _remove_bbox_static_(eʹ); + else if (bbox bb; _bbox_for_scenery(e, bb)) + _remove_bbox_dynamic(bb); } - arrayRemove(_objects, i); } |
