📄 explosionfx.cpp
字号:
elCS.fRadius2 = 0.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Light scorch
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 0.2f, 0.2f, 0.2f);
VEC_SET(elCS.vColor2, 0.5f, 0.5f, 0.5f);
elCS.fDuration = 25.0f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 100.0f;
elCS.fRadius1 = 100.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Smoke
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 25.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.5f, 0.5f, 0.0f);
VEC_SET(esCS.vScale2, 2.5f, 2.5f, 0.0f);
esCS.fDuration = 5.0f;
esCS.fAlpha = 0.85f;
esCS.bWaveForm = 1;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\smokepuff2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
}
break;
case EXP_NAPALM_PRIMARY:
{
EXPLOSIONMODELCS emCS;
EXPLOSIONSPRITECS esCS;
EXPLOSIONRINGCS erCS;
EXPLOSIONLIGHTCS elCS;
DVector temp;
// Data for all models
VEC_COPY(emCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(emCS.vPos, m_vPos, temp);
emCS.bFadeType = 1;
emCS.bRandomRot = 1;
emCS.szModel = pClientDE->CreateString("Models\\Explosions\\Exp_sphere_2.abc");
emCS.szSkin = 0;
// Model 1
VEC_SET(emCS.vScale1, 20.0f, 20.0f, 20.0f);
VEC_SET(emCS.vScale2, 400.0f, 400.0f, 400.0f);
emCS.fDuration = 0.75f;
emCS.fAlpha = 1.0f;
emCS.bWaveForm = 0;
psfxMgr->CreateSFX(SFX_EXPLOSION_ID, &emCS, DFALSE, this);
// Model 2
VEC_SET(emCS.vScale1, 35.0f, 35.0f, 35.0f);
VEC_SET(emCS.vScale2, 350.0f, 350.0f, 350.0f);
emCS.fDuration = 0.75f;
emCS.fAlpha = 0.75f;
emCS.bWaveForm = 2;
psfxMgr->CreateSFX(SFX_EXPLOSION_ID, &emCS, DFALSE, this);
// Model 3
emCS.szSkin = pClientDE->CreateString("Skins\\Explosions\\Explosion.dtx");
VEC_SET(emCS.vScale1, 50.0f, 50.0f, 50.0f);
VEC_SET(emCS.vScale2, 450.0f, 450.0f, 450.0f);
emCS.fDuration = 1.0f;
emCS.fAlpha = 0.5f;
emCS.bWaveForm = 1;
psfxMgr->CreateSFX(SFX_EXPLOSION_ID, &emCS, DFALSE, this);
g_pClientDE->FreeString( emCS.szModel );
emCS.szModel = DNULL;
g_pClientDE->FreeString( emCS.szSkin );
emCS.szSkin = DNULL;
// Sprite
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 30.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.75f, 0.75f, 0.0f);
VEC_COPY(esCS.vScale2, esCS.vScale1);
esCS.fDuration = 1.5f;
esCS.fAlpha = 1.0f;
esCS.bWaveForm = 0;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\napalm.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
// Fire Ring
VEC_COPY(erCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 25.0f);
VEC_ADD(erCS.vPos, m_vPos, temp);
VEC_SET(erCS.vColor, 1.0f, 1.0f, 1.0f);
erCS.fRadius = 6000.0f;
erCS.fPosRadius = 10.0f;
erCS.fVelocity = 400.0f;
erCS.fGravity = 350.0f;
erCS.nParticles = 32;
erCS.fDuration = 0.5f;
erCS.fAlpha = 1.0f;
erCS.fDelay = 0.0f;
erCS.bFadeType = 1;
erCS.bAlign = 1;
erCS.szParticle = pClientDE->CreateString("SpriteTextures\\Firepart64.dtx");
psfxMgr->CreateSFX(SFX_EXPLOSIONRING_ID, &erCS, DFALSE, this);
g_pClientDE->FreeString( erCS.szParticle );
erCS.szParticle = DNULL;
// Light
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 1.0f, 0.5f, 0.0f);
VEC_SET(elCS.vColor2, 1.0f, 1.0f, 1.0f);
elCS.fDuration = 1.25f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 300.0f;
elCS.fRadius2 = 0.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Light scorch
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 0.2f, 0.2f, 0.2f);
VEC_SET(elCS.vColor2, 0.5f, 0.5f, 0.5f);
elCS.fDuration = 25.0f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 100.0f;
elCS.fRadius1 = 100.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Smoke
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 25.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.5f, 0.5f, 0.0f);
VEC_SET(esCS.vScale2, 2.5f, 2.5f, 0.0f);
esCS.fDuration = 5.0f;
esCS.fAlpha = 0.85f;
esCS.bWaveForm = 1;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\smokepuff2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
}
break;
case EXP_NAPALM_ALT:
{
EXPLOSIONMODELCS emCS;
EXPLOSIONSPRITECS esCS;
EXPLOSIONRINGCS erCS;
EXPLOSIONLIGHTCS elCS;
DVector temp;
// Model
VEC_COPY(emCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(emCS.vPos, m_vPos, temp);
emCS.bFadeType = 1;
emCS.bRandomRot = 1;
emCS.szModel = pClientDE->CreateString("Models\\Explosions\\Exp_sphere_2.abc");
emCS.szSkin = pClientDE->CreateString("Skins\\Explosions\\Explosion.dtx");
VEC_SET(emCS.vScale1, 25.0f, 25.0f, 25.0f);
VEC_SET(emCS.vScale2, 250.0f, 250.0f, 250.0f);
emCS.fDuration = 1.0f;
emCS.fAlpha = 0.5f;
emCS.bWaveForm = 1;
psfxMgr->CreateSFX(SFX_EXPLOSION_ID, &emCS, DFALSE, this);
g_pClientDE->FreeString( emCS.szModel );
emCS.szModel = DNULL;
g_pClientDE->FreeString( emCS.szSkin );
emCS.szSkin = DNULL;
// Sprite
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 20.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.4f, 0.4f, 0.0f);
VEC_COPY(esCS.vScale2, esCS.vScale1);
esCS.fDuration = 1.5f;
esCS.fAlpha = 1.0f;
esCS.bWaveForm = 0;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\fireball2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
// Light
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 1.0f, 0.5f, 0.0f);
VEC_SET(elCS.vColor2, 1.0f, 1.0f, 1.0f);
elCS.fDuration = 1.25f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 300.0f;
elCS.fRadius2 = 0.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Light scorch
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 0.2f, 0.2f, 0.2f);
VEC_SET(elCS.vColor2, 0.5f, 0.5f, 0.5f);
elCS.fDuration = 25.0f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 100.0f;
elCS.fRadius1 = 100.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Smoke
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 25.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.5f, 0.5f, 0.0f);
VEC_SET(esCS.vScale2, 2.5f, 2.5f, 0.0f);
esCS.fDuration = 5.0f;
esCS.fAlpha = 0.85f;
esCS.bWaveForm = 1;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\smokepuff2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
}
break;
case EXP_NAPALM_FIREBALL:
{
EXPLOSIONSPRITECS esCS;
EXPLOSIONRINGCS erCS;
EXPLOSIONLIGHTCS elCS;
DVector temp;
// Sprite
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 0.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.25f, 0.25f, 0.0f);
VEC_COPY(esCS.vScale2, esCS.vScale1);
esCS.fDuration = 0.5f;
esCS.fAlpha = 1.0f;
esCS.bWaveForm = 0;
esCS.bFadeType = 1;
esCS.bAlign = 1;
esCS.szSprite = pClientDE->CreateString("Sprites\\debrisimp.spr");
// esCS.szSprite = pClientDE->CreateString("Sprites\\fireball2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
// Light
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 1.0f, 0.5f, 0.0f);
VEC_SET(elCS.vColor2, 1.0f, 1.0f, 1.0f);
elCS.fDuration = 1.25f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 150.0f;
elCS.fRadius2 = 0.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Light scorch
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 0.2f, 0.2f, 0.2f);
VEC_SET(elCS.vColor2, 0.5f, 0.5f, 0.5f);
elCS.fDuration = 25.0f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 50.0f;
elCS.fRadius1 = 50.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
// Smoke
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 20.0f);
VEC_ADD(esCS.vPos, m_vPos, temp);
VEC_SET(esCS.vScale1, 0.25f, 0.25f, 0.0f);
VEC_SET(esCS.vScale2, 1.5f, 1.5f, 0.0f);
esCS.fDuration = 5.0f;
esCS.fAlpha = 0.85f;
esCS.bWaveForm = 1;
esCS.bFadeType = 1;
esCS.bAlign = 0;
esCS.szSprite = pClientDE->CreateString("Sprites\\smokepuff2.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
}
break;
case EXP_TESLA_PRIMARY:
{
EXPLOSIONMODELCS emCS;
EXPLOSIONSPRITECS esCS;
EXPLOSIONRINGCS erCS;
EXPLOSIONLIGHTCS elCS;
DVector temp;
// Model
VEC_COPY(emCS.vNormal, m_vNormal);
VEC_COPY(emCS.vPos, m_vPos);
VEC_SET(emCS.vScale1, 20.0f, 20.0f, 20.0f);
VEC_SET(emCS.vScale2, 100.0f, 100.0f, 100.0f);
emCS.fDuration = 0.5f;
emCS.fAlpha = 0.99f;
emCS.bWaveForm = 1;
emCS.bFadeType = 1;
emCS.bRandomRot = 1;
emCS.szModel = 0;
emCS.szSkin = pClientDE->CreateString("Skins\\Explosions\\eballsmall.dtx");
psfxMgr->CreateSFX(SFX_EXPLOSION_ID, &emCS, DFALSE, this);
g_pClientDE->FreeString( emCS.szSkin );
emCS.szSkin = DNULL;
// Sprite
VEC_COPY(esCS.vNormal, m_vNormal);
VEC_COPY(esCS.vPos, m_vPos);
VEC_SET(esCS.vScale1, GetRandom(0.25f,0.50f), GetRandom(0.25f,0.50f), 0.0f);
VEC_SET(esCS.vScale2, GetRandom(0.50f,0.75f), GetRandom(0.50f,0.75f), 0.0f);
esCS.fDuration = 1.0f;
esCS.fAlpha = 1.0f;
esCS.bWaveForm = 0;
esCS.bFadeType = 1;
esCS.bAlign = 2;
esCS.szSprite = pClientDE->CreateString("Sprites\\TeslaImp.spr");
psfxMgr->CreateSFX(SFX_EXPLOSIONSPRITE_ID, &esCS, DFALSE, this);
g_pClientDE->FreeString( esCS.szSprite );
esCS.szSprite = DNULL;
// Ring
VEC_COPY(erCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 10.0f);
VEC_ADD(erCS.vPos, m_vPos, temp);
VEC_SET(erCS.vColor, 0.5f, 0.5f, 1.0f);
erCS.fRadius = 4000.0f;
erCS.fPosRadius = 10.0f;
erCS.fVelocity = GetRandom(150.0f,250.0f);
erCS.fGravity = 0.0f;
erCS.nParticles = 24;
erCS.fDuration = 0.75f;
erCS.fRotation = GetRandom(-0.08f,0.08f);
erCS.fAlpha = 0.5f;
erCS.fDelay = 0.15f;
erCS.bFadeType = 1;
erCS.bRotateType= 2;
erCS.bAlign = 1;
erCS.szParticle = pClientDE->CreateString("SpriteTextures\\Smoke32_1.dtx");
psfxMgr->CreateSFX(SFX_EXPLOSIONRING_ID, &erCS, DFALSE, this);
g_pClientDE->FreeString( erCS.szParticle );
erCS.szParticle = DNULL;
// Light
VEC_MULSCALAR(temp, m_vNormal, 25.0f);
VEC_ADD(elCS.vPos, m_vPos, temp);
VEC_SET(elCS.vColor1, 0.5f, 0.5f, 1.0f);
VEC_SET(elCS.vColor2, 1.0f, 1.0f, 1.0f);
elCS.fDuration = 1.0f;
elCS.fDelay = 0.0f;
elCS.fRadius1 = 100.0f;
elCS.fRadius2 = 0.0f;
psfxMgr->CreateSFX(SFX_EXPLOSIONLIGHT_ID, &elCS, DFALSE, this);
}
break;
case EXP_TESLA_ALT:
{
EXPLOSIONMODELCS emCS;
EXPLOSIONSPRITECS esCS;
EXPLOSIONFLAMECS efCS;
EXPLOSIONLIGHTCS elCS;
DVector temp;
// Model
VEC_COPY(emCS.vNormal, m_vNormal);
VEC_MULSCALAR(temp, m_vNormal, 30.0f);
VEC_ADD(emCS.vPos, m_vPos, temp);
VEC_SET(emCS.vScale1, 50.0f, 50.0f, 50.0f);
VEC_SET(emCS.vScale2, 1000.0f, 1000.0f, 1000.0f);
emCS.fDuration = 3.0f;
emCS.fAlpha = 0.75f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -