Esempio n. 1
0
/**
* 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);
}
Esempio n. 2
0
/**
* 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
}