/** * Saves all node related ini file settings. ***/ void OculusTracker::SaveIniSettings() { // get file path char szFilePathINI[1024]; GetCurrentDirectoryA(1024, szFilePathINI); strcat_s(szFilePathINI, "\\VireioPerception.ini"); bool bFileExists = false; // save ini file m_aaunKeys[1][Index_ovrButton_A] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][0]), "LibOVR", "aaunKeys[1][Index_ovrButton_A]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_B] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][1]), "LibOVR", "aaunKeys[1][Index_ovrButton_B]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RThumb] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][2]), "LibOVR", "aaunKeys[1][Index_ovrButton_RThumb]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RShoulder] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][3]), "LibOVR", "aaunKeys[1][Index_ovrButton_RShoulder]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_X] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][4]), "LibOVR", "aaunKeys[1][Index_ovrButton_X]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Y] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][5]), "LibOVR", "aaunKeys[1][Index_ovrButton_Y]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LThumb] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][6]), "LibOVR", "aaunKeys[1][Index_ovrButton_LThumb]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LShoulder] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][7]), "LibOVR", "aaunKeys[1][Index_ovrButton_LShoulder]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Up] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][8]), "LibOVR", "aaunKeys[1][Index_ovrButton_Up]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Down] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][9]), "LibOVR", "aaunKeys[1][Index_ovrButton_Down]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Left] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][10]), "LibOVR", "aaunKeys[1][Index_ovrButton_Left]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Right] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][11]), "LibOVR", "aaunKeys[1][Index_ovrButton_Right]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Enter] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][12]), "LibOVR", "aaunKeys[1][Index_ovrButton_Enter]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Back] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][13]), "LibOVR", "aaunKeys[1][Index_ovrButton_Back]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_VolUp] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][14]), "LibOVR", "aaunKeys[1][Index_ovrButton_VolUp]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_VolDown] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][15]), "LibOVR", "aaunKeys[1][Index_ovrButton_VolDown]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Home] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][16]), "LibOVR", "aaunKeys[1][Index_ovrButton_Home]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_UpL] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][17]), "LibOVR", "aaunKeys[1][Index_ovrButton_UpL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_DownL] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][18]), "LibOVR", "aaunKeys[1][Index_ovrButton_DownL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LeftL] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][19]), "LibOVR", "aaunKeys[1][Index_ovrButton_LeftL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RightL] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][20]), "LibOVR", "aaunKeys[1][Index_ovrButton_RightL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_UpR] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][21]), "LibOVR", "aaunKeys[1][Index_ovrButton_UpR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_DownR] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][22]), "LibOVR", "aaunKeys[1][Index_ovrButton_DownR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LeftR] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][23]), "LibOVR", "aaunKeys[1][Index_ovrButton_LeftR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RightR] = GetIniFileSettingKeyCode(GetStringByVKCode(m_aaunKeys[1][24]), "LibOVR", "aaunKeys[1][Index_ovrButton_RightR]", szFilePathINI, bFileExists); m_afPositionOrigin[0] = GetIniFileSetting(m_afPositionOrigin[0], "LibOVR", "afPositionOrigin[0]", szFilePathINI, bFileExists); m_afPositionOrigin[1] = GetIniFileSetting(m_afPositionOrigin[1], "LibOVR", "afPositionOrigin[1]", szFilePathINI, bFileExists); m_afPositionOrigin[2] = GetIniFileSetting(m_afPositionOrigin[2], "LibOVR", "afPositionOrigin[2]", szFilePathINI, bFileExists); }
/** * Constructor. ***/ OculusTracker::OculusTracker() :AQU_Nodus(), m_hBitmapControl(nullptr), m_bControlUpdate(false), m_hFont(nullptr), m_unRenderTextureWidth(0), m_unRenderTextureHeight(0), m_hSession(nullptr), m_nIniFrameCount(0) { ZeroMemory(&m_sDefaultFOVMatrixProjLeft, sizeof(D3DMATRIX)); ZeroMemory(&m_sDefaultFOVMatrixProjRight, sizeof(D3DMATRIX)); ZeroMemory(&m_fEulerPredicted[0], sizeof(float)* 3); ZeroMemory(&m_fPositionPredicted[0], sizeof(float)* 3); ZeroMemory(&m_fEulerVelocity[0], sizeof(float)* 3); ZeroMemory(&m_fPositionVelocity[0], sizeof(float)* 3); m_cGameTimer.Reset(); // set default ini file settings m_afPositionOrigin[0] = 0.0f; m_afPositionOrigin[1] = 1.7f; /**< Default y tracking origin : 1.7 meters **/ m_afPositionOrigin[2] = 0.0f; // Touch predefined keyboard codes std::string astrVKCodes_Touch[] = { "VK_RETURN", // Index_ovrButton_A "VK_SPACE", // Index_ovrButton_B "X", // Index_ovrButton_RThumb "VK_BACK", // Index_ovrButton_RShoulder "VK_LBUTTON", // Index_ovrButton_X "VK_RBUTTON", // Index_ovrButton_Y "X", // Index_ovrButton_LThumb "VK_TAB", // Index_ovrButton_LShoulder "X", // Index_ovrButton_Up "X", // Index_ovrButton_Down "X", // Index_ovrButton_Left "X", // Index_ovrButton_Right "VK_ESCAPE", // Index_ovrButton_Enter "X", // Index_ovrButton_Back "X", // Index_ovrButton_VolUp "X", // Index_ovrButton_VolDown "VK_C", // Index_ovrButton_Home "VK_W", // Index_ovrButton_UpL "VK_S", // Index_ovrButton_DownL "VK_A", // Index_ovrButton_LeftL "VK_D", // Index_ovrButton_RightL "WM_MOUSEMOVE", // Index_ovrButton_UpR "WM_MOUSEMOVE", // Index_ovrButton_DownR "WM_MOUSEMOVE", // Index_ovrButton_LeftR "WM_MOUSEMOVE" }; // Index_ovrButton_RightR // set inner scope for (UINT unI = 0; unI < 5; unI++) { m_aafAxisScopeOrFactor[0][unI] = 0.8f; m_aafAxisScopeOrFactor[1][unI] = 0.8f; } // set movement factor for trackpad 0 m_aafAxisScopeOrFactor[0][0] = 10.0f; // locate or create the INI file char szFilePathINI[1024]; GetCurrentDirectoryA(1024, szFilePathINI); strcat_s(szFilePathINI, "\\VireioPerception.ini"); bool bFileExists = false; if (PathFileExistsA(szFilePathINI)) bFileExists = true; // get ini file settings m_afPositionOrigin[0] = GetIniFileSetting(m_afPositionOrigin[0], "LibOVR", "afPositionOrigin[0]", szFilePathINI, bFileExists); m_afPositionOrigin[1] = GetIniFileSetting(m_afPositionOrigin[1], "LibOVR", "afPositionOrigin[1]", szFilePathINI, bFileExists); m_afPositionOrigin[2] = GetIniFileSetting(m_afPositionOrigin[2], "LibOVR", "afPositionOrigin[2]", szFilePathINI, bFileExists); // set default key codes > Touch m_aaunKeys[1][Index_ovrButton_A] = GetIniFileSettingKeyCode(astrVKCodes_Touch[0], "LibOVR", "aaunKeys[1][Index_ovrButton_A]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_B] = GetIniFileSettingKeyCode(astrVKCodes_Touch[1], "LibOVR", "aaunKeys[1][Index_ovrButton_B]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RThumb] = GetIniFileSettingKeyCode(astrVKCodes_Touch[2], "LibOVR", "aaunKeys[1][Index_ovrButton_RThumb]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RShoulder] = GetIniFileSettingKeyCode(astrVKCodes_Touch[3], "LibOVR", "aaunKeys[1][Index_ovrButton_RShoulder]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_X] = GetIniFileSettingKeyCode(astrVKCodes_Touch[4], "LibOVR", "aaunKeys[1][Index_ovrButton_X]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Y] = GetIniFileSettingKeyCode(astrVKCodes_Touch[5], "LibOVR", "aaunKeys[1][Index_ovrButton_Y]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LThumb] = GetIniFileSettingKeyCode(astrVKCodes_Touch[6], "LibOVR", "aaunKeys[1][Index_ovrButton_LThumb]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LShoulder] = GetIniFileSettingKeyCode(astrVKCodes_Touch[7], "LibOVR", "aaunKeys[1][Index_ovrButton_LShoulder]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Up] = GetIniFileSettingKeyCode(astrVKCodes_Touch[8], "LibOVR", "aaunKeys[1][Index_ovrButton_Up]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Down] = GetIniFileSettingKeyCode(astrVKCodes_Touch[9], "LibOVR", "aaunKeys[1][Index_ovrButton_Down]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Left] = GetIniFileSettingKeyCode(astrVKCodes_Touch[10], "LibOVR", "aaunKeys[1][Index_ovrButton_Left]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Right] = GetIniFileSettingKeyCode(astrVKCodes_Touch[11], "LibOVR", "aaunKeys[1][Index_ovrButton_Right]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Enter] = GetIniFileSettingKeyCode(astrVKCodes_Touch[12], "LibOVR", "aaunKeys[1][Index_ovrButton_Enter]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Back] = GetIniFileSettingKeyCode(astrVKCodes_Touch[13], "LibOVR", "aaunKeys[1][Index_ovrButton_Back]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_VolUp] = GetIniFileSettingKeyCode(astrVKCodes_Touch[14], "LibOVR", "aaunKeys[1][Index_ovrButton_VolUp]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_VolDown] = GetIniFileSettingKeyCode(astrVKCodes_Touch[15], "LibOVR", "aaunKeys[1][Index_ovrButton_VolDown]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_Home] = GetIniFileSettingKeyCode(astrVKCodes_Touch[16], "LibOVR", "aaunKeys[1][Index_ovrButton_Home]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_UpL] = GetIniFileSettingKeyCode(astrVKCodes_Touch[17], "LibOVR", "aaunKeys[1][Index_ovrButton_UpL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_DownL] = GetIniFileSettingKeyCode(astrVKCodes_Touch[18], "LibOVR", "aaunKeys[1][Index_ovrButton_DownL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LeftL] = GetIniFileSettingKeyCode(astrVKCodes_Touch[19], "LibOVR", "aaunKeys[1][Index_ovrButton_LeftL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RightL] = GetIniFileSettingKeyCode(astrVKCodes_Touch[20], "LibOVR", "aaunKeys[1][Index_ovrButton_RightL]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_UpR] = GetIniFileSettingKeyCode(astrVKCodes_Touch[21], "LibOVR", "aaunKeys[1][Index_ovrButton_UpR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_DownR] = GetIniFileSettingKeyCode(astrVKCodes_Touch[22], "LibOVR", "aaunKeys[1][Index_ovrButton_DownR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_LeftR] = GetIniFileSettingKeyCode(astrVKCodes_Touch[23], "LibOVR", "aaunKeys[1][Index_ovrButton_LeftR]", szFilePathINI, bFileExists); m_aaunKeys[1][Index_ovrButton_RightR] = GetIniFileSettingKeyCode(astrVKCodes_Touch[24], "LibOVR", "aaunKeys[1][Index_ovrButton_RightR]", szFilePathINI, bFileExists); // erase key bool field ZeroMemory(&m_aabKeys[0][0], sizeof(BOOL)* 3 * 25); // extended keys set ? for (UINT unI = 0; unI < 3; unI++) for (UINT unJ = 0; unJ < 25; unJ++) { if ((m_aaunKeys[unI][unJ] == VK_UP) || (m_aaunKeys[unI][unJ] == VK_DOWN) || (m_aaunKeys[unI][unJ] == VK_LBUTTON) || (m_aaunKeys[unI][unJ] == VK_UP) || (m_aaunKeys[unI][unJ] == VK_SHIFT) || (m_aaunKeys[unI][unJ] == VK_CONTROL) || (m_aaunKeys[unI][unJ] == VK_BACK) || (m_aaunKeys[unI][unJ] == VK_INSERT) || (m_aaunKeys[unI][unJ] == VK_DELETE) || (m_aaunKeys[unI][unJ] == VK_HOME) || (m_aaunKeys[unI][unJ] == VK_END) || (m_aaunKeys[unI][unJ] == VK_MBUTTON) || (m_aaunKeys[unI][unJ] == VK_LBUTTON) || (m_aaunKeys[unI][unJ] == VK_RBUTTON) || (m_aaunKeys[unI][unJ] == VK_LCONTROL) || (m_aaunKeys[unI][unJ] == VK_RCONTROL) || (m_aaunKeys[unI][unJ] == VK_RMENU) || (m_aaunKeys[unI][unJ] == VK_LMENU)) m_aabKeyExtended[unI][unJ] = TRUE; else m_aabKeyExtended[unI][unJ] = FALSE; } // create the menu ZeroMemory(&m_sMenu, sizeof(VireioSubMenu)); m_sMenu.strSubMenu = "Oculus Tracker"; // add touch menu options static UINT s_unDummy[26]; for (UINT unIx = 0; unIx < 25; unIx++) { VireioMenuEntry sEntry = {}; sEntry.strEntry = astrTouchControls[unIx]; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry_UInt; sEntry.unMinimum = 0; sEntry.unMaximum = 1; sEntry.unChangeSize = 1; sEntry.punValue = &s_unDummy[unIx]; sEntry.unValue = s_unDummy[unIx]; sEntry.bValueEnumeration = true; // add "X" std::string strX = std::string("X"); sEntry.astrValueEnumeration.push_back(strX); // loop through VK codes, add possible strings for (UINT unVK = 1; unVK < 256; unVK++) { // get string std::string strEnum = GetStringByVKCode(unVK); if (strEnum != "X") { // is current selection ? if (unVK == m_aaunKeys[1][unIx]) { s_unDummy[unIx] = sEntry.unValue = (UINT)sEntry.astrValueEnumeration.size(); } sEntry.astrValueEnumeration.push_back(strEnum); sEntry.unMaximum++; } } m_sMenu.asEntries.push_back(sEntry); } // position origin x { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Origin X"; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry_Float; sEntry.fMinimum = -5.0f; sEntry.fMaximum = 5.0f; sEntry.fChangeSize = 0.01f; sEntry.pfValue = &m_afPositionOrigin[0]; sEntry.fValue = m_afPositionOrigin[0]; m_sMenu.asEntries.push_back(sEntry); } // position origin y { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Origin Y"; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry_Float; sEntry.fMinimum = -5.0f; sEntry.fMaximum = 5.0f; sEntry.fChangeSize = 0.01f; sEntry.pfValue = &m_afPositionOrigin[1]; sEntry.fValue = m_afPositionOrigin[1]; m_sMenu.asEntries.push_back(sEntry); } // position origin z { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Origin Z"; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry_Float; sEntry.fMinimum = -5.0f; sEntry.fMaximum = 5.0f; sEntry.fChangeSize = 0.01f; sEntry.pfValue = &m_afPositionOrigin[2]; sEntry.fValue = m_afPositionOrigin[2]; m_sMenu.asEntries.push_back(sEntry); } }
/** * Constructor. ***/ StereoPresenter::StereoPresenter() :AQU_Nodus(), m_pcBackBufferView(nullptr), m_pcVertexShader10(nullptr), m_pcPixelShader10(nullptr), m_pcVertexLayout10(nullptr), m_pcVertexBuffer10(nullptr), m_pcConstantBufferDirect10(nullptr), m_pcDSGeometry11(nullptr), m_pcDSVGeometry11(nullptr), m_pcSampler11(nullptr), m_bHotkeySwitch(false), m_eStereoMode(VireioMonitorStereoModes::Vireio_Mono), m_bMenu(false), m_bMenuHotkeySwitch(false), m_pcFontSegeo128(nullptr), m_ppcTexViewMenu(nullptr), m_pbCinemaMode(nullptr) { m_ppcTexView11[0] = nullptr; m_ppcTexView11[1] = nullptr; m_strFontName = std::string("PassionOne"); m_unFontSelection = 0; // read or create the INI file char szFilePathINI[1024]; GetCurrentDirectoryA(1024, szFilePathINI); strcat_s(szFilePathINI, "\\VireioPerception.ini"); bool bFileExists = false; if (PathFileExistsA(szFilePathINI)) bFileExists = true; // read settings m_strFontName = GetIniFileSetting(m_strFontName, "Stereo Presenter", "strFontName", szFilePathINI, bFileExists); // TODO !! LOOP THROUGH AVAILABLE MENUES, SET SECONDARY VALUE ! (IN FIRST PROVOKING CALL) ZeroMemory(&m_apsSubMenues[0], sizeof(VireioSubMenu*)); ZeroMemory(&m_sMenuControl, sizeof(MenuControl)); m_sMenuControl.nMenuIx = -1; // -1 = main menu ZeroMemory(&m_abMenuEvents[0], sizeof(VireioMenuEvent)* (int)VireioMenuEvent::NumberOfEvents); // create the main menu ZeroMemory(&m_sMainMenu, sizeof(VireioSubMenu)); m_sMainMenu.strSubMenu = "Vireio Perception Profile Settings"; // create entries for all 32 possible sub menu connections for (UINT unIx = 0; unIx < 32; unIx++) { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Inactive"; sEntry.bIsActive = false; sEntry.eType = VireioMenuEntry::EntryType::Entry; m_sMainMenu.asEntries.push_back(sEntry); } // add an entry for the stereo presenter sub menu { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Stereo Presenter"; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry; m_sMainMenu.asEntries.push_back(sEntry); } // create the presenter sub menu ZeroMemory(&m_sSubMenu, sizeof(VireioSubMenu)); m_sSubMenu.strSubMenu = "Stereo Presenter"; #pragma region entry font { VireioMenuEntry sEntry = {}; sEntry.strEntry = "Font"; sEntry.bIsActive = true; sEntry.eType = VireioMenuEntry::EntryType::Entry_UInt; sEntry.unMinimum = 0; sEntry.unMaximum = 6; sEntry.unChangeSize = 1; sEntry.bValueEnumeration = true; { std::string strEnum = "PassionOne"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "ComicSansMS"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "JacintoSans"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "bitwise"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "SegoeUI128"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "UltimateGameplayer"; sEntry.astrValueEnumeration.push_back(strEnum); } { std::string strEnum = "Videophreak"; sEntry.astrValueEnumeration.push_back(strEnum); } // TODO !! LOOP THROUGH SELECTIONS sEntry.punValue = &m_unFontSelection; sEntry.unValue = *sEntry.punValue; m_sSubMenu.asEntries.push_back(sEntry); } #pragma endregion }