mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-14 09:05:19 +02:00
Implement unloading of static_save=false objects according to existing docs (#10485)
This commit is contained in:
@@ -42,6 +42,7 @@ public:
|
||||
void step(float dtime, bool send_recommended);
|
||||
std::string getClientInitializationData(u16 protocol_version);
|
||||
bool isStaticAllowed() const { return m_prop.static_save; }
|
||||
bool shouldUnload() const { return true; }
|
||||
void getStaticData(std::string *result) const;
|
||||
u16 punch(v3f dir, const ToolCapabilities *toolcap = nullptr,
|
||||
ServerActiveObject *puncher = nullptr,
|
||||
|
@@ -83,6 +83,7 @@ public:
|
||||
void addedToEnvironment(u32 dtime_s);
|
||||
void removingFromEnvironment();
|
||||
bool isStaticAllowed() const { return false; }
|
||||
bool shouldUnload() const { return false; }
|
||||
std::string getClientInitializationData(u16 protocol_version);
|
||||
void getStaticData(std::string *result) const;
|
||||
void step(float dtime, bool send_recommended);
|
||||
|
@@ -125,6 +125,7 @@ public:
|
||||
assert(isStaticAllowed());
|
||||
*result = "";
|
||||
}
|
||||
|
||||
/*
|
||||
Return false in here to never save and instead remove object
|
||||
on unload. getStaticData() will not be called in that case.
|
||||
@@ -132,6 +133,14 @@ public:
|
||||
virtual bool isStaticAllowed() const
|
||||
{return true;}
|
||||
|
||||
/*
|
||||
Return false here to never unload the object.
|
||||
isStaticAllowed && shouldUnload -> unload when out of active block range
|
||||
!isStaticAllowed && shouldUnload -> unload when block is unloaded
|
||||
*/
|
||||
virtual bool shouldUnload() const
|
||||
{ return true; }
|
||||
|
||||
// Returns tool wear
|
||||
virtual u16 punch(v3f dir,
|
||||
const ToolCapabilities *toolcap = nullptr,
|
||||
|
Reference in New Issue
Block a user