예제 #1
0
//-----------------------------------------------------------------------------
// 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;
			}
		}
	}
}
예제 #2
0
//-----------------------------------------------------------------------------
// 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;
}
예제 #3
0
//-----------------------------------------------------------------------------
// 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));
		}
	}
}