summaryrefslogtreecommitdiffstats
path: root/src/objects/ParticleObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/objects/ParticleObject.cpp')
-rw-r--r--src/objects/ParticleObject.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp
index fe448966..932a0b8a 100644
--- a/src/objects/ParticleObject.cpp
+++ b/src/objects/ParticleObject.cpp
@@ -169,7 +169,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_STEAM_NY;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 3;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 8;
break;
}
@@ -187,7 +191,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_STEAM_NY;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 3;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 8;
break;
}
@@ -205,7 +213,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_STEAM_NY;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 3;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 8;
pobj->m_Color = CRGBA(16, 16, 16, 255);
break;
@@ -228,7 +240,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_CAR_SPLASH;
pobj->m_nNumEffectCycles = 0;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 1;
+#else
+ pobj->m_nSkipFrames = 3;
+#endif
pobj->m_nCreationChance = 0;
break;
}
@@ -236,7 +252,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
case POBJECT_SPLASHES_AROUND:
{
pobj->m_ParticleType = PARTICLE_SPLASH;
+#ifdef PC_PARTICLE
pobj->m_nNumEffectCycles = 15;
+#else
+ pobj->m_nNumEffectCycles = 30;
+#endif
pobj->m_nSkipFrames = 2;
pobj->m_nCreationChance = 0;
break;
@@ -246,7 +266,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_FLAME;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 2;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 2;
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
break;
@@ -256,7 +280,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_FLAME;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 2;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 4;
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
break;
@@ -286,7 +314,11 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
{
pobj->m_ParticleType = PARTICLE_EXPLOSION_MEDIUM;
pobj->m_nNumEffectCycles = 1;
+#ifdef PC_PARTICLE
pobj->m_nSkipFrames = 3;
+#else
+ pobj->m_nSkipFrames = 1;
+#endif
pobj->m_nCreationChance = 2;
pobj->m_fRandVal = 0.01f;
break;
@@ -598,6 +630,7 @@ void CParticleObject::UpdateClose(void)
case POBJECT_PED_WATER_SPLASH:
{
+#ifdef PC_PARTICLE
CRGBA colorsmoke(255, 255, 255, 196);
CVector pos = this->GetPosition();
@@ -699,12 +732,69 @@ void CParticleObject::UpdateClose(void)
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
}
+#else
+ CVector pos;
+ CVector vel;
+
+ for ( int32 i = -2; i < 2; i++ )
+ {
+ pos = this->GetPosition();
+ pos += CVector(-0.75f, 0.5f * float(i), 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += -1.5 * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_PED_SPLASH, pos, vel, NULL, 0.8f, this->m_Color);
+
+ pos = this->GetPosition();
+ pos += CVector(0.75f, 0.5f * float(i), 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += 1.5f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_PED_SPLASH, pos, vel, NULL, 0.8f, this->m_Color);
+
+ pos = this->GetPosition();
+ pos += CVector(0.5f * float(i), -0.75, 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += -1.5f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_PED_SPLASH, pos, vel, NULL, 0.8f, this->m_Color);
+
+
+ pos = this->GetPosition();
+ pos += CVector(0.5f * float(i), 0.75, 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += 1.5f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_PED_SPLASH, pos, vel, NULL, 0.8f, this->m_Color);
+ }
+
+ for ( int32 i = 0; i < 4; i++ )
+ {
+ pos = this->GetPosition();
+
+ pos.x += CGeneral::GetRandomNumberInRange(-1.5f, 1.5f);
+ pos.y += CGeneral::GetRandomNumberInRange(-1.5f, 1.5f);
+ pos.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+
+ vel = this->m_vecTarget;
+ CParticle::AddParticle(PARTICLE_PED_SPLASH, pos, vel, NULL, 0.8f, this->m_Color);
+ }
+#endif
break;
}
case POBJECT_CAR_WATER_SPLASH:
{
+#ifdef PC_PARTICLE
CRGBA colorsmoke(255, 255, 255, 196);
CVector pos = this->GetPosition();
@@ -799,7 +889,65 @@ void CParticleObject::UpdateClose(void)
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
}
+#else
+ CVector pos;
+ CVector vel;
+
+ for ( int32 i = -3; i < 4; i++ )
+ {
+ pos = this->GetPosition();
+ pos += CVector(-1.5f, 0.5f * float(i), 0.0f);
+
+
+ vel = this->m_vecTarget;
+ vel.x += -3.0f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, NULL, 0.0f, this->m_Color);
+
+
+ pos = this->GetPosition();
+ pos += CVector(1.5f, 0.5f * float(i), 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += 3.0f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, NULL, 0.0f, this->m_Color);
+
+ pos = this->GetPosition();
+ pos += CVector(0.5f * float(i), -1.5f, 0.0f);
+
+ vel = this->m_vecTarget;
+ vel.x += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += -3.0f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, NULL, 0.0f, this->m_Color);
+
+
+ pos = this->GetPosition();
+ pos += CVector(0.5f * float(i), 1.5f, 0.0f);
+
+
+ vel = this->m_vecTarget;
+ vel.x += float(i) * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.y += 3.0f * CGeneral::GetRandomNumberInRange(0.001f, 0.006f);
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, NULL, 0.0f, this->m_Color);
+ }
+
+ for ( int32 i = 0; i < 8; i++ )
+ {
+ pos = this->GetPosition();
+ pos.x += CGeneral::GetRandomNumberInRange(-3.0f, 3.0f);
+ pos.y += CGeneral::GetRandomNumberInRange(-3.0f, 3.0f);
+
+ vel = this->m_vecTarget;
+ vel.z += CGeneral::GetRandomNumberInRange(0.03f, 0.06f);
+ CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, NULL, 0.0f, this->m_Color);
+ }
+#endif
break;
}