本文整理汇总了C++中CServerDE::GetObjectPos方法的典型用法代码示例。如果您正苦于以下问题:C++ CServerDE::GetObjectPos方法的具体用法?C++ CServerDE::GetObjectPos怎么用?C++ CServerDE::GetObjectPos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CServerDE
的用法示例。
在下文中一共展示了CServerDE::GetObjectPos方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Copy
DBOOL PathListData::Copy(HOBJECT hPathPoint)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!hPathPoint || !pServerDE) return DFALSE;
// Get the Object Position
pServerDE->GetObjectPos(hPathPoint, &m_vPos);
char* pName = pServerDE->GetObjectName(hPathPoint);
if (pName)
{
m_hstrName = pServerDE->CreateString(pName);
}
// Get the Objects action
PathPoint *pPathPoint = (PathPoint*)pServerDE->HandleToObject(hPathPoint);
HSTRING hstrAction = pPathPoint->GetActionTarget();
if (hstrAction)
{
m_hstrActionTarget = pServerDE->CopyString(hstrAction);
}
hstrAction = pPathPoint->GetActionMessage();
if (hstrAction)
{
m_hstrActionMessage = pServerDE->CopyString(hstrAction);
}
return DTRUE;
}
示例2: AddSmokeTrail
void CProjectile::AddSmokeTrail(DVector vVel)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE) return;
ObjectCreateStruct theStruct;
INIT_OBJECTCREATESTRUCT(theStruct);
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
VEC_COPY(theStruct.m_Pos, vPos);
HCLASS hClass = pServerDE->GetClass("CClientSmokeTrail");
CClientSmokeTrail* pTrail = DNULL;
if (hClass)
{
pTrail = (CClientSmokeTrail*)pServerDE->CreateObject(hClass, &theStruct);
}
if (pTrail)
{
pTrail->Setup(vVel, DTRUE);
m_hSmokeTrail = pTrail->m_hObject;
}
}
示例3: CreateBoundingBox
void Trigger::CreateBoundingBox()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
ObjectCreateStruct theStruct;
INIT_OBJECTCREATESTRUCT(theStruct);
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
VEC_COPY(theStruct.m_Pos, vPos);
SAFE_STRCPY(theStruct.m_Filename, "Models\\Props\\1x1_square.abc");
// strcpy(theStruct.m_SkinName, "SpecialFX\\smoke.dtx");
theStruct.m_Flags = FLAG_VISIBLE;
HCLASS hClass = pServerDE->GetClass("Model");
LPBASECLASS pModel = pServerDE->CreateObject(hClass, &theStruct);
if (pModel)
{
m_hBoundingBox = pModel->m_hObject;
DVector vDims;
pServerDE->GetObjectDims(m_hObject, &vDims);
DVector vScale;
VEC_DIVSCALAR(vScale, vDims, 0.5f);
pServerDE->ScaleObject(m_hBoundingBox, &vScale);
}
pServerDE->SetObjectColor(m_hBoundingBox, GetRandom(0.5f, 1.0f),
GetRandom(0.5f, 1.0f), GetRandom(0.5f, 1.0f), 1.0f);
}
示例4: ObjectMessageFn
DDWORD Cat::ObjectMessageFn(HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead)
{
switch(messageID)
{
case MID_DAMAGE:
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) break;
DVector vDir;
pServerDE->ReadFromMessageVector(hRead, &vDir);
DFLOAT fDamage = pServerDE->ReadFromMessageFloat(hRead);
DamageType eType = (DamageType)pServerDE->ReadFromMessageByte(hRead);
HOBJECT hHeHitMe = pServerDE->ReadFromMessageObject(hRead);
if (eType == DT_SQUEAKY)
{
if (m_hstrSqueakedAtSound)
{
char* pSound = pServerDE->GetStringData(m_hstrSqueakedAtSound);
if (pSound) PlaySoundFromObject(m_hObject, pSound, m_fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM );
}
// If we're supposed to trigger something, trigger it here
if (m_hstrSqueakyTarget && m_hstrSqueakyMessage)
{
SendTriggerMsgToObjects(this, m_hstrSqueakyTarget, m_hstrSqueakyMessage);
}
}
else
{
if (m_hstrDeathSound)
{
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
char* pSound = pServerDE->GetStringData(m_hstrDeathSound);
if (pSound) PlaySoundFromPos(&vPos, pSound, m_fSoundRadius, SOUNDPRIORITY_MISC_MEDIUM );
}
if (m_hstrDeathTriggerTarget && m_hstrDeathTriggerMessage)
{
SendTriggerMsgToObjects(this, m_hstrDeathTriggerTarget, m_hstrDeathTriggerMessage);
}
pServerDE->RemoveObject(m_hObject);
}
break;
}
default : break;
}
return InventoryItem::ObjectMessageFn(hSender, messageID, hRead);
}
示例5: Update
DBOOL CHandWeaponModel::Update()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return 0;
if (m_bFirstUpdate)
{
m_bFirstUpdate = DFALSE;
DDWORD dwFlags = pServerDE->GetObjectFlags(m_hObject);
if (m_bVisible)
pServerDE->SetObjectFlags(m_hObject, dwFlags | FLAG_VISIBLE);
else
pServerDE->SetObjectFlags(m_hObject, dwFlags & ~FLAG_VISIBLE);
if( !m_bDropped )
{
pServerDE->SetNextUpdate(m_hObject, 0.0f);
return DTRUE;
}
}
// See if standing on anything
CollisionInfo collisionInfo;
pServerDE->GetStandingOn(m_hObject, &collisionInfo);
DBOOL bIsStandingOn = (collisionInfo.m_hObject != DNULL);
if (bIsStandingOn)
{
// Spawn a powerup
DVector vF, vPos, vU;
DRotation rRot;
// We want the rotation aligned.
pServerDE->GetObjectRotation(m_hObject, &rRot);
pServerDE->GetRotationVectors(&rRot, &vU, &vPos, &vF);
vF.y = 0.0f;
VEC_SET(vU, 0,1,0);
pServerDE->AlignRotation(&rRot, &vF, &vU);
pServerDE->GetObjectPos(m_hObject, &vPos);
vPos.y += 10;
SpawnWeaponPickup(m_dwType, m_hObject, &vPos, &rRot, !m_bOwnedByPlayer);
return DFALSE;
}
pServerDE->SetNextUpdate( m_hObject, 0.01f);
return DTRUE;
}
示例6: DamageObjectsWithinRadius
void CProjectile::DamageObjectsWithinRadius()
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE) return;
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
DFLOAT fRadius = (DFLOAT)m_nRadius;
DamageObjectsInRadius(m_hFiredFrom, this, vPos, fRadius, m_fDamage, m_nDamageType);
}
示例7: CreateSurface
void VolumeBrush::CreateSurface()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE) return;
ObjectCreateStruct theStruct;
INIT_OBJECTCREATESTRUCT(theStruct);
DVector vPos, vDims, vScale;
VEC_INIT(vScale);
pServerDE->GetObjectDims(m_hObject, &vDims);
pServerDE->GetObjectPos(m_hObject, &vPos);
DRotation rRot;
pServerDE->GetObjectRotation(m_hObject, &rRot);
VEC_COPY(m_vLastPos, vPos);
vPos.y += vDims.y - (m_fSurfaceHeight/2.0f);
VEC_COPY(theStruct.m_Pos, vPos);
ROT_COPY(theStruct.m_Rotation, rRot);
HCLASS hClass = pServerDE->GetClass("PolyGrid");
PolyGrid* pSurface = DNULL;
if (hClass)
{
pSurface = (PolyGrid *)pServerDE->CreateObject(hClass, &theStruct);
}
if (pSurface)
{
m_hSurfaceObj = pSurface->m_hObject;
vDims.y = m_fSurfaceHeight;
DFLOAT fXPan = 1.0f + (m_vCurrent.x * 0.01f);
DFLOAT fYPan = 1.0f + (m_vCurrent.y * 0.01f);
pSurface->Setup(&vDims, &m_vSurfaceColor1, &m_vSurfaceColor2,
m_hstrSurfaceSprite, m_fXScaleMin, m_fXScaleMax,
m_fYScaleMin, m_fYScaleMax, m_fXScaleDuration,
m_fYScaleDuration, fXPan, fYPan, m_fSurfaceAlpha,
m_dwNumSurfacePolies);
// pServerDE->SetObjectColor(m_hSurfaceObj,1.0f,0,0,0.1f);
}
}
示例8: SanjuroInRange
DBOOL Gabriel::SanjuroInRange()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || !m_hTarget) return DFALSE;
DVector vTargetPos;
pServerDE->GetObjectPos(m_hTarget, &vTargetPos);
if (VEC_DIST(vTargetPos, m_vPos) <= MAX_ATTACK_DIST)
{
return DTRUE;
}
return DFALSE;
}
示例9: Update
void CMovement::Update()
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE || !m_hObject) return;
// Save our last position...
VEC_COPY(m_vLastPos,m_vPos);
pServerDE->GetObjectPos(m_hObject, &m_vPos);
// Retrieve object vectors for current frame..
pServerDE->GetObjectRotation(m_hObject, &m_rRot);
pServerDE->GetRotationVectors(&m_rRot, &m_vUp, &m_vRight, &m_vForward);
return;
}
示例10: CreateShield
void Gabriel::CreateShield()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || m_hShield) return;
ObjectCreateStruct theStruct;
INIT_OBJECTCREATESTRUCT(theStruct);
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
VEC_COPY(theStruct.m_Pos, vPos);
SAFE_STRCPY(theStruct.m_Filename, "Models\\PV_Weapons\\SpiderExplosionCore.abc");
SAFE_STRCPY(theStruct.m_SkinName, "SpecialFX\\Explosions\\SpiderCore.dtx");
theStruct.m_ObjectType = OT_MODEL;
theStruct.m_Flags = FLAG_VISIBLE | FLAG_GOTHRUWORLD;
HCLASS hClass = pServerDE->GetClass("BaseClass");
LPBASECLASS pModel = pServerDE->CreateObject(hClass, &theStruct);
if (!pModel) return;
m_hShield = pModel->m_hObject;
DVector vScale;
VEC_SET(vScale, 150.0f, 300.0f, 150.0f);
pServerDE->ScaleObject(m_hShield, &vScale);
pServerDE->SetObjectColor(m_hShield, 1.0f, 0.5f, 0.0f, 0.5f);
// Attach the sheild model to Gabriel...
DVector vOffset;
VEC_INIT(vOffset);
DRotation rOffset;
ROT_INIT(rOffset);
HATTACHMENT hAttachment;
DRESULT dRes = pServerDE->CreateAttachment(m_hObject, m_hShield, DNULL,
&vOffset, &rOffset, &hAttachment);
if (dRes != DE_OK)
{
pServerDE->RemoveObject(m_hShield);
m_hShield = DNULL;
}
}
示例11: 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();
}
示例12: 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);
}
示例13: Update
DBOOL CProjectile::Update(DVector *pMovement)
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE) return DFALSE;
pServerDE->SetNextUpdate(m_hObject, (DFLOAT)0.001);
// pServerDE->BPrint("hit points %f", m_damage.GetHitPoints());
if (m_bExplode || m_damage.IsDead())
{
Explode();
return DFALSE;
}
if (m_fLifeTime > 0)
{
DFLOAT fTime = pServerDE->GetTime();
if(fTime > (m_fStartTime + m_fLifeTime))
{
return DFALSE;
}
}
DVector vVel, vPos;
pServerDE->GetVelocity(m_hObject, &vVel);
pServerDE->GetObjectPos(m_hObject, &vPos);
if (m_hSmokeTrail)
{
pServerDE->SetObjectPos(m_hSmokeTrail, &vPos);
}
if (m_hLight)
{
pServerDE->SetObjectPos(m_hLight, &vPos);
}
return DTRUE;
}
示例14: HandleDestruction
void CDestructable::HandleDestruction()
{
CServerDE* pServerDE = BaseClass::GetServerDE();
if (!pServerDE) return;
if (m_hstrDeathTriggerTarget)
{
LPBASECLASS pD = pServerDE->HandleToObject(m_hObject);
SendTriggerMsgToObjects(pD, m_hstrDeathTriggerTarget, m_hstrDeathTriggerMessage);
}
// See if we need to spawn anything
if (m_hstrSpawnObject)
{
DVector vPos;
DRotation rRot;
pServerDE->GetObjectPos(m_hObject, &vPos);
pServerDE->GetObjectRotation(m_hObject, &rRot);
SpawnObject(pServerDE->GetStringData(m_hstrSpawnObject), &vPos, &rRot, &m_vSpawnObjectVel);
}
}
示例15: Update
void VolumeBrush::Update()
{
CServerDE* pServerDE = GetServerDE();
if (!pServerDE || m_bHidden) return;
// Only do updates if we have a surface...
if (m_hSurfaceObj)
{
pServerDE->SetNextUpdate(m_hObject, UPDATE_DELTA);
}
else
{
pServerDE->SetNextUpdate(m_hObject, 0.0f);
}
// See if we have moved...
DVector vPos;
pServerDE->GetObjectPos(m_hObject, &vPos);
if (m_hSurfaceObj && !(m_vLastPos.x == vPos.x &&m_vLastPos.y == vPos.y && m_vLastPos.z == vPos.z))
{
VEC_COPY(m_vLastPos, vPos);
// Set the surface to its new position...
DVector vDims;
pServerDE->GetObjectDims(m_hObject, &vDims);
vPos.y += vDims.y - (m_fSurfaceHeight/2.0f);
pServerDE->SetObjectPos(m_hSurfaceObj, &vPos);
}
}