📄 weaponpowerupfx.cpp
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : WeaponPowerupFX.cpp
//
// PURPOSE : Weapon Powerup special FX - Implementation
//
// CREATED : 7/29/98
//
// ----------------------------------------------------------------------- //
#include "WeaponPowerupFX.h"
#include "cpp_client_de.h"
#include "ClientUtilities.h"
#include "ViewWeapon.h"
#include <mbstring.h>
// ----------------------------------------------------------------------- //
//
// ROUTINE: CWeaponPowerupFX::Init
//
// PURPOSE: Init the powerup sprite
//
// ----------------------------------------------------------------------- //
DBOOL CWeaponPowerupFX::Init(SFXCREATESTRUCT* psfxCreateStruct)
{
if (!psfxCreateStruct) return DFALSE;
CSpecialFX::Init(psfxCreateStruct);
WEAPPOWERCREATESTRUCT* pPowerup = (WEAPPOWERCREATESTRUCT*)psfxCreateStruct;
m_hGun = pPowerup->hGun;
VEC_COPY(m_vPosOffset, pPowerup->vPosOffset);
VEC_COPY(m_vScale, pPowerup->vScale);
m_fLifeTime = pPowerup->fLifeTime;
m_fInitAlpha = pPowerup->fInitAlpha;
m_bFade = pPowerup->bFade;
m_pSpriteFile = pPowerup->pSpriteFile;
return DTRUE;
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: CWeaponPowerupFX::CreateObject
//
// PURPOSE: Create the sprite object
//
// ----------------------------------------------------------------------- //
DBOOL CWeaponPowerupFX::CreateObject(CClientDE* pClientDE)
{
ObjectCreateStruct createStruct;
INIT_OBJECTCREATESTRUCT(createStruct);
m_pClientDE = pClientDE;
// Setup the object creation structure
createStruct.m_ObjectType = OT_SPRITE;
createStruct.m_Flags = FLAG_VISIBLE | FLAG_SPRITECHROMAKEY;
if(!m_pSpriteFile)
_mbscpy((unsigned char*)createStruct.m_Filename, (const unsigned char*)"Sprites\\teslaAltM.spr");
else
_mbscpy((unsigned char*)createStruct.m_Filename, (const unsigned char*)pClientDE->GetStringData(m_pSpriteFile));
if (m_hGun == g_hWeaponModel)
m_pClientDE->GetObjectPos(m_hGun, &(createStruct.m_Pos));
else
m_pClientDE->GetObjectPos(m_hServerObject, &(createStruct.m_Pos));
// Create the instance of the object
m_hObject = pClientDE->CreateObject(&createStruct);
// Scale the object to its initial settings
pClientDE->SetObjectScale(m_hObject, &m_vScale);
// Get the initial color values of the sprite
DFLOAT r, g, b, a;
pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a);
pClientDE->SetObjectColor(m_hObject, r, g, b, m_fInitAlpha);
m_fStartTime = pClientDE->GetTime();
return DTRUE;
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: CWeaponPowerupFX::Update
//
// PURPOSE: Update the powerup sprite
//
// ----------------------------------------------------------------------- //
DBOOL CWeaponPowerupFX::Update()
{
DVector vPos;
DRotation rRot;
if(m_pClientDE->GetTime() - m_fStartTime > m_fLifeTime)
return DFALSE;
if (m_hGun == g_hWeaponModel)
{
DVector vOffset, vU, vR, vF;
ROT_COPY(rRot, g_rotGun)
m_pClientDE->GetObjectPos(m_hGun, &vPos);
m_pClientDE->GetRotationVectors(&rRot, &vU, &vR, &vF);
VEC_COPY(vOffset, vPos)
VEC_MULSCALAR(vU, vU, m_vPosOffset.y);
VEC_MULSCALAR(vR, vR, m_vPosOffset.x);
VEC_MULSCALAR(vF, vF, m_vPosOffset.z);
VEC_ADD(vOffset, vOffset, vU);
VEC_ADD(vOffset, vOffset, vR);
VEC_ADD(vOffset, vOffset, vF);
VEC_COPY(vPos, vOffset);
}
else
m_pClientDE->GetObjectPos(m_hServerObject, &vPos);
m_pClientDE->SetObjectPos(m_hObject, &vPos);
return DTRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -