]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/serverenvironment.h
lua-api: fix get/set_pitch
[dragonfireclient.git] / src / serverenvironment.h
index 3c7b7d059577490d6f1be64f2348754bf2b899c5..af742e290acc557f087e52aedbb16a252e36d23d 100644 (file)
@@ -289,9 +289,9 @@ class ServerEnvironment : public Environment
 
        /*
                Get the next message emitted by some active object.
-               Returns a message with id=0 if no messages are available.
+               Returns false if no messages are available, true otherwise.
        */
-       ActiveObjectMessage getActiveObjectMessage();
+       bool getActiveObjectMessage(ActiveObjectMessage *dest);
 
        virtual void getSelectedActiveObjects(
                const core::line3d<f32> &shootline_on_map,
@@ -323,9 +323,10 @@ class ServerEnvironment : public Environment
        bool swapNode(v3s16 p, const MapNode &n);
 
        // Find all active objects inside a radius around a point
-       void getObjectsInsideRadius(std::vector<u16> &objects, const v3f &pos, float radius)
+       void getObjectsInsideRadius(std::vector<ServerActiveObject *> &objects, const v3f &pos, float radius,
+                       std::function<bool(ServerActiveObject *obj)> include_obj_cb)
        {
-               return m_ao_manager.getObjectsInsideRadius(pos, radius, objects);
+               return m_ao_manager.getObjectsInsideRadius(pos, radius, objects, include_obj_cb);
        }
 
        // Clear objects, loading and going through every MapBlock
@@ -334,16 +335,6 @@ class ServerEnvironment : public Environment
        // This makes stuff happen
        void step(f32 dtime);
 
-       /*!
-        * Returns false if the given line intersects with a
-        * non-air node, true otherwise.
-        * \param pos1 start of the line
-        * \param pos2 end of the line
-        * \param p output, position of the first non-air node
-        * the line intersects
-        */
-       bool line_of_sight(v3f pos1, v3f pos2, v3s16 *p = NULL);
-
        u32 getGameTime() const { return m_game_time; }
 
        void reportMaxLagEstimate(float f) { m_max_lag_estimate = f; }
@@ -448,6 +439,8 @@ class ServerEnvironment : public Environment
        IntervalLimiter m_active_blocks_management_interval;
        IntervalLimiter m_active_block_modifier_interval;
        IntervalLimiter m_active_blocks_nodemetadata_interval;
+       // Whether the variables below have been read from file yet
+       bool m_meta_loaded = false;
        // Time from the beginning of the game in seconds.
        // Incremented in step().
        u32 m_game_time = 0;
@@ -478,4 +471,6 @@ class ServerEnvironment : public Environment
        IntervalLimiter m_particle_management_interval;
        std::unordered_map<u32, float> m_particle_spawners;
        std::unordered_map<u32, u16> m_particle_spawner_attachments;
+
+       ServerActiveObject* createSAO(ActiveObjectType type, v3f pos, const std::string &data);
 };