From 238642d6a99d3f764529a339d0802d3e3909f391 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 22 Aug 2017 02:12:41 +0300 Subject: Use strong typed enum ParticlePhysics. --- src/particle/particle.cpp | 5 +++-- src/particle/particleengine.cpp | 6 ++++-- src/particle/particleengine.h | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/particle') diff --git a/src/particle/particle.cpp b/src/particle/particle.cpp index 3019aeda0..40b1b7a5a 100644 --- a/src/particle/particle.cpp +++ b/src/particle/particle.cpp @@ -140,11 +140,11 @@ void Particle::updateSelf() restrict2 switch (ParticleEngine::fastPhysics) { - case 1: + case ParticlePhysics::Normal: invHypotenuse = fastInvSqrt( dist.x * dist.x + dist.y * dist.y + dist.z * dist.z); break; - case 2: + case ParticlePhysics::Fast: if (dist.x == 0.0f) { invHypotenuse = 0; @@ -155,6 +155,7 @@ void Particle::updateSelf() restrict2 + static_cast(fabs(dist.y)) + static_cast(fabs(dist.z))); break; + case ParticlePhysics::Best: default: invHypotenuse = 1.0F / static_cast(sqrt( dist.x * dist.x + dist.y * dist.y + dist.z * dist.z)); diff --git a/src/particle/particleengine.cpp b/src/particle/particleengine.cpp index 02e21e0bc..b54e36d27 100644 --- a/src/particle/particleengine.cpp +++ b/src/particle/particleengine.cpp @@ -44,7 +44,7 @@ class Image; int ParticleEngine::particleCount = 0; int ParticleEngine::maxCount = 0; -int ParticleEngine::fastPhysics = 0; +ParticlePhysicsT ParticleEngine::fastPhysics = ParticlePhysics::Best; int ParticleEngine::emitterSkip = 1; bool ParticleEngine::enabled = true; const float ParticleEngine::PARTICLE_SKY = 800.0F; @@ -67,7 +67,9 @@ ParticleEngine::~ParticleEngine() void ParticleEngine::setupEngine() restrict2 { ParticleEngine::maxCount = config.getIntValue("particleMaxCount"); - ParticleEngine::fastPhysics = config.getIntValue("particleFastPhysics"); + ParticleEngine::fastPhysics = fromInt(config.getIntValue( + "particleFastPhysics"), + ParticlePhysics); ParticleEngine::emitterSkip = config.getIntValue("particleEmitterSkip") + 1; if (ParticleEngine::emitterSkip == 0) diff --git a/src/particle/particleengine.h b/src/particle/particleengine.h index 02d0dcb5b..19a9c4e9f 100644 --- a/src/particle/particleengine.h +++ b/src/particle/particleengine.h @@ -23,6 +23,8 @@ #ifndef PARTICLE_PARTICLEENGINE_H #define PARTICLE_PARTICLEENGINE_H +#include "enums/particle/particlephysics.h" + #include #include @@ -45,7 +47,7 @@ class ParticleEngine final { public: static const float PARTICLE_SKY; // Maximum Z position of particles - static int fastPhysics; // Mode of squareroot calculation + static ParticlePhysicsT fastPhysics; // Mode of squareroot calculation static int particleCount; // Current number of particles static int maxCount; // Maximum number of particles static int emitterSkip; // Duration of pause between two -- cgit v1.2.3-70-g09d2