mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-16 01:29:02 +00:00
commit
0acade08ca
4 changed files with 444 additions and 458 deletions
|
@ -590,7 +590,8 @@ void CGame::ShutDownForRestart(void)
|
||||||
CStreaming::ms_disableStreaming = false;
|
CStreaming::ms_disableStreaming = false;
|
||||||
CRadar::RemoveRadarSections();
|
CRadar::RemoveRadarSections();
|
||||||
FrontEndMenuManager.UnloadTextures();
|
FrontEndMenuManager.UnloadTextures();
|
||||||
CParticleObject::RemoveAllParticleObjects();
|
CParticleObject::RemoveAllExpireableParticleObjects();
|
||||||
|
//CWaterCreatures::RemoveAll(); //TODO VC
|
||||||
CSetPieces::Init();
|
CSetPieces::Init();
|
||||||
CPedType::Shutdown();
|
CPedType::Shutdown();
|
||||||
CSpecialFX::Shutdown();
|
CSpecialFX::Shutdown();
|
||||||
|
|
|
@ -686,15 +686,12 @@ CEntity::AddSteamsFromGround(CVector *unused)
|
||||||
case 4:
|
case 4:
|
||||||
CParticleObject::AddObject(POBJECT_DARK_SMOKE, pos, effect->particle.dir, effect->particle.scale, false);
|
CParticleObject::AddObject(POBJECT_DARK_SMOKE, pos, effect->particle.dir, effect->particle.scale, false);
|
||||||
break;
|
break;
|
||||||
// TODO(MIAMI): enable this once we have the particle objects
|
|
||||||
/*
|
|
||||||
case 5:
|
case 5:
|
||||||
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_VERT, pos, effect->particle.dir, effect->particle.scale, false);
|
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_VERT, pos, effect->particle.dir, effect->particle.scale, false);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_HORIZ, pos, effect->particle.dir, effect->particle.scale, false);
|
CParticleObject::AddObject(POBJECT_WATER_FOUNTAIN_HORIZ, pos, effect->particle.dir, effect->particle.scale, false);
|
||||||
break;
|
break;
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ CAudioHydrant::Remove(CParticleObject *particleobject)
|
||||||
{
|
{
|
||||||
DMAudio.DestroyEntity(List[i].AudioEntity);
|
DMAudio.DestroyEntity(List[i].AudioEntity);
|
||||||
List[i].AudioEntity = AEHANDLE_NONE;
|
List[i].AudioEntity = AEHANDLE_NONE;
|
||||||
List[i].pParticleObject = NULL;
|
List[i].pParticleObject = nil;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,8 +59,8 @@ CParticleObject::CParticleObject() :
|
||||||
CPlaceable(),
|
CPlaceable(),
|
||||||
m_nFrameCounter(0),
|
m_nFrameCounter(0),
|
||||||
m_nState(POBJECTSTATE_INITIALISED),
|
m_nState(POBJECTSTATE_INITIALISED),
|
||||||
m_pNext(NULL),
|
m_pNext(nil),
|
||||||
m_pPrev(NULL),
|
m_pPrev(nil),
|
||||||
m_nRemoveTimer(0)
|
m_nRemoveTimer(0)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -75,20 +75,20 @@ CParticleObject::~CParticleObject()
|
||||||
void
|
void
|
||||||
CParticleObject::Initialise()
|
CParticleObject::Initialise()
|
||||||
{
|
{
|
||||||
pCloseListHead = NULL;
|
pCloseListHead = nil;
|
||||||
pFarListHead = NULL;
|
pFarListHead = nil;
|
||||||
|
|
||||||
pUnusedListHead = &gPObjectArray[0];
|
pUnusedListHead = &gPObjectArray[0];
|
||||||
|
|
||||||
for ( int32 i = 0; i < MAX_PARTICLEOBJECTS; i++ )
|
for ( int32 i = 0; i < MAX_PARTICLEOBJECTS; i++ )
|
||||||
{
|
{
|
||||||
if ( i == 0 )
|
if ( i == 0 )
|
||||||
gPObjectArray[i].m_pPrev = NULL;
|
gPObjectArray[i].m_pPrev = nil;
|
||||||
else
|
else
|
||||||
gPObjectArray[i].m_pPrev = &gPObjectArray[i - 1];
|
gPObjectArray[i].m_pPrev = &gPObjectArray[i - 1];
|
||||||
|
|
||||||
if ( i == MAX_PARTICLEOBJECTS-1 )
|
if ( i == MAX_PARTICLEOBJECTS-1 )
|
||||||
gPObjectArray[i].m_pNext = NULL;
|
gPObjectArray[i].m_pNext = nil;
|
||||||
else
|
else
|
||||||
gPObjectArray[i].m_pNext = &gPObjectArray[i + 1];
|
gPObjectArray[i].m_pNext = &gPObjectArray[i + 1];
|
||||||
|
|
||||||
|
@ -124,12 +124,12 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
CParticleObject *pobj = pUnusedListHead;
|
CParticleObject *pobj = pUnusedListHead;
|
||||||
|
|
||||||
ASSERT(pobj != NULL);
|
ASSERT(pobj != nil);
|
||||||
|
|
||||||
if ( pobj == NULL )
|
if ( pobj == nil )
|
||||||
{
|
{
|
||||||
printf("Error: No particle objects available!\n");
|
printf("Error: No particle objects available!\n");
|
||||||
return NULL;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
MoveToList(&pUnusedListHead, &pCloseListHead, pobj);
|
MoveToList(&pUnusedListHead, &pCloseListHead, pobj);
|
||||||
|
@ -147,7 +147,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
|
|
||||||
pobj->m_bRemove = remove;
|
pobj->m_bRemove = remove;
|
||||||
|
|
||||||
pobj->m_pParticle = NULL;
|
pobj->m_pParticle = nil;
|
||||||
|
|
||||||
if ( lifeTime != 0 )
|
if ( lifeTime != 0 )
|
||||||
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds() + lifeTime;
|
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds() + lifeTime;
|
||||||
|
@ -162,19 +162,13 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
pobj->m_fSize = size;
|
pobj->m_fSize = size;
|
||||||
pobj->m_fRandVal = 0.0f;
|
pobj->m_fRandVal = 0.0f;
|
||||||
|
|
||||||
if ( type <= POBJECT_CATALINAS_SHOTGUNFLASH )
|
|
||||||
{
|
|
||||||
switch ( type )
|
switch ( type )
|
||||||
{
|
{
|
||||||
case POBJECT_PAVEMENT_STEAM:
|
case POBJECT_PAVEMENT_STEAM:
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 3;
|
pobj->m_nSkipFrames = 3;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 8;
|
pobj->m_nCreationChance = 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -192,11 +186,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 3;
|
pobj->m_nSkipFrames = 3;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 8;
|
pobj->m_nCreationChance = 8;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -214,20 +204,35 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
pobj->m_ParticleType = PARTICLE_STEAM_NY;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 3;
|
pobj->m_nSkipFrames = 3;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 8;
|
pobj->m_nCreationChance = 8;
|
||||||
pobj->m_Color = CRGBA(16, 16, 16, 255);
|
pobj->m_Color = CRGBA(16, 16, 16, 255);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case POBJECT_WATER_FOUNTAIN_VERT:
|
||||||
|
{
|
||||||
|
pobj->m_ParticleType = PARTICLE_WATER_HYDRANT;
|
||||||
|
pobj->m_nNumEffectCycles = 1;
|
||||||
|
pobj->m_nSkipFrames = 1;
|
||||||
|
pobj->m_nCreationChance = 0;
|
||||||
|
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.1f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case POBJECT_WATER_FOUNTAIN_HORIZ:
|
||||||
|
{
|
||||||
|
pobj->m_ParticleType = PARTICLE_WATER_HYDRANT;
|
||||||
|
pobj->m_nNumEffectCycles = 1;
|
||||||
|
pobj->m_nSkipFrames = 1;
|
||||||
|
pobj->m_nCreationChance = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case POBJECT_FIRE_HYDRANT:
|
case POBJECT_FIRE_HYDRANT:
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_WATER_HYDRANT;
|
pobj->m_ParticleType = PARTICLE_WATER_HYDRANT;
|
||||||
pobj->m_nNumEffectCycles = 4;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
pobj->m_nSkipFrames = 1;
|
pobj->m_nSkipFrames = 1;
|
||||||
pobj->m_nCreationChance = 0;
|
pobj->m_nCreationChance = 0;
|
||||||
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.3f);
|
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.3f);
|
||||||
|
@ -241,11 +246,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_CAR_SPLASH;
|
pobj->m_ParticleType = PARTICLE_CAR_SPLASH;
|
||||||
pobj->m_nNumEffectCycles = 0;
|
pobj->m_nNumEffectCycles = 0;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 1;
|
pobj->m_nSkipFrames = 1;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 3;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 0;
|
pobj->m_nCreationChance = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -253,11 +254,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
case POBJECT_SPLASHES_AROUND:
|
case POBJECT_SPLASHES_AROUND:
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_SPLASH;
|
pobj->m_ParticleType = PARTICLE_SPLASH;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nNumEffectCycles = 15;
|
pobj->m_nNumEffectCycles = 15;
|
||||||
#else
|
|
||||||
pobj->m_nNumEffectCycles = 30;
|
|
||||||
#endif
|
|
||||||
pobj->m_nSkipFrames = 2;
|
pobj->m_nSkipFrames = 2;
|
||||||
pobj->m_nCreationChance = 0;
|
pobj->m_nCreationChance = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -267,11 +264,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_FLAME;
|
pobj->m_ParticleType = PARTICLE_FLAME;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 2;
|
pobj->m_nSkipFrames = 2;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 2;
|
pobj->m_nCreationChance = 2;
|
||||||
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
|
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
|
||||||
break;
|
break;
|
||||||
|
@ -281,11 +274,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_FLAME;
|
pobj->m_ParticleType = PARTICLE_FLAME;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 2;
|
pobj->m_nSkipFrames = 2;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 4;
|
pobj->m_nCreationChance = 4;
|
||||||
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
|
pobj->m_vecTarget = CVector(0.0f, 0.0f, 0.0f);
|
||||||
break;
|
break;
|
||||||
|
@ -315,11 +304,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_EXPLOSION_MEDIUM;
|
pobj->m_ParticleType = PARTICLE_EXPLOSION_MEDIUM;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
pobj->m_nSkipFrames = 3;
|
pobj->m_nSkipFrames = 3;
|
||||||
#else
|
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
#endif
|
|
||||||
pobj->m_nCreationChance = 2;
|
pobj->m_nCreationChance = 2;
|
||||||
pobj->m_fRandVal = 0.01f;
|
pobj->m_fRandVal = 0.01f;
|
||||||
break;
|
break;
|
||||||
|
@ -340,7 +325,7 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
pobj->m_ParticleType = PARTICLE_FLAME;
|
pobj->m_ParticleType = PARTICLE_FLAME;
|
||||||
pobj->m_nNumEffectCycles = 1;
|
pobj->m_nNumEffectCycles = 1;
|
||||||
pobj->m_nSkipFrames = 1;
|
pobj->m_nSkipFrames = 1;
|
||||||
pobj->m_nCreationChance = 2;
|
pobj->m_nCreationChance = 0;
|
||||||
pobj->m_fRandVal = 0.1f;
|
pobj->m_fRandVal = 0.1f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -364,21 +349,50 @@ CParticleObject::AddObject(uint16 type, CVector const &pos, CVector const &targe
|
||||||
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds();
|
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case POBJECT_CATALINAS_GUNFLASH:
|
return pobj;
|
||||||
case POBJECT_CATALINAS_SHOTGUNFLASH:
|
}
|
||||||
|
|
||||||
|
CParticleObject *
|
||||||
|
CParticleObject::AddObject(tParticleType type, CVector const &pos, CVector const &target, float size, uint32 lifeTime, uint8 numEffectCycles, uint8 skipFrames, uint16 creationChance, uint8 remove)
|
||||||
|
{
|
||||||
|
CParticleObject *pobj = pUnusedListHead;
|
||||||
|
|
||||||
|
ASSERT(pobj != nil);
|
||||||
|
|
||||||
|
if ( pobj == nil )
|
||||||
{
|
{
|
||||||
pobj->m_ParticleType = PARTICLE_GUNFLASH_NOANIM;
|
printf("Error: No particle objects available!\n");
|
||||||
pobj->m_nNumEffectCycles = 1;
|
return nil;
|
||||||
pobj->m_nSkipFrames = 1;
|
|
||||||
pobj->m_nCreationChance = 0;
|
|
||||||
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds();
|
|
||||||
pobj->m_vecTarget.Normalise();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MoveToList(&pUnusedListHead, &pCloseListHead, pobj);
|
||||||
|
|
||||||
|
pobj->m_nState = POBJECTSTATE_UPDATE_CLOSE;
|
||||||
|
pobj->m_Type = (eParticleObjectType)-1;
|
||||||
|
pobj->m_ParticleType = type;
|
||||||
|
|
||||||
|
pobj->SetPosition(pos);
|
||||||
|
pobj->m_vecTarget = target;
|
||||||
|
|
||||||
|
pobj->m_nNumEffectCycles = numEffectCycles;
|
||||||
|
pobj->m_nSkipFrames = skipFrames;
|
||||||
|
pobj->m_nCreationChance = creationChance;
|
||||||
|
pobj->m_nFrameCounter = 0;
|
||||||
|
|
||||||
|
pobj->m_bRemove = remove;
|
||||||
|
|
||||||
|
if ( lifeTime != 0 )
|
||||||
|
pobj->m_nRemoveTimer = CTimer::GetTimeInMilliseconds() + lifeTime;
|
||||||
|
else
|
||||||
|
pobj->m_nRemoveTimer = 0;
|
||||||
|
|
||||||
|
pobj->m_Color.alpha = 0;
|
||||||
|
|
||||||
|
pobj->m_fSize = size;
|
||||||
|
pobj->m_fRandVal = 0.0f;
|
||||||
|
|
||||||
return pobj;
|
return pobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,7 +422,7 @@ CParticleObject::UpdateAll(void)
|
||||||
{
|
{
|
||||||
CParticleObject *pobj = pCloseListHead;
|
CParticleObject *pobj = pCloseListHead;
|
||||||
CParticleObject *nextpobj;
|
CParticleObject *nextpobj;
|
||||||
if ( pobj != NULL )
|
if ( pobj != nil )
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -416,7 +430,7 @@ CParticleObject::UpdateAll(void)
|
||||||
pobj->UpdateClose();
|
pobj->UpdateClose();
|
||||||
pobj = nextpobj;
|
pobj = nextpobj;
|
||||||
}
|
}
|
||||||
while ( nextpobj != NULL );
|
while ( nextpobj != nil );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +440,7 @@ CParticleObject::UpdateAll(void)
|
||||||
|
|
||||||
CParticleObject *pobj = pFarListHead;
|
CParticleObject *pobj = pFarListHead;
|
||||||
CParticleObject *nextpobj;
|
CParticleObject *nextpobj;
|
||||||
if ( pobj != NULL )
|
if ( pobj != nil )
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -442,7 +456,7 @@ CParticleObject::UpdateAll(void)
|
||||||
|
|
||||||
pobj = nextpobj;
|
pobj = nextpobj;
|
||||||
}
|
}
|
||||||
while ( nextpobj != NULL );
|
while ( nextpobj != nil );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -497,7 +511,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
flamevel.y = vel.y;
|
flamevel.y = vel.y;
|
||||||
flamevel.z = CGeneral::GetRandomNumberInRange(0.0125f*size, 0.1f*size);
|
flamevel.z = CGeneral::GetRandomNumberInRange(0.0125f*size, 0.1f*size);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_FLAME, pos, flamevel, NULL, size);
|
CParticle::AddParticle(PARTICLE_FLAME, pos, flamevel, nil, size);
|
||||||
|
|
||||||
|
|
||||||
CVector possmoke = pos;
|
CVector possmoke = pos;
|
||||||
|
@ -528,7 +542,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
float flamesize = 0.8f*size;
|
float flamesize = 0.8f*size;
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_FLAME, pos, flamevel, NULL, flamesize);
|
CParticle::AddParticle(PARTICLE_FLAME, pos, flamevel, nil, flamesize);
|
||||||
|
|
||||||
|
|
||||||
for ( int32 i = 0; i < 4; i++ )
|
for ( int32 i = 0; i < 4; i++ )
|
||||||
|
@ -547,7 +561,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
case POBJECT_FIREBALL_AND_SMOKE:
|
case POBJECT_FIREBALL_AND_SMOKE:
|
||||||
{
|
{
|
||||||
if ( this->m_pParticle == NULL )
|
if ( this->m_pParticle == nil )
|
||||||
{
|
{
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
CVector vel = this->m_vecTarget;
|
CVector vel = this->m_vecTarget;
|
||||||
|
@ -555,7 +569,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
CVector expvel = 1.2f*vel;
|
CVector expvel = 1.2f*vel;
|
||||||
float expsize = 1.2f*size;
|
float expsize = 1.2f*size;
|
||||||
this->m_pParticle = CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, expvel, NULL, expsize);
|
this->m_pParticle = CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, expvel, nil, expsize);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -572,7 +586,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
fireballvel.y += CGeneral::GetRandomNumberInRange(-veloffset.y, veloffset.y);
|
fireballvel.y += CGeneral::GetRandomNumberInRange(-veloffset.y, veloffset.y);
|
||||||
fireballvel.z += CGeneral::GetRandomNumberInRange(-veloffset.z, veloffset.z);
|
fireballvel.z += CGeneral::GetRandomNumberInRange(-veloffset.z, veloffset.z);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_FIREBALL_SMOKE, pos, fireballvel, NULL, size);
|
CParticle::AddParticle(PARTICLE_FIREBALL_SMOKE, pos, fireballvel, nil, size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,13 +595,13 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
case POBJECT_ROCKET_TRAIL:
|
case POBJECT_ROCKET_TRAIL:
|
||||||
{
|
{
|
||||||
if ( this->m_pParticle == NULL )
|
if ( this->m_pParticle == nil )
|
||||||
{
|
{
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
CVector vel = this->m_vecTarget;
|
CVector vel = this->m_vecTarget;
|
||||||
float size = this->m_fSize;
|
float size = this->m_fSize;
|
||||||
|
|
||||||
this->m_pParticle = CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, vel, NULL, size);
|
this->m_pParticle = CParticle::AddParticle(PARTICLE_EXPLOSION_MEDIUM, pos, vel, nil, size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -600,7 +614,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
|
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
|
||||||
{
|
{
|
||||||
CParticle::AddParticle(PARTICLE_FIREBALL_SMOKE, pos, fireballvel, NULL, fireballsize);
|
CParticle::AddParticle(PARTICLE_FIREBALL_SMOKE, pos, fireballvel, nil, fireballsize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,7 +636,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
if ( vel.z != 0.0f )
|
if ( vel.z != 0.0f )
|
||||||
vel.z += CGeneral::GetRandomNumberInRange(-this->m_fRandVal, this->m_fRandVal);
|
vel.z += CGeneral::GetRandomNumberInRange(-this->m_fRandVal, this->m_fRandVal);
|
||||||
|
|
||||||
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), vel, NULL, this->m_fSize,
|
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), vel, nil, this->m_fSize,
|
||||||
CGeneral::GetRandomNumberInRange(-6.0f, 6.0f));
|
CGeneral::GetRandomNumberInRange(-6.0f, 6.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,7 +645,6 @@ void CParticleObject::UpdateClose(void)
|
||||||
|
|
||||||
case POBJECT_PED_WATER_SPLASH:
|
case POBJECT_PED_WATER_SPLASH:
|
||||||
{
|
{
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
CRGBA colorsmoke(255, 255, 255, 196);
|
CRGBA colorsmoke(255, 255, 255, 196);
|
||||||
|
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
|
@ -649,9 +662,9 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashpos = pos + CVector(0.75f*fCos, 0.75f*fSin, 0.0f);
|
splashpos = pos + CVector(0.75f*fCos, 0.75f*fSin, 0.0f);
|
||||||
splashvel = vel + CVector(0.05f*fCos, 0.05f*fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
splashvel = vel + CVector(0.05f*fCos, 0.05f*fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -659,9 +672,9 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel = vel + CVector(0.05f*fCos, 0.05f*-fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
splashvel = vel + CVector(0.05f*fCos, 0.05f*-fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
||||||
|
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -669,18 +682,18 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel = vel + CVector(0.05f*-fCos, 0.05f*fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
splashvel = vel + CVector(0.05f*-fCos, 0.05f*fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
||||||
|
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
splashpos = pos + CVector(0.75f*-fCos, 0.75f*-fSin, 0.0f);
|
splashpos = pos + CVector(0.75f*-fCos, 0.75f*-fSin, 0.0f);
|
||||||
splashvel = vel + CVector(0.05f*-fCos, 0.05f*-fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
splashvel = vel + CVector(0.05f*-fCos, 0.05f*-fSin, CGeneral::GetRandomNumberInRange(0.04f, 0.08f));
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.8f), colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.1f, 0.5f), this->m_Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -700,7 +713,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -710,7 +723,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -720,7 +733,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
|
@ -730,72 +743,15 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.25f, 0.25f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.05f, 0.25f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL,
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CGeneral::GetRandomNumberInRange(0.4f, 1.0f), this->m_Color);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case POBJECT_CAR_WATER_SPLASH:
|
case POBJECT_CAR_WATER_SPLASH:
|
||||||
{
|
{
|
||||||
#ifdef PC_PARTICLE
|
|
||||||
CRGBA colorsmoke(255, 255, 255, 196);
|
CRGBA colorsmoke(255, 255, 255, 196);
|
||||||
|
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
|
@ -819,8 +775,8 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL, size, colorsmoke);
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil, size, colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
|
|
||||||
splashpos = pos + CVector(2.0f*fCos, 2.0f*-fSin, 0.0f);
|
splashpos = pos + CVector(2.0f*fCos, 2.0f*-fSin, 0.0f);
|
||||||
|
@ -829,8 +785,8 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL, size, colorsmoke);
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil, size, colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
splashpos = pos + CVector(2.0f*-fCos, 2.0f*fSin, 0.0f);
|
splashpos = pos + CVector(2.0f*-fCos, 2.0f*fSin, 0.0f);
|
||||||
splashvel = vel;
|
splashvel = vel;
|
||||||
|
@ -838,8 +794,8 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL, size, colorsmoke);
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil, size, colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
splashpos = pos + CVector(2.0f*-fCos, 2.0f*-fSin, 0.0f);
|
splashpos = pos + CVector(2.0f*-fCos, 2.0f*-fSin, 0.0f);
|
||||||
splashvel = vel;
|
splashvel = vel;
|
||||||
|
@ -847,8 +803,8 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.5f, 0.5f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.01f, 0.03f);
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, NULL, size, colorsmoke);
|
CParticle::AddParticle(PARTICLE_RUBBER_SMOKE, splashpos, splashvel, nil, size, colorsmoke);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( int32 i = 0; i < 1; i++ )
|
for ( int32 i = 0; i < 1; i++ )
|
||||||
|
@ -867,88 +823,30 @@ void CParticleObject::UpdateClose(void)
|
||||||
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fCos;
|
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fCos;
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
splashpos = pos + CVector(1.25f*fCos, 1.25f*-fSin, 0.0f);
|
splashpos = pos + CVector(1.25f*fCos, 1.25f*-fSin, 0.0f);
|
||||||
splashvel = vel;
|
splashvel = vel;
|
||||||
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fCos;
|
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fCos;
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
splashpos = pos + CVector(1.25f*-fCos, 1.25f*fSin, 0.0f);
|
splashpos = pos + CVector(1.25f*-fCos, 1.25f*fSin, 0.0f);
|
||||||
splashvel = vel;
|
splashvel = vel;
|
||||||
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fCos;
|
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fCos;
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 0.0f, this->m_Color);
|
||||||
|
|
||||||
splashpos = pos + CVector(1.25f*-fCos, 1.25f*-fSin, 0.0f);
|
splashpos = pos + CVector(1.25f*-fCos, 1.25f*-fSin, 0.0f);
|
||||||
splashvel = vel;
|
splashvel = vel;
|
||||||
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fCos;
|
splashvel.x += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fCos;
|
||||||
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fSin;
|
splashvel.y += CGeneral::GetRandomNumberInRange(-0.1f, 0.1f) * -fSin;
|
||||||
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
splashvel.z += CGeneral::GetRandomNumberInRange(0.26f, 0.53f);
|
||||||
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, NULL, 0.0f, this->m_Color);
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil, 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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -967,74 +865,118 @@ void CParticleObject::UpdateClose(void)
|
||||||
if ( CGeneral::GetRandomNumber() & 1 )
|
if ( CGeneral::GetRandomNumber() & 1 )
|
||||||
{
|
{
|
||||||
CParticle::AddParticle(PARTICLE_RAIN_SPLASH, splashpos, CVector(0.0f, 0.0f, 0.0f),
|
CParticle::AddParticle(PARTICLE_RAIN_SPLASH, splashpos, CVector(0.0f, 0.0f, 0.0f),
|
||||||
NULL, 0.1f, this->m_Color);
|
nil, 0.1f, this->m_Color);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CParticle::AddParticle(PARTICLE_RAIN_SPLASHUP, splashpos, CVector(0.0f, 0.0f, 0.0f),
|
CParticle::AddParticle(PARTICLE_RAIN_SPLASHUP, splashpos, CVector(0.0f, 0.0f, 0.0f),
|
||||||
NULL, 0.12f, this->m_Color);
|
nil, 0.12f, this->m_Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case POBJECT_CATALINAS_GUNFLASH:
|
case POBJECT_FIRE_HYDRANT:
|
||||||
{
|
{
|
||||||
CRGBA flashcolor(120, 120, 120, 255);
|
|
||||||
|
|
||||||
CVector vel = this->m_vecTarget;
|
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
|
CVector vel = this->m_vecTarget;
|
||||||
|
|
||||||
float size = 1.0f;
|
if ( (TheCamera.GetPosition() - pos).Magnitude() > 5.0f )
|
||||||
if ( this->m_fSize != 0.0f )
|
{
|
||||||
size = this->m_fSize;
|
for ( int32 i = 0; i < 1; i++ )
|
||||||
|
{
|
||||||
|
int32 angle = 180 * i;
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, pos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.12f*size, flashcolor);
|
float fCos = CParticle::Cos(angle);
|
||||||
|
float fSin = CParticle::Sin(angle);
|
||||||
|
|
||||||
pos += size * (0.06f * vel);
|
CVector splashpos, splashvel;
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, pos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.08f*size, flashcolor);
|
|
||||||
|
|
||||||
pos += size * (0.04f * vel);
|
splashpos = pos + CVector(0.01f*fCos, 0.01f*fSin, 0.0f);
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, pos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.04f*size, flashcolor);
|
splashvel = vel + CVector(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
CVector smokepos = this->GetPosition();
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
CVector smokevel = 0.1f * vel;
|
CGeneral::GetRandomNumberInRange(0.005f, 0.0075f), this->m_Color, 0, 0, 1, 300);
|
||||||
CParticle::AddParticle(PARTICLE_GUNSMOKE2, smokepos, smokevel, NULL, 0.005f*size);
|
|
||||||
|
splashpos = pos + CVector(0.01f*fCos, 0.01f*-fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.005f, 0.0075f), this->m_Color, 0, 0, 1, 300);
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.01f*-fCos, 0.01f*fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.005f, 0.0075f), this->m_Color, 0, 0, 1, 300);
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.01f*-fCos, 0.01f*-fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.0f, 0.0f, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.005f, 0.0075f), this->m_Color, 0, 0, 1, 300);
|
||||||
|
}
|
||||||
|
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
|
||||||
|
{
|
||||||
|
CParticle::AddParticle(this->m_ParticleType, pos, vel, nil, 0.0f, this->m_Color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case POBJECT_CATALINAS_SHOTGUNFLASH:
|
case POBJECT_WATER_FOUNTAIN_VERT:
|
||||||
{
|
{
|
||||||
CRGBA flashcolor(120, 120, 120, 255);
|
CVector pos = this->GetPosition();
|
||||||
|
|
||||||
CVector vel = this->m_vecTarget;
|
CVector vel = this->m_vecTarget;
|
||||||
|
|
||||||
float size = 1.0f;
|
for ( int32 i = 0; i < 2; i++ )
|
||||||
if ( this->m_fSize != 0.0f )
|
{
|
||||||
size = this->m_fSize;
|
int32 angle = 180 * i;
|
||||||
|
|
||||||
|
float fCos = CParticle::Cos(angle);
|
||||||
|
float fSin = CParticle::Sin(angle);
|
||||||
|
|
||||||
|
CVector splashpos, splashvel;
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.015f*fCos, 0.015f*fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.015f*fCos, 0.015f*fSin, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.001f, 0.005f), this->m_Color, 0, 0, 1, 1000);
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.015f*fCos, 0.015f*-fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.015f*fCos, 0.015f*-fSin, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.001f, 0.005f), this->m_Color, 0, 0, 1, 1000);
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.015f*-fCos, 0.015f*fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.015f*-fCos, 0.015f*fSin, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.001f, 0.005f), this->m_Color, 0, 0, 1, 1000);
|
||||||
|
|
||||||
|
splashpos = pos + CVector(0.015f*-fCos, 0.015f*-fSin, 0.0f);
|
||||||
|
splashvel = vel + CVector(0.015f*-fCos, 0.015f*-fSin, CGeneral::GetRandomNumberInRange(0.004f, 0.008f));
|
||||||
|
|
||||||
|
CParticle::AddParticle(PARTICLE_SPLASH, splashpos, splashvel, nil,
|
||||||
|
CGeneral::GetRandomNumberInRange(0.001f, 0.005f), this->m_Color, 0, 0, 1, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case POBJECT_WATER_FOUNTAIN_HORIZ:
|
||||||
|
{
|
||||||
CVector pos = this->GetPosition();
|
CVector pos = this->GetPosition();
|
||||||
|
CVector vel = this->m_vecTarget;
|
||||||
|
|
||||||
CVector velstep = size * (0.1f * vel);
|
for ( int32 i = 0; i < 3; i++ )
|
||||||
CVector flashpos = pos;
|
{
|
||||||
|
CParticle::AddParticle(PARTICLE_CAR_SPLASH, pos, vel, nil, 0.001f, this->m_Color, 0, 0, 1, 1000);
|
||||||
flashpos += velstep;
|
}
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, flashpos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.0f, flashcolor);
|
|
||||||
|
|
||||||
flashpos += velstep;
|
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, flashpos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.15f*size, flashcolor);
|
|
||||||
|
|
||||||
flashpos += velstep;
|
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, flashpos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.2f*size, flashcolor);
|
|
||||||
|
|
||||||
|
|
||||||
CParticle::AddParticle(PARTICLE_GUNFLASH, pos, CVector(0.0f, 0.0f, 0.0f), NULL, 0.0f, flashcolor);
|
|
||||||
|
|
||||||
CVector smokepos = this->GetPosition();
|
|
||||||
CVector smokevel = 0.1f*vel;
|
|
||||||
CParticle::AddParticle(PARTICLE_GUNSMOKE2, smokepos, smokevel, NULL, 0.1f*size);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1056,7 +998,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
if ( vel.z != 0.0f )
|
if ( vel.z != 0.0f )
|
||||||
vel.z += CGeneral::GetRandomNumberInRange(-this->m_fRandVal, this->m_fRandVal);
|
vel.z += CGeneral::GetRandomNumberInRange(-this->m_fRandVal, this->m_fRandVal);
|
||||||
|
|
||||||
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), vel, NULL,
|
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), vel, nil,
|
||||||
this->m_fSize, this->m_Color);
|
this->m_fSize, this->m_Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1064,7 +1006,7 @@ void CParticleObject::UpdateClose(void)
|
||||||
{
|
{
|
||||||
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
|
for ( int32 i = 0; i < this->m_nNumEffectCycles; i++ )
|
||||||
{
|
{
|
||||||
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), this->m_vecTarget, NULL,
|
CParticle::AddParticle(this->m_ParticleType, this->GetPosition(), this->m_vecTarget, nil,
|
||||||
this->m_fSize, this->m_Color);
|
this->m_fSize, this->m_Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1108,15 +1050,15 @@ CParticleObject::UpdateFar(void)
|
||||||
bool
|
bool
|
||||||
CParticleObject::SaveParticle(uint8 *buffer, uint32 *length)
|
CParticleObject::SaveParticle(uint8 *buffer, uint32 *length)
|
||||||
{
|
{
|
||||||
ASSERT( buffer != NULL );
|
ASSERT( buffer != nil );
|
||||||
ASSERT( length != NULL );
|
ASSERT( length != nil );
|
||||||
|
|
||||||
int32 numObjects = 0;
|
int32 numObjects = 0;
|
||||||
|
|
||||||
for ( CParticleObject *p = pCloseListHead; p != NULL; p = p->m_pNext )
|
for ( CParticleObject *p = pCloseListHead; p != nil; p = p->m_pNext )
|
||||||
++numObjects;
|
++numObjects;
|
||||||
|
|
||||||
for ( CParticleObject *p = pFarListHead; p != NULL; p = p->m_pNext )
|
for ( CParticleObject *p = pFarListHead; p != nil; p = p->m_pNext )
|
||||||
++numObjects;
|
++numObjects;
|
||||||
|
|
||||||
*(int32 *)buffer = numObjects;
|
*(int32 *)buffer = numObjects;
|
||||||
|
@ -1125,7 +1067,7 @@ CParticleObject::SaveParticle(uint8 *buffer, uint32 *length)
|
||||||
int32 objectsLength = sizeof(CParticleObject) * (numObjects + 1);
|
int32 objectsLength = sizeof(CParticleObject) * (numObjects + 1);
|
||||||
int32 dataLength = objectsLength + sizeof(int32);
|
int32 dataLength = objectsLength + sizeof(int32);
|
||||||
|
|
||||||
for ( CParticleObject *p = pCloseListHead; p != NULL; p = p->m_pNext )
|
for ( CParticleObject *p = pCloseListHead; p != nil; p = p->m_pNext )
|
||||||
{
|
{
|
||||||
#if 0 // todo better
|
#if 0 // todo better
|
||||||
*(CParticleObject*)buffer = *p;
|
*(CParticleObject*)buffer = *p;
|
||||||
|
@ -1135,7 +1077,7 @@ CParticleObject::SaveParticle(uint8 *buffer, uint32 *length)
|
||||||
buffer += sizeof(CParticleObject);
|
buffer += sizeof(CParticleObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( CParticleObject *p = pFarListHead; p != NULL; p = p->m_pNext )
|
for ( CParticleObject *p = pFarListHead; p != nil; p = p->m_pNext )
|
||||||
{
|
{
|
||||||
#if 0 // todo better
|
#if 0 // todo better
|
||||||
*(CParticleObject*)buffer = *p;
|
*(CParticleObject*)buffer = *p;
|
||||||
|
@ -1153,7 +1095,7 @@ CParticleObject::SaveParticle(uint8 *buffer, uint32 *length)
|
||||||
bool
|
bool
|
||||||
CParticleObject::LoadParticle(uint8 *buffer, uint32 length)
|
CParticleObject::LoadParticle(uint8 *buffer, uint32 length)
|
||||||
{
|
{
|
||||||
ASSERT( buffer != NULL );
|
ASSERT( buffer != nil );
|
||||||
|
|
||||||
RemoveAllParticleObjects();
|
RemoveAllParticleObjects();
|
||||||
|
|
||||||
|
@ -1174,7 +1116,7 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length)
|
||||||
CParticleObject *src = (CParticleObject *)buffer;
|
CParticleObject *src = (CParticleObject *)buffer;
|
||||||
buffer += sizeof(CParticleObject);
|
buffer += sizeof(CParticleObject);
|
||||||
|
|
||||||
if ( dst == NULL )
|
if ( dst == nil )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
MoveToList(&pUnusedListHead, &pCloseListHead, dst);
|
MoveToList(&pUnusedListHead, &pCloseListHead, dst);
|
||||||
|
@ -1186,7 +1128,7 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length)
|
||||||
dst->m_vecTarget = src->m_vecTarget;
|
dst->m_vecTarget = src->m_vecTarget;
|
||||||
dst->m_nFrameCounter = src->m_nFrameCounter;
|
dst->m_nFrameCounter = src->m_nFrameCounter;
|
||||||
dst->m_bRemove = src->m_bRemove;
|
dst->m_bRemove = src->m_bRemove;
|
||||||
dst->m_pParticle = NULL;
|
dst->m_pParticle = nil;
|
||||||
dst->m_nRemoveTimer = src->m_nRemoveTimer;
|
dst->m_nRemoveTimer = src->m_nRemoveTimer;
|
||||||
dst->m_Color = src->m_Color;
|
dst->m_Color = src->m_Color;
|
||||||
dst->m_fSize = src->m_fSize;
|
dst->m_fSize = src->m_fSize;
|
||||||
|
@ -1201,23 +1143,65 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CParticleObject::RemoveAllExpireableParticleObjects(void)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
CParticleObject *pobj = pCloseListHead;
|
||||||
|
CParticleObject *nextpobj;
|
||||||
|
if ( pobj != nil )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
nextpobj = pobj->m_pNext;
|
||||||
|
if ( pobj->m_nRemoveTimer != 0 )
|
||||||
|
{
|
||||||
|
MoveToList(&pCloseListHead, &pUnusedListHead, pobj);
|
||||||
|
pobj->m_nState = POBJECTSTATE_FREE;
|
||||||
|
}
|
||||||
|
pobj = nextpobj;
|
||||||
|
}
|
||||||
|
while ( nextpobj != nil );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
CParticleObject *pobj = pFarListHead;
|
||||||
|
CParticleObject *nextpobj;
|
||||||
|
if ( pobj != nil )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
nextpobj = pobj->m_pNext;
|
||||||
|
if ( pobj->m_nRemoveTimer != 0 )
|
||||||
|
{
|
||||||
|
MoveToList(&pFarListHead, &pUnusedListHead, pobj);
|
||||||
|
pobj->m_nState = POBJECTSTATE_FREE;
|
||||||
|
}
|
||||||
|
pobj = nextpobj;
|
||||||
|
}
|
||||||
|
while ( nextpobj != nil );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CParticleObject::RemoveAllParticleObjects(void)
|
CParticleObject::RemoveAllParticleObjects(void)
|
||||||
{
|
{
|
||||||
pUnusedListHead = &gPObjectArray[0];
|
pUnusedListHead = &gPObjectArray[0];
|
||||||
|
|
||||||
pCloseListHead = NULL;
|
pCloseListHead = nil;
|
||||||
pFarListHead = NULL;
|
pFarListHead = nil;
|
||||||
|
|
||||||
for ( int32 i = 0; i < MAX_PARTICLEOBJECTS; i++ )
|
for ( int32 i = 0; i < MAX_PARTICLEOBJECTS; i++ )
|
||||||
{
|
{
|
||||||
if ( i == 0 )
|
if ( i == 0 )
|
||||||
gPObjectArray[i].m_pPrev = NULL;
|
gPObjectArray[i].m_pPrev = nil;
|
||||||
else
|
else
|
||||||
gPObjectArray[i].m_pPrev = &gPObjectArray[i - 1];
|
gPObjectArray[i].m_pPrev = &gPObjectArray[i - 1];
|
||||||
|
|
||||||
if ( i == MAX_PARTICLEOBJECTS-1 )
|
if ( i == MAX_PARTICLEOBJECTS-1 )
|
||||||
gPObjectArray[i].m_pNext = NULL;
|
gPObjectArray[i].m_pNext = nil;
|
||||||
else
|
else
|
||||||
gPObjectArray[i].m_pNext = &gPObjectArray[i + 1];
|
gPObjectArray[i].m_pNext = &gPObjectArray[i + 1];
|
||||||
|
|
||||||
|
@ -1228,20 +1212,20 @@ CParticleObject::RemoveAllParticleObjects(void)
|
||||||
void
|
void
|
||||||
CParticleObject::MoveToList(CParticleObject **from, CParticleObject **to, CParticleObject *obj)
|
CParticleObject::MoveToList(CParticleObject **from, CParticleObject **to, CParticleObject *obj)
|
||||||
{
|
{
|
||||||
ASSERT( from != NULL );
|
ASSERT( from != nil );
|
||||||
ASSERT( to != NULL );
|
ASSERT( to != nil );
|
||||||
ASSERT( obj != NULL );
|
ASSERT( obj != nil );
|
||||||
|
|
||||||
if ( obj->m_pPrev == NULL )
|
if ( obj->m_pPrev == nil )
|
||||||
{
|
{
|
||||||
*from = obj->m_pNext;
|
*from = obj->m_pNext;
|
||||||
if ( *from )
|
if ( *from )
|
||||||
(*from)->m_pPrev = NULL;
|
(*from)->m_pPrev = nil;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( obj->m_pNext == NULL )
|
if ( obj->m_pNext == nil )
|
||||||
obj->m_pPrev->m_pNext = NULL;
|
obj->m_pPrev->m_pNext = nil;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
obj->m_pNext->m_pPrev = obj->m_pPrev;
|
obj->m_pNext->m_pPrev = obj->m_pPrev;
|
||||||
|
@ -1250,7 +1234,7 @@ CParticleObject::MoveToList(CParticleObject **from, CParticleObject **to, CParti
|
||||||
}
|
}
|
||||||
|
|
||||||
obj->m_pNext = *to;
|
obj->m_pNext = *to;
|
||||||
obj->m_pPrev = NULL;
|
obj->m_pPrev = nil;
|
||||||
*to = obj;
|
*to = obj;
|
||||||
|
|
||||||
if ( obj->m_pNext )
|
if ( obj->m_pNext )
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
#include "ParticleType.h"
|
#include "ParticleType.h"
|
||||||
#include "Placeable.h"
|
#include "Placeable.h"
|
||||||
|
|
||||||
#define MAX_PARTICLEOBJECTS 100
|
#define MAX_PARTICLEOBJECTS 70
|
||||||
#define MAX_AUDIOHYDRANTS 8
|
#define MAX_AUDIOHYDRANTS 8
|
||||||
|
|
||||||
enum eParticleObjectType
|
enum eParticleObjectType
|
||||||
{
|
{
|
||||||
POBJECT_PAVEMENT_STEAM,
|
POBJECT_PAVEMENT_STEAM = 0,
|
||||||
POBJECT_PAVEMENT_STEAM_SLOWMOTION,
|
POBJECT_PAVEMENT_STEAM_SLOWMOTION,
|
||||||
POBJECT_WALL_STEAM,
|
POBJECT_WALL_STEAM,
|
||||||
POBJECT_WALL_STEAM_SLOWMOTION,
|
POBJECT_WALL_STEAM_SLOWMOTION,
|
||||||
|
@ -22,6 +22,8 @@ enum eParticleObjectType
|
||||||
POBJECT_BIG_FIRE,
|
POBJECT_BIG_FIRE,
|
||||||
POBJECT_DRY_ICE,
|
POBJECT_DRY_ICE,
|
||||||
POBJECT_DRY_ICE_SLOWMOTION,
|
POBJECT_DRY_ICE_SLOWMOTION,
|
||||||
|
POBJECT_WATER_FOUNTAIN_VERT,
|
||||||
|
POBJECT_WATER_FOUNTAIN_HORIZ,
|
||||||
POBJECT_FIRE_TRAIL,
|
POBJECT_FIRE_TRAIL,
|
||||||
POBJECT_SMOKE_TRAIL,
|
POBJECT_SMOKE_TRAIL,
|
||||||
POBJECT_FIREBALL_AND_SMOKE,
|
POBJECT_FIREBALL_AND_SMOKE,
|
||||||
|
@ -74,6 +76,7 @@ public:
|
||||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, float size, uint8 remove);
|
static CParticleObject *AddObject(uint16 type, CVector const &pos, float size, uint8 remove);
|
||||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint8 remove);
|
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint8 remove);
|
||||||
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint32 lifeTime, RwRGBA const &color, uint8 remove);
|
static CParticleObject *AddObject(uint16 type, CVector const &pos, CVector const &target, float size, uint32 lifeTime, RwRGBA const &color, uint8 remove);
|
||||||
|
static CParticleObject *AddObject(tParticleType type, CVector const &pos, CVector const &target, float size, uint32 lifeTime, uint8 numEffectCycles, uint8 skipFrames, uint16 creationChance, uint8 remove);
|
||||||
|
|
||||||
void RemoveObject(void);
|
void RemoveObject(void);
|
||||||
|
|
||||||
|
@ -84,6 +87,7 @@ public:
|
||||||
static bool SaveParticle(uint8 *buffer, uint32 *length);
|
static bool SaveParticle(uint8 *buffer, uint32 *length);
|
||||||
static bool LoadParticle(uint8 *buffer, uint32 length);
|
static bool LoadParticle(uint8 *buffer, uint32 length);
|
||||||
|
|
||||||
|
static void RemoveAllExpireableParticleObjects(void);
|
||||||
static void RemoveAllParticleObjects(void);
|
static void RemoveAllParticleObjects(void);
|
||||||
static void MoveToList(CParticleObject **from, CParticleObject **to, CParticleObject *obj);
|
static void MoveToList(CParticleObject **from, CParticleObject **to, CParticleObject *obj);
|
||||||
};
|
};
|
||||||
|
@ -98,7 +102,7 @@ public:
|
||||||
|
|
||||||
CAudioHydrant() :
|
CAudioHydrant() :
|
||||||
AudioEntity(AEHANDLE_NONE),
|
AudioEntity(AEHANDLE_NONE),
|
||||||
pParticleObject(NULL)
|
pParticleObject(nil)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
static bool Add (CParticleObject *particleobject);
|
static bool Add (CParticleObject *particleobject);
|
||||||
|
|
Loading…
Reference in a new issue