mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Revert "Detach the player from entities on death." (#5087)
This commit is contained in:
		@@ -203,16 +203,6 @@ void UnitSAO::getAttachment(int *parent_id, std::string *bone, v3f *position,
 | 
			
		||||
	*rotation = m_attachment_rotation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UnitSAO::detachFromParent()
 | 
			
		||||
{
 | 
			
		||||
	ServerActiveObject *parent = NULL;
 | 
			
		||||
	if (m_attachment_parent_id)
 | 
			
		||||
		parent = m_env->getActiveObject(m_attachment_parent_id);
 | 
			
		||||
	setAttachment(NULL, "", v3f(0, 0, 0), v3f(0, 0, 0));
 | 
			
		||||
	if (parent != NULL)
 | 
			
		||||
		parent->removeAttachmentChild(m_id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UnitSAO::addAttachmentChild(int child_id)
 | 
			
		||||
{
 | 
			
		||||
	m_attachment_child_ids.insert(child_id);
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,6 @@ public:
 | 
			
		||||
	void setBonePosition(const std::string &bone, v3f position, v3f rotation);
 | 
			
		||||
	void getBonePosition(const std::string &bone, v3f *position, v3f *rotation);
 | 
			
		||||
	void setAttachment(int parent_id, const std::string &bone, v3f position, v3f rotation);
 | 
			
		||||
	void detachFromParent();
 | 
			
		||||
	void getAttachment(int *parent_id, std::string *bone, v3f *position, v3f *rotation);
 | 
			
		||||
	void addAttachmentChild(int child_id);
 | 
			
		||||
	void removeAttachmentChild(int child_id);
 | 
			
		||||
 
 | 
			
		||||
@@ -710,7 +710,20 @@ int ObjectRef::l_set_detach(lua_State *L)
 | 
			
		||||
	ServerActiveObject *co = getobject(ref);
 | 
			
		||||
	if (co == NULL)
 | 
			
		||||
		return 0;
 | 
			
		||||
	co->detachFromParent();
 | 
			
		||||
 | 
			
		||||
	int parent_id = 0;
 | 
			
		||||
	std::string bone = "";
 | 
			
		||||
	v3f position;
 | 
			
		||||
	v3f rotation;
 | 
			
		||||
	co->getAttachment(&parent_id, &bone, &position, &rotation);
 | 
			
		||||
	ServerActiveObject *parent = NULL;
 | 
			
		||||
	if (parent_id)
 | 
			
		||||
		parent = env->getActiveObject(parent_id);
 | 
			
		||||
 | 
			
		||||
	// Do it
 | 
			
		||||
	co->setAttachment(0, "", v3f(0,0,0), v3f(0,0,0));
 | 
			
		||||
	if (parent != NULL)
 | 
			
		||||
		parent->removeAttachmentChild(co->getId());
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2560,8 +2560,6 @@ void Server::DiePlayer(u16 peer_id)
 | 
			
		||||
	if (!playersao)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	playersao->detachFromParent();
 | 
			
		||||
 | 
			
		||||
	infostream << "Server::DiePlayer(): Player "
 | 
			
		||||
			<< playersao->getPlayer()->getName()
 | 
			
		||||
			<< " dies" << std::endl;
 | 
			
		||||
 
 | 
			
		||||
@@ -166,8 +166,6 @@ public:
 | 
			
		||||
	{}
 | 
			
		||||
	virtual void removeAttachmentChild(int child_id)
 | 
			
		||||
	{}
 | 
			
		||||
	virtual void detachFromParent()
 | 
			
		||||
	{}
 | 
			
		||||
	virtual const UNORDERED_SET<int> &getAttachmentChildIds()
 | 
			
		||||
	{ static const UNORDERED_SET<int> rv; return rv; }
 | 
			
		||||
	virtual ObjectProperties* accessObjectProperties()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user