+ /*
+ Node metadata
+ These are basically coordinate wrappers to MapBlock
+ */
+
+ std::vector<v3s16> findNodesWithMetadata(v3s16 p1, v3s16 p2);
+ NodeMetadata *getNodeMetadata(v3s16 p);
+
+ /**
+ * Sets metadata for a node.
+ * This method sets the metadata for a given node.
+ * On success, it returns @c true and the object pointed to
+ * by @p meta is then managed by the system and should
+ * not be deleted by the caller.
+ *
+ * In case of failure, the method returns @c false and the
+ * caller is still responsible for deleting the object!
+ *
+ * @param p node coordinates
+ * @param meta pointer to @c NodeMetadata object
+ * @return @c true on success, false on failure
+ */
+ bool setNodeMetadata(v3s16 p, NodeMetadata *meta);
+ void removeNodeMetadata(v3s16 p);
+
+ /*
+ Node Timers
+ These are basically coordinate wrappers to MapBlock
+ */
+
+ NodeTimer getNodeTimer(v3s16 p);
+ void setNodeTimer(const NodeTimer &t);
+ void removeNodeTimer(v3s16 p);
+
+ /*
+ Variables
+ */
+
+ void transforming_liquid_add(v3s16 p);
+
+ bool isBlockOccluded(MapBlock *block, v3s16 cam_pos_nodes);
+protected:
+ friend class LuaVoxelManip;
+
+ IGameDef *m_gamedef;
+
+ std::set<MapEventReceiver*> m_event_receivers;
+
+ std::map<v2s16, MapSector*> m_sectors;
+
+ // Be sure to set this to NULL when the cached sector is deleted
+ MapSector *m_sector_cache = nullptr;
+ v2s16 m_sector_cache_p;
+
+ // Queued transforming water nodes
+ UniqueQueue<v3s16> m_transforming_liquid;
+
+ // This stores the properties of the nodes on the map.
+ const NodeDefManager *m_nodedef;
+
+ bool determineAdditionalOcclusionCheck(const v3s16 &pos_camera,
+ const core::aabbox3d<s16> &block_bounds, v3s16 &check);
+ bool isOccluded(const v3s16 &pos_camera, const v3s16 &pos_target,
+ float step, float stepfac, float start_offset, float end_offset,
+ u32 needed_count);
+
+private:
+ f32 m_transforming_liquid_loop_count_multiplier = 1.0f;
+ u32 m_unprocessed_count = 0;
+ u64 m_inc_trending_up_start_time = 0; // milliseconds
+ bool m_queue_size_timer_started = false;