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; }
LTBOOL ClientLightFX::InitialUpdate(LTVector *pMovement) { 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)... LTFLOAT fOffset = 0.0f; if (!m_bDynamic) fOffset = g_pLTServer->Random(0.01f, 0.5f); if (m_bStartOn && m_fLifeTime > 0) { SetNextUpdate(UPDATE_DELTA + fOffset); } else { SetNextUpdate(0.0f); } Init(); SendEffectMessage(); return LTTRUE; }
void Rain::TriggerMsg(HOBJECT hSender, HSTRING hMsg) { CServerDE* pServerDE = GetServerDE(); HSTRING hstr; hstr = pServerDE->CreateString(g_szTriggerOn); if (pServerDE->CompareStringsUpper(hMsg, hstr)) SendEffectMessage(); pServerDE->FreeString(hstr); }
DBOOL PickupObject::InitialUpdate(DVector* pMovement) { if (m_bBouncing) { g_pServerDE->SetNextUpdate(m_hObject, 0.001f); } else { g_pServerDE->SetNextUpdate(m_hObject, 0.0f); } // Mark this object as savable DDWORD dwFlags = g_pServerDE->GetObjectUserFlags(m_hObject); dwFlags |= USRFLG_SAVEABLE | USERFLG_NIGHTGOGGLESGLOW; // If we are a rotator, set a flag if(m_bRotate) dwFlags |= USRFLG_PICKUPOBJ_ROTATE; g_pServerDE->SetObjectUserFlags(m_hObject, dwFlags); // Set some minimum dims, and make sure x and z are the same. DVector vDims; g_pServerDE->GetModelAnimUserDims(m_hObject, &vDims, g_pServerDE->GetModelAnimation(m_hObject)); if (vDims.x < 10.0f) vDims.x = 10.0f; if (vDims.x > vDims.z) vDims.z = vDims.x; // g_pServerDE->BPrint("Setting PU dims %f,%f,%f", VEC_EXPAND(vDims)); if (g_pServerDE->SetObjectDims2(m_hObject, &vDims) == DE_ERROR) g_pServerDE->SetObjectDims(m_hObject, &vDims); SendEffectMessage(); g_pServerDE->SetDeactivationTime(m_hObject, 1.0f); if( m_hstrDisplayName ) g_pServerDE->FreeString( m_hstrDisplayName ); // Get the name from the resources if there is one, otherwise use the object name if(m_nNameID) { // g_pServerDE->FreeString(m_hstrObjectName); m_hstrDisplayName = g_pServerDE->FormatString(m_nNameID); } else m_hstrDisplayName = g_pServerDE->CopyString( m_hstrObjectName ); return DTRUE; }
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(); }
void Rain::Setup(DFLOAT fDensity, DVector vDims, DFLOAT fLifeTime, DVector vDir, DBOOL bGravity, DFLOAT fScale, DFLOAT fSpread, DVector vColor1, DVector vColor2, DFLOAT fTimeLimit, DFLOAT fPulse) { m_fDensity = fDensity; VEC_COPY(m_vDims,vDims); m_fLifetime = fLifeTime; m_bGravity = bGravity; m_fParticleScale = fScale; m_fSpread = fSpread; VEC_COPY(m_vDirection,vDir); VEC_COPY(m_vColor1,vColor1); VEC_COPY(m_vColor2,vColor2); m_fTimeLimit = fTimeLimit; m_fPulse = fPulse; SendEffectMessage(); return; }
void Rain::Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags) { CServerDE* pServerDE = GetServerDE(); if (!pServerDE || !hRead) return; m_dwFlags = pServerDE->ReadFromMessageDWord(hRead); m_fDensity = pServerDE->ReadFromMessageFloat(hRead); m_fLifetime = pServerDE->ReadFromMessageFloat(hRead); m_bGravity = pServerDE->ReadFromMessageByte(hRead); m_fParticleScale= pServerDE->ReadFromMessageFloat(hRead); m_fSpread = pServerDE->ReadFromMessageFloat(hRead); m_bTriggered = pServerDE->ReadFromMessageByte(hRead); pServerDE->ReadFromMessageVector(hRead, &m_vDims); pServerDE->ReadFromMessageVector(hRead, &m_vDirection); pServerDE->ReadFromMessageVector(hRead, &m_vColor1); pServerDE->ReadFromMessageVector(hRead, &m_vColor2); m_fTimeLimit = pServerDE->ReadFromMessageFloat(hRead); m_fPulse = pServerDE->ReadFromMessageFloat(hRead); // Tell the clients about the Rain if (!m_bTriggered) SendEffectMessage(); }