void FlagStand::OnInitialUpdate(void* pData, DFLOAT fData) { // Set the dims... DVector vDims; g_pServerDE->GetModelAnimUserDims(m_hObject, &vDims, g_pServerDE->GetModelAnimation(m_hObject)); if (g_pServerDE->SetObjectDims2(m_hObject, &vDims) == DE_ERROR) { g_pServerDE->SetObjectDims(m_hObject, &vDims); } // Move the flag stand to the ground... MoveObjectToGround(m_hObject); // Create our trigger string if necessary... if (!m_hFlagGiveString) { m_hFlagGiveString = g_pServerDE->CreateString("flaggive"); } // Spawn our flag object... SpawnFlag(); }
void FlagObject::DropToGround() { // Move the flag to the ground... MoveObjectToGround(m_hObject); // Flag that we are not in our stand... m_bInStand = DFALSE; m_bOnGround = DTRUE; m_bWithPlayer = DFALSE; // Set our next update so that we'll respawn if we're still on the ground... g_pServerDE->SetNextUpdate(m_hObject, 30.0f); }
DDWORD PickupObject::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData) { if( g_pServerDE ) { switch(messageID) { case MID_UPDATE: { Update((DVector *)pData); break; } case MID_TOUCHNOTIFY: { ObjectTouch((HOBJECT)pData); break; } case MID_PRECREATE: { DDWORD dwRet = B2BaseClass::EngineMessageFn(messageID, pData, fData); if (fData == PRECREATE_WORLDFILE ) ReadProp((ObjectCreateStruct*)pData); if( fData == PRECREATE_STRINGPROP) { ReadProp((ObjectCreateStruct*)pData); } PostPropRead((ObjectCreateStruct*)pData); return dwRet; } case MID_INITIALUPDATE: { if (fData != INITIALUPDATE_SAVEGAME) { InitialUpdate((DVector *)pData); } if (fData == INITIALUPDATE_WORLDFILE) { MoveObjectToGround(m_hObject); } else if( fData == PRECREATE_STRINGPROP) { DVector vPos; g_pServerDE->GetObjectPos(m_hObject, &vPos); SpawnItem( &vPos ); } CacheFiles(); 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); }