]> git.lizzy.rs Git - minetest.git/blobdiff - src/mapgen.h
fix screen flickering black when rendering to texture
[minetest.git] / src / mapgen.h
index 5aa0282faecda91fd62ce072277fcf6fe873bfda..e2f20ecafdb92544390b8bd2a3ad66b6a27aa660 100644 (file)
@@ -3,16 +3,16 @@ Minetest-c55
 Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
 
 This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
 (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Lesser General Public License for more details.
 
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
@@ -20,10 +20,13 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef MAPGEN_HEADER
 #define MAPGEN_HEADER
 
-#include "common_irrlicht.h"
+#include "irrlichttypes_extrabloated.h"
+#include "util/container.h" // UniqueQueue
 
 struct BlockMakeData;
 class MapBlock;
+class ManualMapVoxelManipulator;
+class INodeDefManager;
 
 namespace mapgen
 {
@@ -33,18 +36,37 @@ namespace mapgen
        // Find out if block is completely underground
        bool block_is_underground(u64 seed, v3s16 blockpos);
 
+       // Get a pseudorandom seed for a position on the map
+       u32 get_blockseed(u64 seed, v3s16 p);
+
        // Main map generation routine
        void make_block(BlockMakeData *data);
        
-       // Add objects according to block content
-       void add_random_objects(MapBlock *block);
+       // Add a tree
+       void make_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0,
+                       bool is_apple_tree, INodeDefManager *ndef);
        
        /*
                These are used by FarMesh
        */
-       bool get_have_sand(u64 seed, v2s16 p2d);
+       bool get_have_beach(u64 seed, v2s16 p2d);
        double tree_amount_2d(u64 seed, v2s16 p);
 
+       struct BlockMakeData
+       {
+               bool no_op;
+               ManualMapVoxelManipulator *vmanip; // Destructor deletes
+               u64 seed;
+               v3s16 blockpos_min;
+               v3s16 blockpos_max;
+               v3s16 blockpos_requested;
+               UniqueQueue<v3s16> transforming_liquid;
+               INodeDefManager *nodedef;
+
+               BlockMakeData();
+               ~BlockMakeData();
+       };
+
 }; // namespace mapgen
 
 #endif