mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Add ServerActiveObject::removingFromEnvironment()
This commit is contained in:
		@@ -741,8 +741,12 @@ void ServerEnvironment::clearAllObjects()
 | 
			
		||||
			obj->m_removed = true;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Tell the object about removal
 | 
			
		||||
		obj->removingFromEnvironment();
 | 
			
		||||
		// Deregister in scripting api
 | 
			
		||||
		scriptapi_rm_object_reference(m_lua, obj);
 | 
			
		||||
 | 
			
		||||
		// Delete active object
 | 
			
		||||
		delete obj;
 | 
			
		||||
		// Id to be removed from m_active_objects
 | 
			
		||||
@@ -1395,6 +1399,8 @@ void ServerEnvironment::removeRemovedObjects()
 | 
			
		||||
		if(obj->m_known_by_count > 0)
 | 
			
		||||
			continue;
 | 
			
		||||
		
 | 
			
		||||
		// Tell the object about removal
 | 
			
		||||
		obj->removingFromEnvironment();
 | 
			
		||||
		// Deregister in scripting api
 | 
			
		||||
		scriptapi_rm_object_reference(m_lua, obj);
 | 
			
		||||
 | 
			
		||||
@@ -1680,6 +1686,8 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
 | 
			
		||||
				<<"object id="<<id<<" is not known by clients"
 | 
			
		||||
				<<"; deleting"<<std::endl;
 | 
			
		||||
 | 
			
		||||
		// Tell the object about removal
 | 
			
		||||
		obj->removingFromEnvironment();
 | 
			
		||||
		// Deregister in scripting api
 | 
			
		||||
		scriptapi_rm_object_reference(m_lua, obj);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,10 +37,6 @@ ServerActiveObject::~ServerActiveObject()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ServerActiveObject::addedToEnvironment()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ServerActiveObject* ServerActiveObject::create(u8 type,
 | 
			
		||||
		ServerEnvironment *env, u16 id, v3f pos,
 | 
			
		||||
		const std::string &data)
 | 
			
		||||
 
 | 
			
		||||
@@ -54,8 +54,10 @@ public:
 | 
			
		||||
	ServerActiveObject(ServerEnvironment *env, v3f pos);
 | 
			
		||||
	virtual ~ServerActiveObject();
 | 
			
		||||
 | 
			
		||||
	// Call after id has been set and has been inserted in environment
 | 
			
		||||
	virtual void addedToEnvironment();
 | 
			
		||||
	// Called after id has been set and has been inserted in environment
 | 
			
		||||
	virtual void addedToEnvironment(){};
 | 
			
		||||
	// Called before removing from environment
 | 
			
		||||
	virtual void removingFromEnvironment(){};
 | 
			
		||||
	
 | 
			
		||||
	// Create a certain type of ServerActiveObject
 | 
			
		||||
	static ServerActiveObject* create(u8 type,
 | 
			
		||||
@@ -111,6 +113,11 @@ public:
 | 
			
		||||
		the data is the static form)
 | 
			
		||||
	*/
 | 
			
		||||
	virtual std::string getStaticData(){return "";}
 | 
			
		||||
	/*
 | 
			
		||||
		Return false in here to never save and instead remove object
 | 
			
		||||
		on unload. getStaticData() will not be called in that case.
 | 
			
		||||
	*/
 | 
			
		||||
	virtual bool isStaticAllowed(){return true;}
 | 
			
		||||
	
 | 
			
		||||
	virtual void punch(ServerActiveObject *puncher){}
 | 
			
		||||
	virtual void rightClick(ServerActiveObject *clicker){}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user