Run detach callbacks on player leave

Correct docs regarding non-nil detaching children
This commit is contained in:
SmallJoker 2018-05-12 10:55:43 +02:00
parent a292d19fd0
commit 9dd432c29f
2 changed files with 5 additions and 2 deletions

@ -4869,9 +4869,9 @@ Registered entities
* `killer`: an `ObjectRef` (can be `nil`) * `killer`: an `ObjectRef` (can be `nil`)
* `on_rightclick(self, clicker)` * `on_rightclick(self, clicker)`
* `on_attach_child(self, child)` * `on_attach_child(self, child)`
* `child`: an `ObjectRef` (can be `nil`) of the child that attaches * `child`: an `ObjectRef` of the child that attaches
* `on_detach_child(self, child)` * `on_detach_child(self, child)`
* `child`: an `ObjectRef` (can be `nil`) of the child that detaches * `child`: an `ObjectRef` of the child that detaches
* `on_detach(self, parent)` * `on_detach(self, parent)`
* `parent`: an `ObjectRef` (can be `nil`) from where it got detached * `parent`: an `ObjectRef` (can be `nil`) from where it got detached
* This happens before the parent object is removed from the world * This happens before the parent object is removed from the world

@ -2632,6 +2632,9 @@ void Server::DeleteClient(session_t peer_id, ClientDeletionReason reason)
PlayerSAO *playersao = player->getPlayerSAO(); PlayerSAO *playersao = player->getPlayerSAO();
assert(playersao); assert(playersao);
playersao->clearChildAttachments();
playersao->clearParentAttachment();
// inform connected clients // inform connected clients
NetworkPacket notice(TOCLIENT_UPDATE_PLAYER_LIST, 0, PEER_ID_INEXISTENT); NetworkPacket notice(TOCLIENT_UPDATE_PLAYER_LIST, 0, PEER_ID_INEXISTENT);
// (u16) 1 + std::string represents a vector serialization representation // (u16) 1 + std::string represents a vector serialization representation