X-Git-Url: https://git.librecmc.org/?p=oweals%2Fminetest.git;a=blobdiff_plain;f=src%2Fclient%2Fclientenvironment.cpp;h=5eb0333029fd11743d150a8c6997a22b5d481324;hp=e1b20ec8498397969b3837a462d210bb63ef4f72;hb=81c2370c8b1a66a279a5ff450c78caf5dfef77bf;hpb=251038e136f22f29999bd938e6c9e9f1a5269243 diff --git a/src/client/clientenvironment.cpp b/src/client/clientenvironment.cpp index e1b20ec84..5eb033302 100644 --- a/src/client/clientenvironment.cpp +++ b/src/client/clientenvironment.cpp @@ -402,6 +402,23 @@ void ClientEnvironment::addActiveObject(u16 id, u8 type, } } + +void ClientEnvironment::removeActiveObject(u16 id) +{ + // Get current attachment childs to detach them visually + std::unordered_set attachment_childs; + if (auto *obj = getActiveObject(id)) + attachment_childs = obj->getAttachmentChildIds(); + + m_ao_manager.removeObject(id); + + // Perform a proper detach in Irrlicht + for (auto c_id : attachment_childs) { + if (ClientActiveObject *child = getActiveObject(c_id)) + child->updateAttachments(); + } +} + void ClientEnvironment::processActiveObjectMessage(u16 id, const std::string &data) { ClientActiveObject *obj = getActiveObject(id);