summaryrefslogtreecommitdiff
path: root/games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp
diff options
context:
space:
mode:
authorDmitry Marakasov <amdmi3@FreeBSD.org>2021-04-22 15:05:40 +0300
committerDmitry Marakasov <amdmi3@FreeBSD.org>2022-02-25 22:12:28 +0300
commit33c9707d8b57fab77399b00747f04e3478770167 (patch)
treef7d28e4508e0a333e84901580f637972a8e774b8 /games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp
parentdatabases/postgis32: Update to 3.2 (diff)
games/spring: update to 105.0.1
PR: 254732
Diffstat (limited to 'games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp')
-rw-r--r--games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp b/games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp
new file mode 100644
index 000000000000..1bed456ac445
--- /dev/null
+++ b/games/spring/files/patch-rts_Sim_Projectiles_ProjectileHandler.cpp
@@ -0,0 +1,41 @@
+--- rts/Sim/Projectiles/ProjectileHandler.cpp.orig 2020-12-26 12:45:43 UTC
++++ rts/Sim/Projectiles/ProjectileHandler.cpp
+@@ -66,6 +66,18 @@ ProjMemPool projMemPool;
+ CProjectileHandler projectileHandler;
+
+
++namespace {
++ template<class RandomIt, class RandomFunc>
++ void random_shuffle(RandomIt first, RandomIt last, RandomFunc&& r)
++ {
++ typename std::iterator_traits<RandomIt>::difference_type i, n;
++ n = last - first;
++ for (i = n-1; i > 0; --i) {
++ using std::swap;
++ swap(first[i], first[r(i+1)]);
++ }
++ }
++}
+
+ void CProjectileHandler::Init()
+ {
+@@ -106,8 +118,8 @@ void CProjectileHandler::Init()
+ freeProjectileIDs[false].push_back(i);
+ }
+
+- std::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
+- std::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
++ ::random_shuffle(freeProjectileIDs[ true].begin(), freeProjectileIDs[ true].end(), gsRNG);
++ ::random_shuffle(freeProjectileIDs[false].begin(), freeProjectileIDs[false].end(), guRNG);
+ }
+
+ for (int modelType = 0; modelType < MODELTYPE_OTHER; ++modelType) {
+@@ -395,7 +407,7 @@ void CProjectileHandler::AddProjectile(CProjectile* p)
+
+ // generate (newSize - oldSize) new id's starting from oldSize
+ std::for_each(freeIDs.begin(), freeIDs.end(), [k = oldSize](int& id) mutable { id = k++; });
+- std::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
++ ::random_shuffle(freeIDs.begin(), freeIDs.end(), rngFunc);
+ }
+
+