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

📄 explosionfx.cpp

📁 Blood 2全套源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				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 + -