diff --git a/apps/opencs/editor.cpp b/apps/opencs/editor.cpp index 450b434e66..6699ccaaf5 100644 --- a/apps/opencs/editor.cpp +++ b/apps/opencs/editor.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include "model/doc/document.hpp" @@ -355,6 +356,8 @@ int CS::Editor::run() if (mLocal.empty()) return 1; + Misc::Rng::init(); + mStartup.show(); QApplication::setQuitOnLastWindowClosed (true); diff --git a/components/nifosg/particle.cpp b/components/nifosg/particle.cpp index f5c055a15a..c1f6a2819b 100644 --- a/components/nifosg/particle.cpp +++ b/components/nifosg/particle.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -81,17 +82,17 @@ ParticleShooter::ParticleShooter(const ParticleShooter ©, const osg::CopyOp void ParticleShooter::shoot(osgParticle::Particle *particle) const { - float hdir = mHorizontalDir + mHorizontalAngle * (2.f * (std::rand() / static_cast(RAND_MAX)) - 1.f); - float vdir = mVerticalDir + mVerticalAngle * (2.f * (std::rand() / static_cast(RAND_MAX)) - 1.f); + float hdir = mHorizontalDir + mHorizontalAngle * (2.f * Misc::Rng::rollClosedProbability() - 1.f); + float vdir = mVerticalDir + mVerticalAngle * (2.f * Misc::Rng::rollClosedProbability() - 1.f); osg::Vec3f dir = (osg::Quat(vdir, osg::Vec3f(0,1,0)) * osg::Quat(hdir, osg::Vec3f(0,0,1))) * osg::Vec3f(0,0,1); - float vel = mMinSpeed + (mMaxSpeed - mMinSpeed) * std::rand() / static_cast(RAND_MAX); + float vel = mMinSpeed + (mMaxSpeed - mMinSpeed) * Misc::Rng::rollClosedProbability(); particle->setVelocity(dir * vel); // Not supposed to set this here, but there doesn't seem to be a better way of doing it - particle->setLifeTime(mLifetime + mLifetimeRandom * std::rand() / static_cast(RAND_MAX)); + particle->setLifeTime(mLifetime + mLifetimeRandom * Misc::Rng::rollClosedProbability()); } GrowFadeAffector::GrowFadeAffector(float growTime, float fadeTime) @@ -277,7 +278,8 @@ void Emitter::emitParticles(double dt) if (!mTargets.empty()) { - int randomRecIndex = mTargets[(std::rand() / (static_cast(RAND_MAX)+1.0)) * mTargets.size()]; + int randomIndex = Misc::Rng::rollClosedProbability() * (mTargets.size() - 1); + int randomRecIndex = mTargets[randomIndex]; // we could use a map here for faster lookup FindGroupByRecIndex visitor(randomRecIndex);