Example #1
0
void CEditorGame::InitForceFeedbackEnums( IGameToEditorInterface* pGTE )
{
	CRY_ASSERT(pGTE);

	IForceFeedbackSystem* pForceFeedback = g_pGame->GetIGameFramework()->GetIForceFeedbackSystem();
	if (pForceFeedback)
	{
		struct SEffectList : public IFFSPopulateCallBack
		{
			explicit SEffectList(int effectCount)
				: m_maxNumNames(effectCount)
				, m_nameCount(0)
			{
				m_allEffectNames = new const char*[effectCount];
			}

			~SEffectList()
			{
				SAFE_DELETE_ARRAY(m_allEffectNames);
			}

			//IFFSPopulateCallBack
			virtual void AddFFSEffectName( const char* const pName )
			{
				assert(m_nameCount < m_maxNumNames);

				if (m_nameCount < m_maxNumNames)
				{
					m_allEffectNames[m_nameCount] = pName;
					m_nameCount++;
				}
			}
			//~IFFSPopulateCallBack

			const char** m_allEffectNames;
			int m_maxNumNames;
			int m_nameCount;
		};

		int effectCount = pForceFeedback->GetEffectNamesCount();
		if (effectCount > 0)
		{
			SEffectList effectList(effectCount);

			pForceFeedback->EnumerateEffects(&effectList);

			pGTE->SetUIEnums("forceFeedback", effectList.m_allEffectNames, effectList.m_nameCount);
		}
	}
}