//----------------------------------------------------------------------------- // Purpose: // Input : pError - //----------------------------------------------------------------------------- static void FixDuplicateKeys(MapError *pError) { // find duplicate keys in keyvalues and kill them CMapEntity *pEntity = (CMapEntity *)pError->pObjects[0]; int nKeyValues = pEntity->GetKeyValueCount(); DoAgain: for (int i = 0; i < nKeyValues; i++) { for (int j = 0; j < nKeyValues; j++) { if (i == j) { continue; } if (!strcmpi(pEntity->GetKey(i), pEntity->GetKey(j))) { pEntity->RemoveKey(i); //--kv.nkv; goto DoAgain; } } } }
//----------------------------------------------------------------------------- // Purpose: // Input : iInterpolator - // Output : IPositionInterpolator //----------------------------------------------------------------------------- IPositionInterpolator* CMapKeyFrame::SetupPositionInterpolator( int iInterpolator ) { if( iInterpolator != m_iPositionInterpolator ) { if( m_pPositionInterpolator ) m_pPositionInterpolator->Release(); m_pPositionInterpolator = Motion_GetPositionInterpolator( iInterpolator ); m_iPositionInterpolator = iInterpolator; // Feed keys.. CMapEntity *pEnt = GetParentEntity(); if( pEnt ) { for ( int i=pEnt->GetFirstKeyValue(); i != pEnt->GetInvalidKeyValue(); i=pEnt->GetNextKeyValue( i ) ) { m_pPositionInterpolator->ProcessKey( pEnt->GetKey( i ), pEnt->GetKeyValue( i ) ); } } } return m_pPositionInterpolator; }
//----------------------------------------------------------------------------- // Purpose: // Input : pError - //----------------------------------------------------------------------------- static void FixUnusedKeyvalues(MapError *pError) { CMapEntity *pEntity = (CMapEntity*) pError->pObjects[0]; GDclass *pClass = pEntity->GetClass(); if (!pClass) { return; } int nKeyValues = pEntity->GetKeyValueCount(); for (int i = nKeyValues - 1; i >= 0; i--) { if (pClass->VarForName(pEntity->GetKey(i)) == NULL) { pEntity->DeleteKeyValue(pEntity->GetKey(i)); } } }