⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lightningfx.h

📁 Blood 2全套源码
💻 H
字号:
// ----------------------------------------------------------------------- //
//
// MODULE  : LightningFX.h
//
// PURPOSE : Special FX class for lightning-like instant particle streams
//
// CREATED : 8/1/98
//
// ----------------------------------------------------------------------- //

#ifndef __LIGHTNING_FX_H__
#define __LIGHTNING_FX_H__

#include "SpecialFX.h"

// ----------------------------------------------------------------------- //

struct LIGHTNINGCREATESTRUCT : public SFXCREATESTRUCT
{
	LIGHTNINGCREATESTRUCT::LIGHTNINGCREATESTRUCT();

	DVector		vSource;
	DVector		vDest;
	DBYTE		nShape;
	DBYTE		nForm;
	DBYTE		nType;
};

// ----------------------------------------------------------------------- //

inline LIGHTNINGCREATESTRUCT::LIGHTNINGCREATESTRUCT()
{
	memset(this, 0, sizeof(LIGHTNINGCREATESTRUCT));
}

// ----------------------------------------------------------------------- //

#define LIGHTNING_LIGHTS_SOURCE		0
#define LIGHTNING_LIGHTS_CENTER		1
#define LIGHTNING_LIGHTS_DEST		2

#define LIGHTNING_SEGMAG_LOW		500.0f
#define LIGHTNING_SEGMAG_MED		250.0f
#define LIGHTNING_SEGMAG_HIGH		100.0f

#define LIGHTNING_OFFSET_RATIO		10.0f

// ----------------------------------------------------------------------- //

class CLightningBoltFX : public CSpecialFX
{
	public :

		CLightningBoltFX() : CSpecialFX() {}

		virtual	DBOOL CreateObject(CClientDE* pClientDE);
		virtual DBOOL Init(SFXCREATESTRUCT* psfxCreateStruct);
		virtual DBOOL Update();

	private :

		void	SetupLightning();
		DBOOL	CreateLightning();

		DVector	m_vSource;			// Offset from the gun
		DVector	m_vDest;			// Destination point of the bolt

		DFLOAT	m_fMinRadius;		// Minimum system radius
		DFLOAT	m_fMaxRadius;		// Maximum system radius
		DFLOAT	m_fMinOffset;		// Minimum offset from the vector
		DFLOAT	m_fMaxOffset;		// Maximum offset from the vector
		DFLOAT	m_fDensity;			// Ratio of particles to unit length (lower = more dense)

		DFLOAT	m_fDuration;		// Time to make the lightning hang around
		DFLOAT	m_fFadeTime;		// Time to fade off at the end of lifetime

		DVector	m_vMinColor;		// Minimum color
		DVector	m_vMaxColor;		// Maximum color
		DFLOAT	m_fAlpha;			// Alpha for all systems

		DDWORD	m_nNumLights;		// How many lights should be used for the whole bolt
		DVector	m_vLightColor;		// Color of each light created
		DFLOAT	m_fLightRadius;		// Radius of each light created

		DBYTE	m_nShape;			// Shape of the lightning bolt
		DBYTE	m_nForm;			// Form of the lightning bolt
		DBYTE	m_nType;			// Type of lightning bolt to create
		DBYTE	m_nLightPos;		// How to position the lights

		DFLOAT	m_fStartTime;

		char	*m_hstrTexture;		// Texture to sprite to use
};

#endif // __LIGHTNING_FX_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -