diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-20 21:55:00 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-10-20 21:55:00 +0100 |
commit | f84a4771f3efe642c0946ccd94a52ede27f1d997 (patch) | |
tree | 390b50883fd84e01bfa1dc4e4e2714d37e0838f2 /application/main.cpp | |
parent | Move lots of maths helpers to inline, constexpr, templates (diff) | |
download | ilt-f84a4771f3efe642c0946ccd94a52ede27f1d997.tar.bz2 ilt-f84a4771f3efe642c0946ccd94a52ede27f1d997.tar.xz ilt-f84a4771f3efe642c0946ccd94a52ede27f1d997.zip |
Randomise for many trees, positions, rotations
Diffstat (limited to 'application/main.cpp')
-rw-r--r-- | application/main.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/application/main.cpp b/application/main.cpp index d58cf6d..db42a63 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -24,6 +24,7 @@ #include <glm/glm.hpp> #include <glm/gtx/transform.hpp> // IWYU pragma: keep #include <memory> +#include <random> #include <special_members.h> #include <ui/applicationBase.h> #include <ui/gameMainWindow.h> @@ -79,10 +80,18 @@ public: &train->orders, l3->ends[1], l3->length, rl->findNodeAt({-1100000, -450000, 15000})); train->currentActivity = train->orders.current()->createActivity(); - auto foliage = std::dynamic_pointer_cast<Foliage>(assets.at("Tree-01-1")); + std::random_device randomdev {}; + std::uniform_real_distribution<Angle> rotationDistribution {0, two_pi}; + std::uniform_int_distribution<GlobalDistance> positionOffsetDistribution {-1500, +1500}; + std::uniform_int_distribution<int> treeDistribution {1, 3}; + std::uniform_int_distribution<int> treeVariantDistribution {1, 4}; for (auto x = 311000000; x < 311830000; x += 5000) { for (auto y = 491100000; y < 491130000; y += 5000) { - world.create<Plant>(foliage, Location {geoData->positionAt({{x, y}})}); + world.create<Plant>(std::dynamic_pointer_cast<Foliage>(assets.at(std::format("Tree-{:#02}-{}", + treeDistribution(randomdev), treeVariantDistribution(randomdev)))), + Location {geoData->positionAt({{x + positionOffsetDistribution(randomdev), + y + positionOffsetDistribution(randomdev)}}), + {0, rotationDistribution(randomdev), 0}}); } } } |