summaryrefslogtreecommitdiffstats
path: root/src/render/ParticleMgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/ParticleMgr.h')
-rw-r--r--src/render/ParticleMgr.h206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/render/ParticleMgr.h b/src/render/ParticleMgr.h
new file mode 100644
index 00000000..a2dcbdb5
--- /dev/null
+++ b/src/render/ParticleMgr.h
@@ -0,0 +1,206 @@
+#pragma once
+
+class CParticle;
+
+enum tParticleType
+{
+ PARTICLE_SPARK = 0,
+ PARTICLE_SPARK_SMALL,
+ PARTICLE_WHEEL_DIRT,
+ PARTICLE_WHEEL_WATER,
+ PARTICLE_BLOOD,
+ PARTICLE_BLOOD_SMALL,
+ PARTICLE_BLOOD_SPURT,
+ PARTICLE_DEBRIS,
+ PARTICLE_DEBRIS2,
+ PARTICLE_WATER,
+ PARTICLE_FLAME,
+ PARTICLE_FIREBALL,
+ PARTICLE_GUNFLASH,
+ PARTICLE_GUNFLASH_NOANIM,
+ PARTICLE_GUNSMOKE,
+ PARTICLE_GUNSMOKE2,
+ PARTICLE_SMOKE,
+ PARTICLE_SMOKE_SLOWMOTION,
+ PARTICLE_GARAGEPAINT_SPRAY,
+ PARTICLE_SHARD,
+ PARTICLE_SPLASH,
+ PARTICLE_CARFLAME,
+ PARTICLE_STEAM,
+ PARTICLE_STEAM2,
+ PARTICLE_STEAM_NY,
+ PARTICLE_STEAM_NY_SLOWMOTION,
+ PARTICLE_ENGINE_STEAM,
+ PARTICLE_RAINDROP,
+ PARTICLE_RAINDROP_SMALL,
+ PARTICLE_RAIN_SPLASH,
+ PARTICLE_RAIN_SPLASH_BIGGROW,
+ PARTICLE_RAIN_SPLASHUP,
+ PARTICLE_WATERSPRAY,
+ PARTICLE_EXPLOSION_MEDIUM,
+ PARTICLE_EXPLOSION_LARGE,
+ PARTICLE_EXPLOSION_MFAST,
+ PARTICLE_EXPLOSION_LFAST,
+ PARTICLE_CAR_SPLASH,
+ PARTICLE_BOAT_SPLASH,
+ PARTICLE_BOAT_THRUSTJET,
+ PARTICLE_BOAT_WAKE,
+ PARTICLE_WATER_HYDRANT,
+ PARTICLE_WATER_CANNON,
+ PARTICLE_EXTINGUISH_STEAM,
+ PARTICLE_PED_SPLASH,
+ PARTICLE_PEDFOOT_DUST,
+ PARTICLE_HELI_DUST,
+ PARTICLE_HELI_ATTACK,
+ PARTICLE_ENGINE_SMOKE,
+ PARTICLE_ENGINE_SMOKE2,
+ PARTICLE_CARFLAME_SMOKE,
+ PARTICLE_FIREBALL_SMOKE,
+ PARTICLE_PAINT_SMOKE,
+ PARTICLE_TREE_LEAVES,
+ PARTICLE_CARCOLLISION_DUST,
+ PARTICLE_CAR_DEBRIS,
+ PARTICLE_HELI_DEBRIS,
+ PARTICLE_EXHAUST_FUMES,
+ PARTICLE_RUBBER_SMOKE,
+ PARTICLE_BURNINGRUBBER_SMOKE,
+ PARTICLE_BULLETHIT_SMOKE,
+ PARTICLE_GUNSHELL_FIRST,
+ PARTICLE_GUNSHELL,
+ PARTICLE_GUNSHELL_BUMP1,
+ PARTICLE_GUNSHELL_BUMP2,
+ PARTICLE_TEST,
+ PARTICLE_BIRD_FRONT,
+ PARTICLE_RAINDROP_2D,
+
+ MAX_PARTICLES,
+ PARTICLE_FIRST = PARTICLE_SPARK,
+ PARTICLE_LAST = PARTICLE_RAINDROP_2D
+};
+
+enum
+{
+ ZCHECK_FIRST = BIT(0),
+ ZCHECK_STEP = BIT(1),
+ DRAW_OPAQUE = BIT(2),
+ SCREEN_TRAIL = BIT(3),
+ SPEED_TRAIL = BIT(4),
+ RAND_VERT_V = BIT(5),
+ CYCLE_ANIM = BIT(6),
+ DRAW_DARK = BIT(7),
+ VERT_TRAIL = BIT(8),
+ _FLAG9 = BIT(9), // unused
+ DRAWTOP2D = BIT(10),
+ CLIPOUT2D = BIT(11),
+ ZCHECK_BUMP = BIT(12),
+ ZCHECK_BUMP_FIRST = BIT(13)
+};
+
+
+struct tParticleSystemData
+{
+ tParticleType m_Type;
+ Char m_aName[20];
+ Float m_fCreateRange;
+ Float m_fDefaultInitialRadius;
+ Float m_fExpansionRate;
+ UInt16 m_nZRotationInitialAngle;
+ Int16 m_nZRotationAngleChangeAmount;
+ UInt16 m_nZRotationChangeTime;
+ UInt16 m_nZRadiusChangeTime;
+ Float m_fInitialZRadius;
+ Float m_fZRadiusChangeAmount;
+ UInt16 m_nFadeToBlackTime;
+ Int16 m_nFadeToBlackAmount;
+ UInt8 m_nFadeToBlackInitialIntensity;
+ UInt8 m_nFadeAlphaInitialIntensity;
+ UInt16 m_nFadeAlphaTime;
+ Int16 m_nFadeAlphaAmount;
+ UInt16 m_nStartAnimationFrame;
+ UInt16 m_nFinalAnimationFrame;
+ UInt16 m_nAnimationSpeed;
+ UInt16 m_nRotationSpeed;
+ char _pad1[2];
+ Float m_fGravitationalAcceleration;
+ Int32 m_nFrictionDecceleration;
+ Int32 m_nLifeSpan;
+ Float m_fPositionRandomError;
+ Float m_fVelocityRandomError;
+ Float m_fExpansionRateError;
+ Int32 m_nRotationRateError;
+ UInt32 m_nLifeSpanErrorShape;
+ Float m_fTrailLengthMultiplier;
+ UInt32 Flags;
+ RwRGBA m_RenderColouring;
+ UInt8 m_InitialColorVariation;
+ RwRGBA m_FadeDestinationColor;
+ char _pad2[3];
+ UInt32 m_ColorFadeTime;
+
+ RwRaster **m_ppRaster;
+ CParticle *m_pParticles;
+};
+VALIDATE_SIZE(tParticleSystemData, 0x88);
+
+
+class cParticleSystemMgr
+{
+ enum
+ {
+ CFG_PARAM_PARTICLE_TYPE_NAME = 0,
+ CFG_PARAM_RENDER_COLOURING_R,
+ CFG_PARAM_RENDER_COLOURING_G,
+ CFG_PARAM_RENDER_COLOURING_B,
+ CFG_PARAM_INITIAL_COLOR_VARIATION,
+ CFG_PARAM_FADE_DESTINATION_COLOR_R,
+ CFG_PARAM_FADE_DESTINATION_COLOR_G,
+ CFG_PARAM_FADE_DESTINATION_COLOR_B,
+ CFG_PARAM_COLOR_FADE_TIME,
+ CFG_PARAM_DEFAULT_INITIAL_RADIUS,
+ CFG_PARAM_EXPANSION_RATE,
+ CFG_PARAM_INITIAL_INTENSITY,
+ CFG_PARAM_FADE_TIME,
+ CFG_PARAM_FADE_AMOUNT,
+ CFG_PARAM_INITIAL_ALPHA_INTENSITY,
+ CFG_PARAM_FADE_ALPHA_TIME,
+ CFG_PARAM_FADE_ALPHA_AMOUNT,
+ CFG_PARAM_INITIAL_ANGLE,
+ CFG_PARAM_CHANGE_TIME,
+ CFG_PARAM_ANGLE_CHANGE_AMOUNT,
+ CFG_PARAM_INITIAL_Z_RADIUS,
+ CFG_PARAM_Z_RADIUS_CHANGE_TIME,
+ CFG_PARAM_Z_RADIUS_CHANGE_AMOUNT,
+ CFG_PARAM_ANIMATION_SPEED,
+ CFG_PARAM_START_ANIMATION_FRAME,
+ CFG_PARAM_FINAL_ANIMATION_FRAME,
+ CFG_PARAM_ROTATION_SPEED,
+ CFG_PARAM_GRAVITATIONAL_ACCELERATION,
+ CFG_PARAM_FRICTION_DECCELERATION,
+ CFG_PARAM_LIFE_SPAN,
+ CFG_PARAM_POSITION_RANDOM_ERROR,
+ CFG_PARAM_VELOCITY_RANDOM_ERROR,
+ CFG_PARAM_EXPANSION_RATE_ERROR,
+ CFG_PARAM_ROTATION_RATE_ERROR,
+ CFG_PARAM_LIFE_SPAN_ERROR_SHAPE,
+ CFG_PARAM_TRAIL_LENGTH_MULTIPLIER,
+ CFG_PARAM_PARTICLE_CREATE_RANGE,
+ CFG_PARAM_FLAGS,
+
+ MAX_CFG_PARAMS,
+ CFG_PARAM_FIRST = CFG_PARAM_PARTICLE_TYPE_NAME,
+ CFG_PARAM_LAST = CFG_PARAM_FLAGS
+ };
+
+public:
+ tParticleSystemData m_aParticles[MAX_PARTICLES];
+
+ cParticleSystemMgr() { ctor(); } void ctor();
+
+ void Initialise();
+ void LoadParticleData();
+ //void RangeCheck(tParticleSystemData *pData);
+};
+
+VALIDATE_SIZE(cParticleSystemMgr, 0x2420);
+
+extern cParticleSystemMgr mod_ParticleSystemManager; \ No newline at end of file