本文整理汇总了C++中CServerDE::SetObjectUserFlags方法的典型用法代码示例。如果您正苦于以下问题:C++ CServerDE::SetObjectUserFlags方法的具体用法?C++ CServerDE::SetObjectUserFlags怎么用?C++ CServerDE::SetObjectUserFlags使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CServerDE
的用法示例。
在下文中一共展示了CServerDE::SetObjectUserFlags方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitialUpdate
void VolumeBrush::InitialUpdate(int nData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
// For save game restores, just recreate the surface
if (nData == INITIALUPDATE_SAVEGAME)
return;
if (m_bShowSurface)
{
CreateSurface();
}
m_hPlayerClass = pServerDE->GetClass("CPlayerObj");
DDWORD dwUserFlags = m_bHidden ? 0 : USRFLG_VISIBLE;
dwUserFlags |= USRFLG_SAVEABLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUserFlags);
if (m_hSurfaceObj)
{
pServerDE->SetObjectUserFlags(m_hSurfaceObj, dwUserFlags);
}
// Tell the client about any special fx (fog)...
HMESSAGEWRITE hMessage = pServerDE->StartSpecialEffectMessage(this);
pServerDE->WriteToMessageByte(hMessage, SFX_VOLUMEBRUSH_ID);
//pServerDE->WriteToMessageByte(hMessage, DTRUE);
pServerDE->WriteToMessageByte(hMessage, (DBYTE)m_bFogEnable);
pServerDE->WriteToMessageFloat(hMessage, m_fFogFarZ);
pServerDE->WriteToMessageFloat(hMessage, m_fFogNearZ);
pServerDE->WriteToMessageVector(hMessage, &m_vFogColor);
pServerDE->EndMessage(hMessage);
pServerDE->SetNextUpdate(m_hObject, 0.001f);
// Save volume brush's initial flags...
m_dwSaveFlags = pServerDE->GetObjectFlags(m_hObject);
// Normalize viscosity (1 = no movement, 0 = full movement)...
if (m_fViscosity < 0.0) m_fViscosity = 0.0f;
else if (m_fViscosity > 1.0) m_fViscosity = 1.0f;
// Okay, internally we really want it the opposite way (i.e., 1 = full
// movement, 0 = no movement)...
m_fViscosity = 1.0f - m_fViscosity;
}
示例2: HandleTrigger
void VolumeBrush::HandleTrigger(HOBJECT hSender, HSTRING hMsg)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
char* pMsg = pServerDE->GetStringData(hMsg);
if (!pMsg || !pMsg[0]) return;
DBOOL bToggle = DFALSE;
if (_mbsicmp((const unsigned char*)pMsg, (const unsigned char*)TRIGGER_MSG_TOGGLE) == 0)
{
bToggle = DTRUE;
}
if ((bToggle && m_bHidden) || _mbsicmp((const unsigned char*)pMsg, (const unsigned char*)TRIGGER_MSG_ON) == 0)
{
DDWORD dwFlags;
pServerDE->SetObjectFlags(m_hObject, m_dwSaveFlags);
dwFlags = pServerDE->GetObjectUserFlags(m_hObject);
pServerDE->SetObjectUserFlags(m_hObject, dwFlags | USRFLG_VISIBLE);
if (m_hSurfaceObj)
{
dwFlags = pServerDE->GetObjectUserFlags(m_hSurfaceObj);
pServerDE->SetObjectUserFlags(m_hSurfaceObj, dwFlags | USRFLG_VISIBLE);
}
m_bHidden = DFALSE;
}
else if ((bToggle && !m_bHidden) || _mbsicmp((const unsigned char*)pMsg, (const unsigned char*)TRIGGER_MSG_OFF) == 0)
{
DDWORD dwFlags;
pServerDE->SetObjectFlags(m_hObject, m_dwSaveFlags & ~FLAG_VISIBLE);
dwFlags = pServerDE->GetObjectUserFlags(m_hObject);
pServerDE->SetObjectUserFlags(m_hObject, dwFlags & ~USRFLG_VISIBLE);
if (m_hSurfaceObj)
{
dwFlags = pServerDE->GetObjectUserFlags(m_hSurfaceObj);
pServerDE->SetObjectUserFlags(m_hSurfaceObj, dwFlags & ~USRFLG_VISIBLE);
}
m_bHidden = DTRUE;
}
}
示例3: InitialUpdate
DBOOL Trigger::InitialUpdate()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return DFALSE;
pServerDE->SetObjectDims(m_hObject, &m_vDims);
pServerDE->SetObjectFlags(m_hObject, FLAG_TOUCH_NOTIFY | FLAG_GOTHRUWORLD);
pServerDE->SetObjectUserFlags(m_hObject, USRFLG_IGNORE_PROJECTILES);
// If I'm not a timed trigger, my object touch notification
// will trigger new updates until then, I don't care...
if (m_bTimedTrigger || m_hstrAttachToObject)
{
pServerDE->SetNextUpdate(m_hObject, UPDATE_DELTA);
pServerDE->SetDeactivationTime(m_hObject, 0.0f);
}
else
{
pServerDE->SetNextUpdate(m_hObject, 0.0f);
pServerDE->SetDeactivationTime(m_hObject, TRIGGER_DEACTIVATION_TIME);
}
return DTRUE;
}
示例4: EngineMessageFn
DDWORD ObjectiveTrigger::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return DFALSE;
switch (messageID)
{
case MID_INITIALUPDATE:
{
if (fData != INITIALUPDATE_SAVEGAME)
{
pServerDE->SetObjectDims(m_hObject, &m_vDims);
pServerDE->SetObjectFlags(m_hObject, FLAG_TOUCH_NOTIFY);
pServerDE->SetObjectUserFlags(m_hObject, USRFLG_IGNORE_PROJECTILES);
pServerDE->SetNextUpdate(m_hObject, 0.0f);
}
}
break;
case MID_TOUCHNOTIFY:
{
if (!m_bTriggered) ObjectTouch((HOBJECT)pData);
}
break;
case MID_PRECREATE:
{
ObjectCreateStruct* pStruct = (ObjectCreateStruct*)pData;
if (!pStruct) return 0;
if (fData == PRECREATE_WORLDFILE)
{
ReadProp(pStruct);
}
}
break;
case MID_SAVEOBJECT:
{
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
}
break;
case MID_LOADOBJECT:
{
Load((HMESSAGEREAD)pData, (DDWORD)fData);
}
break;
default : break;
}
return BaseClass::EngineMessageFn(messageID, pData, fData);
}
示例5: InitialUpdate
void Rain::InitialUpdate(DVector *pMovement)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
// Mark this object as savable
DDWORD dwFlags = pServerDE->GetObjectUserFlags(m_hObject);
dwFlags |= USRFLG_SAVEABLE;
pServerDE->SetObjectUserFlags(m_hObject, dwFlags);
// Tell the clients about the Rain
if (!m_bTriggered)
SendEffectMessage();
}
示例6: EngineMessageFn
DDWORD PolyGrid::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return 0;
switch(messageID)
{
case MID_PRECREATE:
{
if (fData == PRECREATE_WORLDFILE ||
fData == PRECREATE_STRINGPROP ||
fData == PRECREATE_NORMAL)
{
ReadProp((ObjectCreateStruct *)pData);
}
break;
}
case MID_INITIALUPDATE:
{
if (fData != INITIALUPDATE_SAVEGAME)
{
pServerDE->SetObjectUserFlags(m_hObject, USRFLG_VISIBLE);
if (m_bSetup)
{
Setup(&m_vDims, &m_vColor1, &m_vColor2, m_hstrSurfaceSprite,
m_fXScaleMin, m_fXScaleMax, m_fYScaleMin, m_fYScaleMax,
m_fXScaleDuration, m_fYScaleDuration, m_fXPan, m_fYPan,
m_fAlpha, m_dwNumPolies);
}
}
CacheFiles();
break;
}
default : break;
}
return CClientSFX::EngineMessageFn(messageID, pData, fData);
}
示例7: EngineMessageFn
DDWORD CClientExplosionSFX::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return 0;
switch(messageID)
{
case MID_PRECREATE:
{
ReadProp((ObjectCreateStruct*)pData);
break;
}
case MID_INITIALUPDATE:
{
pServerDE->SetNextUpdate(m_hObject, 0.1f);
pServerDE->GetObjectPos(m_hObject, &m_vPos);
DDWORD dwUserFlags = pServerDE->GetObjectUserFlags(m_hObject);
pServerDE->SetObjectUserFlags(m_hObject, dwUserFlags | USRFLG_SAVEABLE);
break;
}
case MID_UPDATE:
{
pServerDE->SetNextUpdate(m_hObject, 0.1f);
if(m_bTriggered) pServerDE->RemoveObject(m_hObject);
break;
}
case MID_SAVEOBJECT:
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
break;
case MID_LOADOBJECT:
Load((HMESSAGEREAD)pData, (DDWORD)fData);
break;
default : break;
}
return CClientSFX::EngineMessageFn(messageID, pData, fData);
}
示例8: InitialUpdate
DBOOL CProjectile::InitialUpdate(DVector*)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE) return DFALSE;
pServerDE->SetNextUpdate(m_hObject, (DFLOAT)0.001);
m_fStartTime = pServerDE->GetTime();
pServerDE->SetObjectDims(m_hObject, &m_vDims);
pServerDE->SetForceIgnoreLimit(m_hObject, 0.0f);
pServerDE->SetFrictionCoefficient(m_hObject, 18.0);
pServerDE->ScaleObject(m_hObject, &m_vInitScale);
// Initialize damage
m_damage.Init(m_hObject);
m_damage.SetHitPoints(5.0f); // A minor number of hitpoints
m_damage.SetApplyDamagePhysics(DFALSE);
// Mark this object as savable
DDWORD dwFlags = pServerDE->GetObjectUserFlags(m_hObject);
dwFlags |= USRFLG_SAVEABLE | USRFLG_SINGULARITY_ATTRACT;
pServerDE->SetObjectUserFlags(m_hObject, dwFlags);
// Create a particle trail
if(m_dwTrailFXID)
{
HMESSAGEWRITE hMessage = pServerDE->StartSpecialEffectMessage(this);
pServerDE->WriteToMessageByte(hMessage, SFX_OBJECTFX_ID);
pServerDE->WriteToMessageObject(hMessage, m_hObject);
pServerDE->WriteToMessageVector(hMessage, &m_vTrailOffset);
pServerDE->WriteToMessageFloat(hMessage, m_fTrailScale);
pServerDE->WriteToMessageDWord(hMessage, m_dwTrailScaleFlags);
pServerDE->WriteToMessageDWord(hMessage, m_dwTrailFXID);
pServerDE->WriteToMessageDWord(hMessage, m_dwTrailFXFlags);
pServerDE->EndMessage2(hMessage, MESSAGE_GUARANTEED);
}
return DTRUE;
}
示例9: Init
DBOOL ClientLightFX::Init()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return DFALSE;
VEC_DIVSCALAR(m_vColor, m_vColor, 511.0f);
m_fStartTime = pServerDE->GetTime();
m_fIntensityPhase = DEG2RAD(m_fIntensityPhase);
m_fRadiusPhase = DEG2RAD(m_fRadiusPhase);
if (m_bOn)
{
DDWORD dwUsrFlags = pServerDE->GetObjectUserFlags(m_hObject);
dwUsrFlags |= USRFLG_VISIBLE | USRFLG_SAVEABLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
}
return DTRUE;
}
示例10: EngineMessageFn
DDWORD CDestructableBrush::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
switch(messageID)
{
case MID_UPDATE:
if (m_bDestructable && m_damage.IsDead())
{
DVector vDir;
m_damage.GetLastDamageDirection(&vDir);
m_Debris.Create(vDir, m_damage.GetLastDamageAmount());
CreateWorldModelDebris();
pServerDE->RemoveObject(m_hObject);
}
break;
case MID_PRECREATE:
{
// Need to call base class to have the object name read in before
// we call PostPropRead()
DDWORD dwRet = B2BaseClass::EngineMessageFn(messageID, pData, fData);
if (fData == PRECREATE_WORLDFILE || fData == PRECREATE_STRINGPROP)
{
ReadProp((ObjectCreateStruct*)pData);
}
PostPropRead((ObjectCreateStruct*)pData);
return dwRet;
}
break;
case MID_INITIALUPDATE:
{
if (fData != INITIALUPDATE_SAVEGAME)
{
m_damage.Init(m_hObject);
m_damage.SetHitPoints(m_fInitHitPoints);
m_damage.SetMass(m_fMass);
m_Debris.Init(m_hObject);
pServerDE->SetNextUpdate(m_hObject, 0.000f);
m_damage.SetApplyDamagePhysics(m_bPushable);
if (m_bPushable)
{
pServerDE->SetBlockingPriority(m_hObject, BLOCKPRIORITY_PUSHABLE);
// Mark this object as moveable
DDWORD dwUsrFlags = pServerDE->GetObjectUserFlags(m_hObject);
dwUsrFlags |= USRFLG_MOVEABLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
}
else
{
pServerDE->SetBlockingPriority(m_hObject, BLOCKPRIORITY_NONPUSHABLE);
}
// Mark this object as savable
DDWORD dwFlags = g_pServerDE->GetObjectUserFlags(m_hObject);
dwFlags |= USRFLG_SAVEABLE;
dwFlags |= (m_eSurfType << 24);
g_pServerDE->SetObjectUserFlags(m_hObject, dwFlags);
}
}
break;
case MID_SAVEOBJECT:
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
break;
case MID_LOADOBJECT:
Load((HMESSAGEREAD)pData, (DDWORD)fData);
break;
default : break;
}
return B2BaseClass::EngineMessageFn(messageID, pData, fData);
}
示例11: Load
void VolumeBrush::Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !hRead) return;
DFLOAT fTime = pServerDE->GetTime();
// pServerDE->ReadFromLoadSaveMessageObject(hRead, &m_hSurfaceObj);
m_fViscosity = pServerDE->ReadFromMessageFloat(hRead);
m_eContainerCode = (ContainerCode)pServerDE->ReadFromMessageByte(hRead);
pServerDE->ReadFromMessageVector(hRead, &m_vCurrent);
m_fDamage = pServerDE->ReadFromMessageFloat(hRead);
m_nDamageType = pServerDE->ReadFromMessageByte(hRead);
m_fSurfaceHeight = pServerDE->ReadFromMessageFloat(hRead);
m_bShowSurface = pServerDE->ReadFromMessageByte(hRead);
pServerDE->ReadFromMessageVector(hRead, &m_vSurfaceColor1);
pServerDE->ReadFromMessageVector(hRead, &m_vSurfaceColor2);
pServerDE->ReadFromMessageVector(hRead, &m_vLastPos);
m_bHidden = pServerDE->ReadFromMessageByte(hRead);
m_fGravity = pServerDE->ReadFromMessageFloat(hRead);
m_fLastDamageTime = pServerDE->ReadFromMessageFloat(hRead) + fTime;
m_fXScaleMin = pServerDE->ReadFromMessageFloat(hRead);
m_fXScaleMax = pServerDE->ReadFromMessageFloat(hRead);
m_fYScaleMin = pServerDE->ReadFromMessageFloat(hRead);
m_fYScaleMax = pServerDE->ReadFromMessageFloat(hRead);
m_fXScaleDuration = pServerDE->ReadFromMessageFloat(hRead);
m_fYScaleDuration = pServerDE->ReadFromMessageFloat(hRead);
m_hstrSurfaceSprite = pServerDE->ReadFromMessageHString(hRead);
m_dwFlags = pServerDE->ReadFromMessageDWord(hRead);
m_dwSaveFlags = pServerDE->ReadFromMessageDWord(hRead);
m_bLocked = pServerDE->ReadFromMessageByte(hRead);
m_bUnlockKeyRemove = pServerDE->ReadFromMessageByte(hRead);
m_hstrKeyName = pServerDE->ReadFromMessageHString(hRead);
m_bFogEnable = pServerDE->ReadFromMessageByte(hRead);
m_fFogFarZ = pServerDE->ReadFromMessageFloat(hRead);
m_fFogNearZ = pServerDE->ReadFromMessageFloat(hRead);
pServerDE->ReadFromMessageVector(hRead, &m_vFogColor);
m_fSurfaceAlpha = pServerDE->ReadFromMessageFloat(hRead);
m_dwNumSurfacePolies = pServerDE->ReadFromMessageDWord(hRead);
// Recreate the surface
if (m_bShowSurface)
{
CreateSurface();
}
DDWORD dwUserFlags = m_bHidden ? 0 : USRFLG_VISIBLE;
dwUserFlags |= USRFLG_SAVEABLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUserFlags);
if (m_hSurfaceObj)
{
pServerDE->SetObjectUserFlags(m_hSurfaceObj, dwUserFlags);
}
}
示例12: EngineMessageFn
DDWORD CClientParticleStreamSFX::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return 0;
switch(messageID)
{
case MID_PRECREATE:
{
// Only read properties if object was created from a world file.
if (fData == PRECREATE_WORLDFILE)
{
ReadProp((ObjectCreateStruct*)pData);
}
break;
}
case MID_INITIALUPDATE:
{
if (fData != INITIALUPDATE_SAVEGAME)
{
pServerDE->SetNextUpdate(m_hObject, 0.0f);
DDWORD dwFlags = g_pServerDE->GetObjectFlags(m_hObject);
dwFlags &= ~FLAG_GRAVITY;
dwFlags |= FLAG_FORCECLIENTUPDATE;
g_pServerDE->SetObjectFlags(m_hObject, dwFlags);
DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject);
dwUsrFlags |= USRFLG_SAVEABLE;
if(bOn) dwUsrFlags |= USRFLG_VISIBLE;
else dwUsrFlags &= ~USRFLG_VISIBLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
SetupFX();
}
CacheFiles();
break;
}
/* No updates necessary for this object, since it the flags can be set by the trigger fn.
GK 8/20/98
case MID_UPDATE:
{
DDWORD dwUsrFlags = g_pServerDE->GetObjectUserFlags(m_hObject);
if(bOn) dwUsrFlags |= USRFLG_VISIBLE;
else dwUsrFlags &= ~USRFLG_VISIBLE;
pServerDE->SetObjectUserFlags(m_hObject, dwUsrFlags);
pServerDE->SetNextUpdate(m_hObject, 0.1f);
if(!pServerDE) pServerDE->RemoveObject(m_hObject);
break;
}
*/
case MID_SAVEOBJECT:
{
Save((HMESSAGEWRITE)pData, (DDWORD)fData);
}
break;
case MID_LOADOBJECT:
{
Load((HMESSAGEREAD)pData, (DDWORD)fData);
}
break;
default : break;
}
return CClientSFX::EngineMessageFn(messageID, pData, fData);
}