]> git.lizzy.rs Git - minetest.git/blobdiff - src/map.h
Collision detection tweak #2 (#9365)
[minetest.git] / src / map.h
index 251ac297fa8e5f3304b5d2cd8949611d34f46bc2..da55fb432234f42b119262ddaa3d6e35dc3e81df 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -79,18 +79,7 @@ struct MapEditEvent
 
        MapEditEvent() = default;
 
-       MapEditEvent * clone()
-       {
-               MapEditEvent *event = new MapEditEvent();
-               event->type = type;
-               event->p = p;
-               event->n = n;
-               event->modified_blocks = modified_blocks;
-               event->is_private_change = is_private_change;
-               return event;
-       }
-
-       VoxelArea getArea()
+       VoxelArea getArea() const
        {
                switch(type){
                case MEET_ADDNODE:
@@ -125,7 +114,7 @@ class MapEventReceiver
 {
 public:
        // event shall be deleted by caller after the call.
-       virtual void onMapEditEvent(MapEditEvent *event) = 0;
+       virtual void onMapEditEvent(const MapEditEvent &event) = 0;
 };
 
 class Map /*: public NodeContainer*/
@@ -152,13 +141,11 @@ class Map /*: public NodeContainer*/
        void addEventReceiver(MapEventReceiver *event_receiver);
        void removeEventReceiver(MapEventReceiver *event_receiver);
        // event shall be deleted by caller after the call.
-       void dispatchEvent(MapEditEvent *event);
+       void dispatchEvent(const MapEditEvent &event);
 
        // On failure returns NULL
-       MapSector * getSectorNoGenerateNoExNoLock(v2s16 p2d);
+       MapSector * getSectorNoGenerateNoLock(v2s16 p2d);
        // Same as the above (there exists no lock anymore)
-       MapSector * getSectorNoGenerateNoEx(v2s16 p2d);
-       // On failure throws InvalidPositionException
        MapSector * getSectorNoGenerate(v2s16 p2d);
        // Gets an existing sector or creates an empty one
        //MapSector * getSectorCreate(v2s16 p2d);
@@ -191,7 +178,7 @@ class Map /*: public NodeContainer*/
        // Returns a CONTENT_IGNORE node if not found
        // If is_valid_position is not NULL then this will be set to true if the
        // position is valid, otherwise false
-       MapNode getNodeNoEx(v3s16 p, bool *is_valid_position = NULL);
+       MapNode getNode(v3s16 p, bool *is_valid_position = NULL);
 
        /*
                These handle lighting but not faces.
@@ -312,8 +299,11 @@ class Map /*: public NodeContainer*/
        // This stores the properties of the nodes on the map.
        const NodeDefManager *m_nodedef;
 
-       bool isOccluded(v3s16 p0, v3s16 p1, float step, float stepfac,
-                       float start_off, float end_off, u32 needed_count);
+       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;
@@ -390,21 +380,12 @@ class ServerMap : public Map
                names when saving
        */
        void createDirs(const std::string &path);
-       // returns something like "map/sectors/xxxxxxxx"
-       std::string getSectorDir(v2s16 pos, int layout = 2);
-       // dirname: final directory name
-       v2s16 getSectorPos(const std::string &dirname);
-       v3s16 getBlockPos(const std::string &sectordir, const std::string &blockfile);
-       static std::string getBlockFilename(v3s16 p);
 
        /*
                Database functions
        */
        static MapDatabase *createDatabase(const std::string &name, const std::string &savedir, Settings &conf);
 
-       // Returns true if the database file does not exist
-       bool loadFromFolders();
-
        // Call these before and after saving of blocks
        void beginSave();
        void endSave();
@@ -417,9 +398,6 @@ class ServerMap : public Map
 
        bool saveBlock(MapBlock *block);
        static bool saveBlock(MapBlock *block, MapDatabase *db);
-       // This will generate a sector with getSector if not found.
-       void loadBlock(const std::string &sectordir, const std::string &blockfile,
-                       MapSector *sector, bool save_after_load=false);
        MapBlock* loadBlock(v3s16 p);
        // Database version
        void loadBlock(std::string *blob, v3s16 p3d, MapSector *sector, bool save_after_load=false);