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); } } }