当前位置: 首页>>代码示例>>C++>>正文


C++ CServerDE::SetObjectUserFlags方法代码示例

本文整理汇总了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;
}
开发者ID:jordandavidson,项目名称:lithtech,代码行数:54,代码来源:VolumeBrush.cpp

示例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;
    }
}
开发者ID:jordandavidson,项目名称:lithtech,代码行数:48,代码来源:VolumeBrush.cpp

示例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;
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:25,代码来源:Trigger.cpp

示例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);
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:54,代码来源:ObjectiveTrigger.cpp

示例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();
}
开发者ID:jordandavidson,项目名称:lithtech,代码行数:17,代码来源:Rain.cpp

示例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);
}
开发者ID:bsmr-games,项目名称:Blood2,代码行数:42,代码来源:PolyGrid.cpp

示例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);
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:42,代码来源:ClientExplosionSFX.cpp

示例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;
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:42,代码来源:Projectile.cpp

示例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;
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:22,代码来源:ClientLightFX.cpp

示例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);
}
开发者ID:bsmr-games,项目名称:Blood2,代码行数:83,代码来源:DestructableBrush.cpp

示例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);
    }

}
开发者ID:jordandavidson,项目名称:lithtech,代码行数:65,代码来源:VolumeBrush.cpp

示例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);
}
开发者ID:bsmr-games,项目名称:Blood2,代码行数:73,代码来源:ClientParticleStreamSFX.cpp


注:本文中的CServerDE::SetObjectUserFlags方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。