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

📄 gibfx.h

📁 Blood 2全套源码
💻 H
字号:

 // ----------------------------------------------------------------------- //
//
// MODULE  : GibFX.h
//
// PURPOSE : Gib special fx class - Definition
//
// CREATED : 8/3/98
//
// ----------------------------------------------------------------------- //

#ifndef __GIBSFX_H__
#define __GIBSFX_H__

#include "SpecialFX.h"
#include "client_physics.h"
#include "SharedDefs.h"


#define TYPE_FLESH			0x00000001
#define TYPE_STONE			0x00000002
#define TYPE_WOOD			0x00000004
#define TYPE_METAL			0x00000008
#define TYPE_GLASS			0x00000010

#define TYPE_MASK			0x000000ff

#define SIZE_LARGE			0x00000100
#define SIZE_SMALL			0x00000200
#define SIZE_MASK			0x00000f00

#define TRAIL_BLOOD			0x00001000
#define TRAIL_SMOKE			0x00002000
#define TYPEFLAG_CUSTOM		0x00004000


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

	DVector		m_Pos;
	DVector		m_Dir;
	DVector		m_Dims;
	HSTRING		m_hstrModel;
	HSTRING		m_hstrSkin;
	HSTRING		m_hstrSound;
	DDWORD		m_dwFlags;
	DFLOAT		m_fScale;
};

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


class CGibFX : public CSpecialFX
{
	public :

		CGibFX() : CSpecialFX()
		{
			VEC_INIT( m_vPos );
			ROT_INIT( m_Rotation );
			VEC_INIT( m_vMinVel );
			VEC_INIT( m_vMaxVel );
			VEC_INIT( m_vDims );
			m_hstrModel = DNULL;
			m_hstrSkin = DNULL;
			m_hstrSound = DNULL;
			m_dwFlags = 0;

			m_fPitch			= 0.0f;
			m_fYaw				= 0.0f;
			m_fPitchVel			= 0.0f;
			m_fYawVel			= 0.0f;

			m_bFade = DFALSE;

			memset(&moveObj,0,sizeof(MovingObject));

			m_fScaleCount = 0.0f;

			m_bBlood = DFALSE;
			m_bSmoke = DFALSE;

			m_fStartTime	= -1.0f;
			m_fOffsetTime	= 0.0f;

			m_fScale = 1.0f;

			m_nType			= SURFTYPE_UNKNOWN;
		}

		~CGibFX()
		{
			if( m_hstrModel && m_pClientDE )
				m_pClientDE->FreeString( m_hstrModel );

			if( m_hstrSkin && m_pClientDE )
				m_pClientDE->FreeString( m_hstrSkin );

			if( m_hstrSound && m_pClientDE )
				m_pClientDE->FreeString( m_hstrSound );
		}

		virtual DBOOL Init(SFXCREATESTRUCT* psfxCreateStruct);
		DBOOL		  Term();
		virtual DBOOL CreateObject(CClientDE* pClientDE);
		virtual DBOOL Update();
		DBOOL		  UpdateMovement(MovingObject* pObject, ClientIntersectInfo* pInfo);

		HOBJECT	GetHandle()		{return m_hObject;}
		DBOOL	CreateBloodSpurt(DVector *pvDir);
		void	CreateBloodSplat(DVector *pvPos, ClientIntersectInfo *pInfo);

	private :

		DVector		m_vPos;
		DRotation	m_Rotation;
		DVector		m_vDir;
		DVector		m_vDims;
		DVector		m_vMinVel;
		DVector		m_vMaxVel;
		HSTRING		m_hstrModel;
		HSTRING		m_hstrSkin;
		HSTRING		m_hstrSound;
		DDWORD		m_dwFlags;

		DBOOL		m_bFade;
		int			m_nBounceCount;
		DFLOAT		m_fPitch;		
		DFLOAT		m_fYaw;
		DFLOAT		m_fPitchVel;
		DFLOAT		m_fYawVel;

		MovingObject	moveObj;
		DFLOAT		m_fScaleCount;

		DBOOL		m_bBlood;
		DBOOL		m_bSmoke;

		DFLOAT		m_fStartTime;
		DFLOAT		m_fOffsetTime;

		DFLOAT		m_fScale;

		int			m_nType;
};

#endif // __GIBSFX_H__

⌨️ 快捷键说明

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