diff options
Diffstat (limited to 'src/environment.h')
-rw-r--r-- | src/environment.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/environment.h b/src/environment.h index 1aaa5091f..e7b818dc9 100644 --- a/src/environment.h +++ b/src/environment.h @@ -204,6 +204,18 @@ private: }; /* + Operation mode for ServerEnvironment::clearObjects() +*/ +enum ClearObjectsMode { + // Load and go through every mapblock, clearing objects + CLEAR_OBJECTS_MODE_FULL, + + // Clear objects immediately in loaded mapblocks; + // clear objects in unloaded mapblocks only when the mapblocks are next activated. + CLEAR_OBJECTS_MODE_QUICK, +}; + +/* The server-side environment. This is not thread-safe. Server uses an environment mutex. @@ -319,8 +331,8 @@ public: // Find all active objects inside a radius around a point void getObjectsInsideRadius(std::vector<u16> &objects, v3f pos, float radius); - // Clear all objects, loading and going through every MapBlock - void clearAllObjects(); + // Clear objects, loading and going through every MapBlock + void clearObjects(ClearObjectsMode mode); // This makes stuff happen void step(f32 dtime); @@ -410,6 +422,10 @@ private: u32 m_game_time; // A helper variable for incrementing the latter float m_game_time_fraction_counter; + // Time of last clearObjects call (game time). + // When a mapblock older than this is loaded, its objects are cleared. + u32 m_last_clear_objects_time; + // Active block modifiers std::vector<ABMWithState> m_abms; // An interval for generally sending object positions and stuff float m_recommended_send_interval; |