summaryrefslogtreecommitdiffstats
path: root/src/render/Particle.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/render/Particle.cpp110
1 files changed, 76 insertions, 34 deletions
diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp
index 6a42bc4d..0ad4681d 100644
--- a/src/render/Particle.cpp
+++ b/src/render/Particle.cpp
@@ -213,19 +213,19 @@ RwTexture *gpSparkTex;
RwTexture *gpNewspaperTex;
RwTexture *gpGunSmokeTex;
RwTexture *gpDotTex;
-RwTexture *gpHeathazeTex;
+RwTexture *gpHeatHazeTex;
RwTexture *gpBeastieTex;
-RwTexture *gpRaindripTex1[MAX_RAINDRIP_FILES];
-RwTexture *gpRaindripTex2[MAX_RAINDRIP_FILES];
+RwTexture *gpRainDripTex[MAX_RAINDRIP_FILES];
+RwTexture *gpRainDripDarkTex[MAX_RAINDRIP_FILES];
RwRaster *gpSparkRaster;
RwRaster *gpNewspaperRaster;
RwRaster *gpGunSmokeRaster;
RwRaster *gpDotRaster;
-RwRaster *gpHeathazeRaster;
+RwRaster *gpHeatHazeRaster;
RwRaster *gpBeastieRaster;
-RwRaster *gpRaindripRaster1[MAX_RAINDRIP_FILES];
-RwRaster *gpRaindripRaster2[MAX_RAINDRIP_FILES];
+RwRaster *gpRainDripRaster[MAX_RAINDRIP_FILES];
+RwRaster *gpRainDripDarkRaster[MAX_RAINDRIP_FILES];
float CParticle::ms_afRandTable[CParticle::RAND_TABLE_SIZE];
CParticle *CParticle::m_pUnusedListHead;
@@ -411,9 +411,11 @@ void CParticle::Initialise()
gpFlame5Tex = RwTextureRead("flame5", nil);
-#ifdef FIX_BUGS
+//#ifdef FIX_BUGS
+#if 0
gpFlame5Raster = RwTextureGetRaster(gpFlame5Tex);
#else
+ // this seems to have become more of a design choice
gpFlame5Raster = RwTextureGetRaster(gpFlame1Tex); // copy-paste bug ?
#endif
@@ -465,23 +467,23 @@ void CParticle::Initialise()
gpDotTex = RwTextureRead("dot", nil);
gpDotRaster = RwTextureGetRaster(gpDotTex);
- gpHeathazeTex = RwTextureRead("heathaze", nil);
- gpHeathazeRaster = RwTextureGetRaster(gpHeathazeTex);
+ gpHeatHazeTex = RwTextureRead("heathaze", nil);
+ gpHeatHazeRaster = RwTextureGetRaster(gpHeatHazeTex);
gpBeastieTex = RwTextureRead("beastie", nil);
gpBeastieRaster = RwTextureGetRaster(gpBeastieTex);
- gpRaindripTex1[0] = RwTextureRead("raindrip64", nil);
- gpRaindripRaster1[0] = RwTextureGetRaster(gpRaindripTex1[0]);
+ gpRainDripTex[0] = RwTextureRead("raindrip64", nil);
+ gpRainDripRaster[0] = RwTextureGetRaster(gpRainDripTex[0]);
- gpRaindripTex1[1] = RwTextureRead("raindripb64", nil);
- gpRaindripRaster1[1] = RwTextureGetRaster(gpRaindripTex1[1]);
+ gpRainDripTex[1] = RwTextureRead("raindripb64", nil);
+ gpRainDripRaster[1] = RwTextureGetRaster(gpRainDripTex[1]);
- gpRaindripTex2[0] = RwTextureRead("raindrip64_d", nil);
- gpRaindripRaster2[0] = RwTextureGetRaster(gpRaindripTex2[0]);
+ gpRainDripDarkTex[0] = RwTextureRead("raindrip64_d", nil);
+ gpRainDripDarkRaster[0] = RwTextureGetRaster(gpRainDripDarkTex[0]);
- gpRaindripTex2[1] = RwTextureRead("raindripb64_d", nil);
- gpRaindripRaster2[1] = RwTextureGetRaster(gpRaindripTex2[1]);
+ gpRainDripDarkTex[1] = RwTextureRead("raindripb64_d", nil);
+ gpRainDripDarkRaster[1] = RwTextureGetRaster(gpRainDripDarkTex[1]);
CTxdStore::PopCurrentTxd();
@@ -586,7 +588,7 @@ void CParticle::Initialise()
break;
case PARTICLE_TEARGAS:
- entry->m_ppRaster = &gpHeathazeRaster;
+ entry->m_ppRaster = &gpHeatHazeRaster;
break;
case PARTICLE_SHARD:
@@ -749,11 +751,11 @@ void CParticle::Shutdown()
for ( int32 i = 0; i < MAX_RAINDRIP_FILES; i++ )
{
- RwTextureDestroy(gpRaindripTex1[i]);
- gpRaindripTex1[i] = nil;
+ RwTextureDestroy(gpRainDripTex[i]);
+ gpRainDripTex[i] = nil;
- RwTextureDestroy(gpRaindripTex2[i]);
- gpRaindripTex2[i] = nil;
+ RwTextureDestroy(gpRainDripDarkTex[i]);
+ gpRainDripDarkTex[i] = nil;
}
RwTextureDestroy(gpBoatWakeTex);
@@ -812,8 +814,8 @@ void CParticle::Shutdown()
RwTextureDestroy(gpDotTex);
gpDotTex = nil;
- RwTextureDestroy(gpHeathazeTex);
- gpHeathazeTex = nil;
+ RwTextureDestroy(gpHeatHazeTex);
+ gpHeatHazeTex = nil;
RwTextureDestroy(gpBeastieTex);
gpBeastieTex = nil;
@@ -941,7 +943,7 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe
CVector screen;
float w, h;
- if ( !CSprite::CalcScreenCoors(vecPos, screen, &w, &h, true) )
+ if ( !CSprite::CalcScreenCoors(vecPos, &screen, &w, &h, true) )
return nil;
pParticle->m_vecPosition = screen;
@@ -1913,9 +1915,9 @@ void CParticle::Render()
FxType fxtype;
if ( particle->m_nCurrentFrame != 0 )
- fxtype = FXTYPE_1;
+ fxtype = FXTYPE_WATER2;
else
- fxtype = FXTYPE_0;
+ fxtype = FXTYPE_WATER1;
CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, fxtype);
@@ -1939,9 +1941,9 @@ void CParticle::Render()
FxType fxtype;
if ( particle->m_nCurrentFrame )
- fxtype = FXTYPE_3;
+ fxtype = FXTYPE_BLOOD2;
else
- fxtype = FXTYPE_2;
+ fxtype = FXTYPE_BLOOD1;
CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, fxtype);
@@ -1957,7 +1959,7 @@ void CParticle::Render()
rect.w = int32(particle->m_vecPosition.x + SCREEN_STRETCH_X(particle->m_fSize * stretchTexW));
rect.h = int32(particle->m_vecPosition.y + SCREEN_STRETCH_Y(particle->m_fSize * stretchTexH * 0.15f));
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_4);
+ CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_HEATHAZE);
canDraw = false;
}
@@ -1993,7 +1995,7 @@ void CParticle::Render()
break;
}
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_4);
+ CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_HEATHAZE);
canDraw = false;
}
@@ -2034,7 +2036,7 @@ void CParticle::Render()
float w;
float h;
- if ( CSprite::CalcScreenCoors(particle->m_vecPosition, coors, &w, &h, true) )
+ if ( CSprite::CalcScreenCoors(particle->m_vecPosition, &coors, &w, &h, true) )
{
if ( i == PARTICLE_ENGINE_STEAM
@@ -2115,7 +2117,7 @@ void CParticle::Render()
* (CSprite::GetFarScreenZ() - CSprite::GetNearScreenZ()) * CDraw::GetFarClipZ()
/ ( (CDraw::GetFarClipZ() - CDraw::GetNearClipZ()) * coors.z ) + CSprite::GetNearScreenZ();
- CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_5);
+ CMBlur::AddRenderFx(Scene.camera, &rect, screenZ, FXTYPE_SPLASH1);
}
else
{
@@ -2189,7 +2191,7 @@ void CParticle::Render()
float fTrailLength;
CVector vecScreenPosition;
- if ( CSprite::CalcScreenCoors(vecPrevPos, vecScreenPosition, &fTrailLength, &fRotation, true) )
+ if ( CSprite::CalcScreenCoors(vecPrevPos, &vecScreenPosition, &fTrailLength, &fRotation, true) )
{
CVector2D vecDist
(
@@ -2470,3 +2472,43 @@ void CParticle::HandleShootableBirdsStuff(CEntity *entity, CVector const&camPos)
}
}
+
+void
+CEntity::AddSteamsFromGround(CVector *unused)
+{
+ int i, n;
+ C2dEffect *effect;
+ CVector pos;
+
+ n = CModelInfo::GetModelInfo(GetModelIndex())->GetNum2dEffects();
+ for(i = 0; i < n; i++){
+ effect = CModelInfo::GetModelInfo(GetModelIndex())->Get2dEffect(i);
+ if(effect->type != EFFECT_PARTICLE)
+ continue;
+
+ pos = GetMatrix() * effect->pos;
+ switch(effect->particle.particleType){
+ case 0:
+ CParticleObject::AddObject(POBJECT_PAVEMENT_STEAM, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ case 1:
+ CParticleObject::AddObject(POBJECT_WALL_STEAM, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ case 2:
+ CParticleObject::AddObject(POBJECT_DRY_ICE, pos, effect->particle.scale, false);
+ break;
+ case 3:
+ CParticleObject::AddObject(POBJECT_SMALL_FIRE, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ case 4:
+ CParticleObject::AddObject(POBJECT_DARK_SMOKE, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ case 5:
+ CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_VERT, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ case 6:
+ CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_HORIZ, pos, effect->particle.dir, effect->particle.scale, false);
+ break;
+ }
+ }
+}