📄 clientsparkssfx.cpp
字号:
// ----------------------------------------------------------------------- //
//
// MODULE : CClientSparksSFX.cpp
//
// PURPOSE : CClientSparksSFX - Implementation
//
// CREATED : 1/17/98
//
// ----------------------------------------------------------------------- //
#include "ClientSparksSFX.h"
#include "cpp_server_de.h"
#include "SFXMsgIds.h"
BEGIN_CLASS(CClientSparksSFX)
END_CLASS_DEFAULT_FLAGS(CClientSparksSFX, CClientSFX, NULL, NULL, CF_HIDDEN)
// ----------------------------------------------------------------------- //
//
// ROUTINE: CClientSparksSFX::Setup
//
// PURPOSE: Send message to client with data
//
// ----------------------------------------------------------------------- //
void CClientSparksSFX::Setup(DVector *pvDir, DVector *pvColor1, DVector *pvColor2,
char* pFile, DBYTE nSparks, DFLOAT fDuration, DFLOAT fEmissionRadius,
DFLOAT fParticleRadius, DFLOAT fGravity)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !pvDir || !pFile) return;
HSTRING hstrTexture = pServerDE->CreateString(pFile);
// Use the object's pos and rotation...
DVector vPos;
VEC_INIT(vPos);
DRotation rRot;
ROT_INIT(rRot);
// Tell the clients about the Sparks...
HMESSAGEWRITE hMessage = pServerDE->StartInstantSpecialEffectMessage(&vPos);
pServerDE->WriteToMessageByte(hMessage, SFX_SPARKS_ID);
//pServerDE->WriteToMessageByte(hMessage, DFALSE);
pServerDE->WriteToMessageRotation(hMessage, &rRot);
pServerDE->WriteToMessageVector(hMessage, &vPos);
pServerDE->WriteToMessageVector(hMessage, pvDir);
pServerDE->WriteToMessageVector(hMessage, pvColor1);
pServerDE->WriteToMessageVector(hMessage, pvColor2);
pServerDE->WriteToMessageHString(hMessage, hstrTexture);
pServerDE->WriteToMessageByte(hMessage, nSparks);
pServerDE->WriteToMessageFloat(hMessage, fDuration);
pServerDE->WriteToMessageFloat(hMessage, fEmissionRadius);
pServerDE->WriteToMessageFloat(hMessage, fParticleRadius);
pServerDE->WriteToMessageFloat(hMessage, fGravity);
pServerDE->EndMessage(hMessage);
pServerDE->FreeString(hstrTexture);
}
// ----------------------------------------------------------------------- //
//
// ROUTINE: CClientSparksSFX::EngineMessageFn
//
// PURPOSE: Handle engine messages
//
// ----------------------------------------------------------------------- //
DDWORD CClientSparksSFX::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return 0;
switch(messageID)
{
case MID_INITIALUPDATE:
{
pServerDE->SetNextUpdate(m_hObject, .0001f);
break;
}
case MID_UPDATE:
{
pServerDE->RemoveObject(m_hObject);
break;
}
default : break;
}
return CClientSFX::EngineMessageFn(messageID, pData, fData);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -