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


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

本文整理汇总了C++中CServerDE::Random方法的典型用法代码示例。如果您正苦于以下问题:C++ CServerDE::Random方法的具体用法?C++ CServerDE::Random怎么用?C++ CServerDE::Random使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CServerDE的用法示例。


在下文中一共展示了CServerDE::Random方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: InitialUpdate

DBOOL BugAI::InitialUpdate(DVector *pMovement)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE) return DFALSE;

	//Load up animation indexes if first model instance
    if(m_bLoadAnims)
	{
	    m_Anim_Sound.SetAnimationIndexes(m_hObject);
		m_Anim_Sound.GenerateHitSpheres(m_hObject);
	    m_Anim_Sound.SetSoundRoot("sounds\\enemies\\bug");
		m_bLoadAnims = DFALSE;
	}

	//randomize the size/weight
	DFLOAT fScale = pServerDE->Random(-0.05f, 0.1f);
	VEC_SET(m_vScale,1.0f + fScale, 1.0f, 1.0f + fScale);

    // Init the objects
	m_InventoryMgr.Init(m_hObject);
    
	//Set hit points
	m_damage.Init(m_hObject);
	m_damage.SetHitPoints(m_fAIHitPoints + pServerDE->Random(1,m_fAIRandomHP));
	m_damage.SetMaxHitPoints(m_damage.GetHitPoints());

	//Set armor point
	m_damage.SetArmorPoints(m_fAIArmorPoints);
	m_damage.SetMaxArmorPoints(200.0f);
	m_damage.SetMass(m_fAIMass);

	AI_Mgr::InitStatics(&m_Anim_Sound);
	
	return DTRUE;
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:35,代码来源:bug.cpp

示例2: InitialUpdate

DBOOL ClientLightFX::InitialUpdate(DVector *pMovement)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE) return DFALSE;

	m_damage.Init(m_hObject);
	m_damage.SetMaxHitPoints(m_fHitPts);
	m_damage.SetHitPoints(m_fHitPts);

    // Set Next update (randomize it if this object was loaded from the
	// level - so we don't have all the lights updating on the same frame)...
	
	DFLOAT fOffset = 0.0f;
	if (!m_bDynamic) fOffset = pServerDE->Random(0.01f, 0.5f);

	if (m_bOn)
	{
		pServerDE->SetNextUpdate(m_hObject, UPDATE_DELTA + fOffset);
	}

	Init();

	SendEffectMessage();

	return DTRUE;
}
开发者ID:Arc0re,项目名称:lithtech,代码行数:26,代码来源:ClientLightFX.cpp

示例3: Update


//.........这里部分代码省略.........
            {
            	// Remove everything if we're done.
            	if (fTime > m_fStartTime[x] + m_fDuration[x])
        	    {
            
        	        m_fStartTime[x] = pServerDE->GetTime();
            
    		        if (m_hSprite[x]) 
					{
						g_pServerDE->RemoveObject(m_hSprite[x]);
						m_hSprite[x] = DNULL;
					}
    		        if (m_hSmokeTrail[x])
					{
						g_pServerDE->RemoveObject(m_hSmokeTrail[x]);
						m_hSmokeTrail[x] = DNULL;
					}
                
                    // Add Flame
                    VEC_INIT(m_vUp);
            	    VEC_INIT(m_vRight);
                	VEC_INIT(m_vForward);

                    if (!m_hLinkObject) return DFALSE;
            	    pServerDE->GetObjectRotation(m_hLinkObject, &rRot);
                	pServerDE->GetRotationVectors(&rRot, &m_vUp, &m_vRight, &m_vForward);    

                    if (!m_hLinkObject) return DFALSE;
             	    pServerDE->GetObjectDims(m_hLinkObject, &vDims);
                	pServerDE->GetObjectPos(m_hLinkObject, &vPos);
                    
                    // Need to use the Dims of the Object to set these!!!
					VEC_MULSCALAR(vDims, vDims, 0.8f);
                    DFLOAT m_fForwardOffset = pServerDE->Random(-vDims.x, vDims.x);
                    DFLOAT m_fUpOffset = pServerDE->Random(-vDims.y, vDims.y/2.0f);
                    DFLOAT m_fRightOffset = pServerDE->Random(-vDims.z, vDims.z);
    
    	            VEC_MULSCALAR(vTemp, m_vForward, m_fForwardOffset);
        	        VEC_ADD(vPos, vPos, vTemp);
    
                    // vPos is a point in front of you.
                    // vDir is a point in front of you, but down
        	        VEC_COPY(vDir, vPos);
                	vDir.y = vDir.y - m_fUpOffset;
                	vDir.x = vDir.x - m_fRightOffset;
					vDir.z = vDir.z - m_fForwardOffset;
                
            	    VEC_COPY(vPos, vDir);

                    ObjectCreateStruct theStruct;
                    INIT_OBJECTCREATESTRUCT(theStruct);

                    theStruct.m_Flags = FLAG_VISIBLE;
                    theStruct.m_ObjectType = OT_SPRITE; 
					VEC_COPY(theStruct.m_Pos, vPos);

        			theStruct.m_SkinName[0] = '\0';
	        		theStruct.m_NextUpdate = 0.0f;
		        	_mbscpy((unsigned char*)theStruct.m_Filename, (const unsigned char*)"Sprites\\gibflame.spr");
				    VEC_COPY(theStruct.m_Scale, m_vScale)

                    HCLASS hClass = pServerDE->GetClass("BaseClass");
        
                    if (hClass)
                    {
                	    LPBASECLASS	pSprite = pServerDE->CreateObject(hClass, &theStruct);
开发者ID:bsmr-games,项目名称:Blood2,代码行数:67,代码来源:FireFX.cpp

示例4: FirstUpdate

void FireFX::FirstUpdate()
{
	CServerDE* pServerDE = BaseClass::GetServerDE();
	if (!pServerDE) return;

	// Can Create Up to 5 Fire Object at a Time....
    // Create Random durations for each Flame
    for (int x=0; x<MAXFIRES; x++)
    {
        m_fDuration[x] = pServerDE->Random(0.25f, 0.50f);
        m_fStartTime[x] = pServerDE->GetTime();
    }            

    // If FireFx was created from something else then They would set the LinkObject    
    
    if (m_hLinkObject == DNULL)
    {
    	DVector vPos;
    	pServerDE->GetObjectPos(m_hObject, &vPos);

        //
        // Need to get this name from the Props...
        //
        
    	ObjectList* pTargets = pServerDE->FindNamedObjects(pServerDE->GetStringData(m_hstrAttachTo));
        
        
	    if (!pTargets || pTargets->m_nInList <= 0) return;

        // Found all the Objects
    	ObjectLink *pLink = pTargets->m_pFirstLink;
        
    	while(pLink && pLink->m_hObject)
	    {
		    HCLASS hType = pServerDE->GetObjectClass(pLink->m_hObject);

            HCLASS hObjectTest = pServerDE->GetClass("CBaseCharacter");

		    if( (pServerDE->IsKindOf(hType, hObjectTest)) )
    		{
                m_hLinkObject = pLink->m_hObject;
				break;
    		}

            // Next object
		    pLink = pLink->m_pNext;
    	}

        // clean up	
	    pServerDE->RelinquishList(pTargets);

    }

    if (m_hLinkObject)
    {
        m_bFirstUpdate = DFALSE;

        // Create a Link to the Object on Fire
	   	pServerDE->CreateInterObjectLink(m_hObject, m_hLinkObject);

	    if (m_hLight == DNULL)
        {
            // Add Light
            ObjectCreateStruct theStruct;
        	INIT_OBJECTCREATESTRUCT(theStruct);

        	theStruct.m_Flags = FLAG_VISIBLE;
        	theStruct.m_ObjectType = OT_LIGHT; 
           //	VEC_COPY(theStruct.m_Pos, *pvPos);
            pServerDE->GetObjectPos(m_hObject, &theStruct.m_Pos);

        	HCLASS hClass = pServerDE->GetClass("BaseClass");
        
            if (hClass)
            {
                LPBASECLASS	pLight = pServerDE->CreateObject(hClass, &theStruct);
                if (pLight)
                {
            	    m_hLight = pLight->m_hObject;
                	pServerDE->SetLightRadius(m_hLight, 250.0f);
                	pServerDE->SetLightColor(m_hLight, 0.7f, 0.5f, 0.5f);
                }
            }        
        }
    } 
    
}
开发者ID:bsmr-games,项目名称:Blood2,代码行数:87,代码来源:FireFX.cpp


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