summaryrefslogtreecommitdiffstats
path: root/src/render/Particle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/Particle.cpp')
-rw-r--r--src/render/Particle.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp
index 660ed5c2..2e709f42 100644
--- a/src/render/Particle.cpp
+++ b/src/render/Particle.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "General.h"
#include "Timer.h"
#include "TxdStore.h"
@@ -50,6 +51,8 @@
#define MAX_RAINDRIP_FILES (2)
+#define MAX_LEAF_FILES (2)
+
const char SmokeFiles[][6+1] =
{
@@ -166,7 +169,7 @@ RwTexture *gpFlame1Tex;
RwTexture *gpFlame5Tex;
RwTexture *gpRainDropSmallTex;
RwTexture *gpBloodTex;
-RwTexture *gpLeafTex;
+RwTexture *gpLeafTex[MAX_LEAF_FILES];
RwTexture *gpCloudTex1;
RwTexture *gpCloudTex4;
RwTexture *gpBloodSmallTex;
@@ -194,7 +197,7 @@ RwRaster *gpFlame1Raster;
RwRaster *gpFlame5Raster;
RwRaster *gpRainDropSmallRaster;
RwRaster *gpBloodRaster;
-RwRaster *gpLeafRaster;
+RwRaster *gpLeafRaster[MAX_LEAF_FILES];
RwRaster *gpCloudRaster1;
RwRaster *gpCloudRaster4;
RwRaster *gpBloodSmallRaster;
@@ -207,9 +210,6 @@ RwRaster *gpPointlightRaster;
RwTexture *gpRainDropTex;
RwRaster *gpRainDropRaster;
-RwTexture *gpLetterTex;
-RwRaster *gpLetterRaster;
-
RwTexture *gpSparkTex;
RwTexture *gpNewspaperTex;
RwTexture *gpGunSmokeTex;
@@ -430,13 +430,13 @@ void CParticle::Initialise()
ASSERT(gpBloodTex != nil);
gpBloodRaster = RwTextureGetRaster(gpBloodTex);
- gpLeafTex = RwTextureRead("gameleaf01_64", nil);
- ASSERT(gpLeafTex != nil);
- gpLeafRaster = RwTextureGetRaster(gpLeafTex);
+ gpLeafTex[0] = RwTextureRead("gameleaf01_64", nil);
+ ASSERT(gpLeafTex[0] != nil);
+ gpLeafRaster[0] = RwTextureGetRaster(gpLeafTex[0]);
- gpLetterTex = RwTextureRead("letter", nil);
- ASSERT(gpLetterTex != nil);
- gpLetterRaster = RwTextureGetRaster(gpLetterTex);
+ gpLeafTex[1] = RwTextureRead("letter", nil);
+ ASSERT(gpLeafTex[1] != nil);
+ gpLeafRaster[1] = RwTextureGetRaster(gpLeafTex[1]);
gpCloudTex1 = RwTextureRead("cloud3", nil);
ASSERT(gpCloudTex1 != nil);
@@ -555,7 +555,7 @@ void CParticle::Initialise()
break;
case PARTICLE_DEBRIS:
- entry->m_ppRaster = &gpLeafRaster;
+ entry->m_ppRaster = gpLeafRaster;
break;
case PARTICLE_DEBRIS2:
@@ -750,7 +750,7 @@ void CParticle::Initialise()
break;
case PARTICLE_TREE_LEAVES:
- entry->m_ppRaster = &gpLeafRaster;
+ entry->m_ppRaster = gpLeafRaster;
break;
case PARTICLE_CARCOLLISION_DUST:
@@ -929,11 +929,11 @@ void CParticle::Shutdown()
RwTextureDestroy(gpBloodTex);
gpBloodTex = nil;
- RwTextureDestroy(gpLeafTex);
- gpLeafTex = nil;
+ RwTextureDestroy(gpLeafTex[0]);
+ gpLeafTex[0] = nil;
- RwTextureDestroy(gpLetterTex);
- gpLetterTex = nil;
+ RwTextureDestroy(gpLeafTex[1]);
+ gpLeafTex[1] = nil;
RwTextureDestroy(gpCloudTex1);
gpCloudTex1 = nil;
@@ -1750,6 +1750,8 @@ void CParticle::Update()
void CParticle::Render()
{
+ PUSH_RENDERGROUP("CParticle::Render");
+
RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void *)rwTEXTUREADDRESSWRAP);
RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE);
@@ -2106,6 +2108,8 @@ void CParticle::Render()
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void *)rwBLENDSRCALPHA);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void *)rwBLENDINVSRCALPHA);
+
+ POP_RENDERGROUP();
}
void CParticle::RemovePSystem(tParticleType type)