X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcontent_cao.cpp;h=02622f5b48b113754be2bb9225fe12bb934c3968;hb=fa427d641b687dd8585adced708510b94588cf51;hp=a05936d2c63bdf76bf8323d8d795a2192130c323;hpb=1367895ae226b4bbdc152274329c789cb5738022;p=oweals%2Fminetest.git diff --git a/src/content_cao.cpp b/src/content_cao.cpp index a05936d2c..02622f5b4 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -670,6 +670,7 @@ GenericCAO::~GenericCAO() { m_env->removePlayerName(m_name.c_str()); } + removeFromScene(true); } core::aabbox3d* GenericCAO::getSelectionBox() @@ -735,7 +736,8 @@ ClientActiveObject* GenericCAO::getParent() void GenericCAO::removeFromScene(bool permanent) { - if(permanent) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals) + // Should be true when removing the object permanently and false when refreshing (eg: updating visuals) + if((m_env != NULL) && (permanent)) { for(std::vector::iterator ci = m_children.begin(); ci != m_children.end(); ci++) @@ -746,6 +748,12 @@ void GenericCAO::removeFromScene(bool permanent) } m_env->m_attachements[getId()] = 0; + + LocalPlayer* player = m_env->getLocalPlayer(); + if (this == player->parent) { + player->parent = NULL; + player->isAttached = false; + } } if(m_meshnode)