📄 explosionfx.h
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : ExplosionFX.h
//
// PURPOSE : Explosion special fx class - Definition
//
// CREATED : 7/1/98
//
// ----------------------------------------------------------------------- //
#ifndef __EXPLOSION_FX_H__
#define __EXPLOSION_FX_H__
// ----------------------------------------------------------------------- //
#include "SpecialFX.h"
#include "BaseParticleSystemFX.h"
// ----------------------------------------------------------------------- //
struct EXPLOSIONMODELCS : public SFXCREATESTRUCT
{
EXPLOSIONMODELCS::EXPLOSIONMODELCS();
DVector vPos;
DVector vNormal;
DVector vScale1;
DVector vScale2;
DVector vRotations;
DFLOAT fDuration;
DFLOAT fAlpha;
DBYTE bWaveForm;
DBYTE bFadeType;
DBYTE bRandomRot;
HSTRING szModel;
HSTRING szSkin;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONMODELCS::EXPLOSIONMODELCS()
{
memset(this, 0, sizeof(EXPLOSIONMODELCS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONSPRITECS : public SFXCREATESTRUCT
{
EXPLOSIONSPRITECS::EXPLOSIONSPRITECS();
DVector vPos;
DVector vNormal;
DVector vScale1;
DVector vScale2;
DFLOAT fDuration;
DFLOAT fAlpha;
DBYTE bWaveForm;
DBYTE bFadeType;
DBYTE bAlign;
HSTRING szSprite;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONSPRITECS::EXPLOSIONSPRITECS()
{
memset(this, 0, sizeof(EXPLOSIONSPRITECS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONRINGCS : public SFXCREATESTRUCT
{
EXPLOSIONRINGCS::EXPLOSIONRINGCS();
DVector vPos;
DVector vNormal;
DVector vColor;
DFLOAT fRadius;
DFLOAT fPosRadius;
DFLOAT fVelocity;
DFLOAT fGravity;
DFLOAT fRotation;
DDWORD nParticles;
DFLOAT fDuration;
DFLOAT fAlpha;
DFLOAT fDelay;
DBYTE bFadeType;
DBYTE bRotateType;
DBYTE bAlign;
HSTRING szParticle;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONRINGCS::EXPLOSIONRINGCS()
{
memset(this, 0, sizeof(EXPLOSIONRINGCS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONFLAMECS : public SFXCREATESTRUCT
{
EXPLOSIONFLAMECS::EXPLOSIONFLAMECS();
DVector vPos;
DVector vNormal;
DVector vColor1; // Core color
DVector vColor2; // Median color
DVector vColor3; // Edge color
DVector vLifeTimes;
DVector vLifeOffsets;
DVector vFXTimes;
DDWORD nParticles;
DFLOAT fRadius;
DFLOAT fPosRadius;
DFLOAT fGravity;
DFLOAT fVelocity;
DFLOAT fDelay;
DFLOAT fAlpha;
DBYTE bFadeType;
DBYTE bRampFlags;
HSTRING szParticle;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONFLAMECS::EXPLOSIONFLAMECS()
{
memset(this, 0, sizeof(EXPLOSIONFLAMECS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONWAVECS : public SFXCREATESTRUCT
{
EXPLOSIONWAVECS::EXPLOSIONWAVECS();
DVector vPos;
DVector vNormal;
DVector vScale1;
DVector vScale2;
DFLOAT fDuration;
DFLOAT fAlpha;
DFLOAT fDelay;
DBYTE bWaveForm;
DBYTE bFadeType;
DBYTE bAlign;
HSTRING szWave;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONWAVECS::EXPLOSIONWAVECS()
{
memset(this, 0, sizeof(EXPLOSIONWAVECS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONLIGHTCS : public SFXCREATESTRUCT
{
EXPLOSIONLIGHTCS::EXPLOSIONLIGHTCS();
DVector vPos;
DVector vColor1;
DVector vColor2;
DFLOAT fDuration;
DFLOAT fDelay;
DFLOAT fRadius1;
DFLOAT fRadius2;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONLIGHTCS::EXPLOSIONLIGHTCS()
{
memset(this, 0, sizeof(EXPLOSIONLIGHTCS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONFRAGCS : public SFXCREATESTRUCT
{
EXPLOSIONFRAGCS::EXPLOSIONFRAGCS();
DVector vPos;
DVector vNormal;
DVector vScale;
DVector vRotateMax;
DFLOAT fSpread;
DFLOAT fDuration;
DFLOAT fVelocity;
DFLOAT fBounceMod;
DFLOAT fGravity;
DFLOAT fFadeTime;
DFLOAT fInitAlpha;
DBOOL bRandDir;
DBOOL bSpawnExp;
DDWORD nSpawnType;
DDWORD nTrailType;
HSTRING szModel;
HSTRING szSkin;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONFRAGCS::EXPLOSIONFRAGCS()
{
memset(this, 0, sizeof(EXPLOSIONFRAGCS));
}
// ----------------------------------------------------------------------- //
struct EXPLOSIONFXCS : public SFXCREATESTRUCT
{
EXPLOSIONFXCS::EXPLOSIONFXCS();
DVector vPos;
DVector vNormal;
DDWORD nType;
};
// ----------------------------------------------------------------------- //
inline EXPLOSIONFXCS::EXPLOSIONFXCS()
{
memset(this, 0, sizeof(EXPLOSIONFXCS));
}
// ----------------------------------------------------------------------- //
class CExplosionModelFX : public CSpecialFX
{
public :
CExplosionModelFX()
{
VEC_SET(m_vNormal, 0.0f, 1.0f, 0.0f);
m_fDuration = 1.0f;
VEC_SET(m_vScale2, 1.0f, 1.0f, 1.0f);
m_szModel = DNULL;
m_szSkin = DNULL;
}
~CExplosionModelFX()
{
g_pClientDE->FreeString( m_szModel );
g_pClientDE->FreeString( m_szSkin );
}
virtual DBOOL CreateObject(CClientDE* pClientDE);
virtual DBOOL Init(SFXCREATESTRUCT* psfxCreateStruct);
virtual DBOOL Update();
private :
DVector m_vPos; // Position of the explosion
DVector m_vNormal; // Normal of the surface that was hit
DVector m_vRotations; // Rotation values for the model
DFLOAT m_fStartTime; // When did we start
DFLOAT m_fDuration; // Time to scale between
DFLOAT m_fInitAlpha; // Initial alpha value
DBOOL m_bScale; // Scale the object?
DVector m_vScale1; // Initial scale
DVector m_vScale2; // Final scale
DBYTE m_bWaveForm; // Type of waveform to scale with
DBYTE m_bFadeType; // Type of fade to apply
DBYTE m_bRandomRot; // Place the model in a random inital rotation
HSTRING m_szModel; // File to use for the model
HSTRING m_szSkin; // File to use for the skin
};
// ----------------------------------------------------------------------- //
class CExplosionSpriteFX : public CSpecialFX
{
public :
CExplosionSpriteFX()
{
VEC_SET(m_vNormal, 0.0f, 1.0f, 0.0f);
m_fDuration = 1.0f;
VEC_SET(m_vScale2, 1.0f, 1.0f, 1.0f);
m_szSprite = DNULL;
}
~CExplosionSpriteFX()
{
g_pClientDE->FreeString( m_szSprite );
}
virtual DBOOL CreateObject(CClientDE* pClientDE);
virtual DBOOL Init(SFXCREATESTRUCT* psfxCreateStruct);
virtual DBOOL Update();
private :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -