mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-17 03:29:00 +00:00
206 lines
No EOL
5.2 KiB
C++
206 lines
No EOL
5.2 KiB
C++
#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; |