void CBodyFX::UpdateMarker() { if (!m_pClientDE || !m_hServerObject) return; CClientInfoMgr *pClientMgr = g_pInterfaceMgr->GetClientInfoMgr(); if (!pClientMgr) return; CLIENT_INFO* pLocalInfo = pClientMgr->GetLocalClient(); CLIENT_INFO* pInfo = pClientMgr->GetClientByID(m_bs.nClientId); if (!pInfo || !pLocalInfo) return; LTBOOL bSame = (pInfo->team == pLocalInfo->team); if (bSame) { if (m_hMarker) RemoveMarker(); return; } uint32 dwFlags = g_pLTClient->GetObjectFlags(m_hServerObject); if (!(dwFlags & FLAG_VISIBLE)) { RemoveMarker(); return; } LTVector vU, vR, vF, vTemp, vDims, vPos; LTRotation rRot; ILTPhysics* pPhysics = m_pClientDE->Physics(); m_pClientDE->GetObjectPos(m_hServerObject, &vPos); pPhysics->GetObjectDims(m_hServerObject, &vDims); vPos.y += (vDims.y + 20.0f); if (!m_hMarker) { CreateMarker(vPos,bSame); } if (m_hMarker) { m_pClientDE->SetObjectPos(m_hMarker, &vPos); } }
CBodyFX::~CBodyFX() { RemoveMarker(); if ( m_hServerObject ) { g_pModelLT->RemoveTracker(m_hServerObject, &m_TwitchTracker); } }
/*virtual*/ void WBCompEldMapMarker::HandleEvent( const WBEvent& Event ) { Super::HandleEvent( Event ); STATIC_HASHED_STRING( OnMoved ); STATIC_HASHED_STRING( OnTurned ); STATIC_HASHED_STRING( OnInitializedQueued ); STATIC_HASHED_STRING( OnDestroyed ); const HashedString EventName = Event.GetEventName(); if( EventName == sOnInitializedQueued ) { AddMarker(); UpdateMarker(); } else if( EventName == sOnMoved || sOnTurned ) { UpdateMarker(); } else if( EventName == sOnDestroyed ) { RemoveMarker(); } }