]> git.lizzy.rs Git - minetest.git/blobdiff - src/treegen.h
Snake case for screen options in minetest.conf (#5792)
[minetest.git] / src / treegen.h
index ca4d3e23d3249fd296401b4d591ba186469516ba..8777c369cc4d4fe6b253aad0698b5f6a880a6f0d 100644 (file)
@@ -23,57 +23,70 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <matrix4.h>
 #include "noise.h"
 
-class ManualMapVoxelManipulator;
+class MMVManip;
 class INodeDefManager;
+class ServerEnvironment;
 
 
-namespace treegen
-{
-
-struct TreeDef
-{
-std::string initial_axiom;
-std::string rules_a;
-std::string rules_b;
-std::string rules_c;
-std::string rules_d;
-MapNode trunknode;
-MapNode leavesnode;
-MapNode leaves2node;
-int leaves2_chance;
-int angle;
-int iterations;
-int iterations_random_level;
-std::string trunk_type;
-bool thin_branches;
-MapNode fruitnode;
-int fruit_chance;
-int seed;
-};
+namespace treegen {
+
+       enum error {
+               SUCCESS,
+               UNBALANCED_BRACKETS
+       };
+
+       struct TreeDef {
+               std::string initial_axiom;
+               std::string rules_a;
+               std::string rules_b;
+               std::string rules_c;
+               std::string rules_d;
+
+               MapNode trunknode;
+               MapNode leavesnode;
+               MapNode leaves2node;
+
+               int leaves2_chance;
+               int angle;
+               int iterations;
+               int iterations_random_level;
+               std::string trunk_type;
+               bool thin_branches;
+               MapNode fruitnode;
+               int fruit_chance;
+               s32 seed;
+               bool explicit_seed;
+       };
 
        // Add default tree
-       void make_tree(ManualMapVoxelManipulator &vmanip, v3s16 p0,
-               bool is_apple_tree, INodeDefManager *ndef,int seed);
+       void make_tree(MMVManip &vmanip, v3s16 p0,
+               bool is_apple_tree, INodeDefManager *ndef, s32 seed);
+       // Add jungle tree
+       void make_jungletree(MMVManip &vmanip, v3s16 p0,
+               INodeDefManager *ndef, s32 seed);
+       // Add pine tree
+       void make_pine_tree(MMVManip &vmanip, v3s16 p0,
+               INodeDefManager *ndef, s32 seed);
 
        // Add L-Systems tree (used by engine)
-       void make_ltree(ManualMapVoxelManipulator &vmanip, v3s16 p0, INodeDefManager *ndef,
+       treegen::error make_ltree(MMVManip &vmanip, v3s16 p0, INodeDefManager *ndef,
                TreeDef tree_definition);
        // Spawn L-systems tree from LUA
-       void spawn_ltree (ServerEnvironment *env, v3s16 p0, INodeDefManager *ndef,
-               TreeDef tree_definition);
+       treegen::error spawn_ltree (ServerEnvironment *env, v3s16 p0, INodeDefManager *ndef,
+               const TreeDef &tree_definition);
 
        // L-System tree gen helper functions
-       void tree_node_placement(ManualMapVoxelManipulator &vmanip, v3f p0,
+       void tree_node_placement(MMVManip &vmanip, v3f p0,
                MapNode node);
-       void tree_trunk_placement(ManualMapVoxelManipulator &vmanip, v3f p0,
+       void tree_trunk_placement(MMVManip &vmanip, v3f p0,
                TreeDef &tree_definition);
-       void tree_leaves_placement(ManualMapVoxelManipulator &vmanip, v3f p0,
+       void tree_leaves_placement(MMVManip &vmanip, v3f p0,
                PseudoRandom ps, TreeDef &tree_definition);
-       void tree_single_leaves_placement(ManualMapVoxelManipulator &vmanip, v3f p0,
+       void tree_single_leaves_placement(MMVManip &vmanip, v3f p0,
                PseudoRandom ps, TreeDef &tree_definition);
-       void tree_fruit_placement(ManualMapVoxelManipulator &vmanip, v3f p0,
+       void tree_fruit_placement(MMVManip &vmanip, v3f p0,
                TreeDef &tree_definition);
-       irr::core::matrix4 setRotationAxisRadians(irr::core::matrix4 M, double angle,v3f axis);
+       irr::core::matrix4 setRotationAxisRadians(irr::core::matrix4 M, double angle, v3f axis);
 
        v3f transposeMatrix(irr::core::matrix4 M ,v3f v);