summaryrefslogtreecommitdiffhomepage
path: root/src/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object.cpp')
-rw-r--r--src/object.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/object.cpp b/src/object.cpp
index 49f56227..200179e5 100644
--- a/src/object.cpp
+++ b/src/object.cpp
@@ -228,7 +228,7 @@ void object::teleport_to(size_t& i, global_coords coord_, Vector2b offset_, rota
if (coord_ == coord && offset_ == offset)
return;
- const bool dynamic = is_dynamic(), upd = updates_passability();
+ const bool dyn = is_dynamic(), upd = updates_passability();
chunk::bbox bb0, bb1;
const auto bb_offset = rotate_point(bbox_offset, r, new_r);
@@ -238,7 +238,7 @@ void object::teleport_to(size_t& i, global_coords coord_, Vector2b offset_, rota
if (coord_.chunk3() == coord.chunk3())
{
- c->_replace_bbox_(bb0, bb1, b0, b1, upd, dynamic);
+ c->_replace_bbox_(eʹ, bb0, bb1, b0, b1, upd, dyn);
non_const(coord) = coord_;
set_bbox_(offset_, bb_offset, bb_size, pass);
non_const(r) = new_r;
@@ -343,7 +343,12 @@ void object::set_bbox(Vector2b offset_, Vector2b bb_offset_, Vector2ub bb_size_,
const bool b0 = c->_bbox_for_scenery(*this, bb0);
set_bbox_(offset_, bb_offset_, bb_size_, pass);
const bool b = c->_bbox_for_scenery(*this, bb);
- c->_replace_bbox_(bb0, bb, b0, b, upd, dyn);
+ if (upd)
+ maybe_mark_neighbor_chunks_modified();
+ else if (!dyn)
+ c->mark_passability_modified();
+ else
+ c->_replace_bbox_dynamic(bb0, bb, b0, b);
}
bool object::can_activate(size_t) const { return false; }
@@ -356,6 +361,7 @@ object_type object::type_of() const noexcept { return type(); }
bool object::is_dynamic() const { return atlas->info().fps > 0; }
bool object::updates_passability() const { return false; }
+void object::maybe_mark_neighbor_chunks_modified() {}
void object::init_script(const std::shared_ptr<object>&) {}
void object::destroy_script_pre(const std::shared_ptr<object>&, script_destroy_reason) {}