SwitchPanel::SwitchPanel() { handle = hid_open(0x06a3, 0x0d67, NULL); oapiWriteLog("Device opened"); // Set the hid_read() function to be non-blocking. hid_set_nonblocking(handle, 1); }
void D3D11Config::saveConfig() { oapiWriteLogV("D3D11Config::saveConfig"); // Clear out the file std::ofstream ofs; ofs.open("D3D11Client.cfg", std::ofstream::out | std::ofstream::trunc); ofs.close(); FILEHANDLE hCfgFile = oapiOpenFile( "D3D11Client.cfg", FILE_OUT, ROOT ); if (!hCfgFile ) { oapiWriteLog( "Unable to create config file" ); return; } //GENERAL: oapiWriteItem_int( hCfgFile, "Threading", m_FileConfig.Thread_mode ); oapiWriteItem_int( hCfgFile, "Supported AA modes", m_FileConfig.AA_count ); oapiWriteItem_int( hCfgFile, "Selected AA mode", m_FileConfig.AA_mode ); // Format and write the AA modes, need to use strcpy because of Orbiter functions char line[32], tag[64], temp[16]; strcpy( line, "AA_mode" ); for( WORD j = 0; j < m_FileConfig.AA_count; j++ ) { sprintf( tag, "%s_%d", line, j ); oapiWriteItem_string( hCfgFile, tag, temp); vecAAModes[j].desc = temp; sprintf( tag, "%s_%d_count", line, j ); oapiWriteItem_int( hCfgFile, tag, vecAAModes[j].SampleDesc.Count ); sprintf( tag, "%s_%d_quality", line, j ); oapiWriteItem_int( hCfgFile, tag, vecAAModes[j].SampleDesc.Quality ); } oapiWriteItem_int( hCfgFile, "Sketchpad mode", m_FileConfig.Sketchpad_mode ); oapiWriteItem_int( hCfgFile, "MFD filter", m_FileConfig.MFD_filter ); oapiWriteItem_int( hCfgFile, "MFD transparency", m_FileConfig.MFD_transparency ); oapiWriteItem_int( hCfgFile, "PP Effect Enabled", m_FileConfig.PP_effect_enable ); //VESSELS: oapiWriteItem_int( hCfgFile, "Mesh mip maps", m_FileConfig.Mesh_Texture_Mip_maps ); oapiWriteItem_int( hCfgFile, "Mesh texture filter", m_FileConfig.Mesh_Texture_Filter ); oapiWriteItem_int( hCfgFile, "Enable mesh normal maps", m_FileConfig.Mesh_Normal_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh bump maps", m_FileConfig.Mesh_Bump_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh specular maps", m_FileConfig.Mesh_Specular_maps ); oapiWriteItem_int( hCfgFile, "Enable mesh emissive maps", m_FileConfig.Mesh_Emissive_maps ); // oapiWriteItem_int( hCfgFile, "Enable PS local lighting", m_FileConfig.PStream_LLights ); // oapiWriteItem_int( hCfgFile, "Enable base local lighting", m_FileConfig.Base_LLights ); //PLANETS: oapiWriteItem_int( hCfgFile, "Planet texture filter", m_FileConfig.Planet_Texture_filter ); oapiWriteItem_int( hCfgFile, "Planet tile loading frequency", m_FileConfig.Planet_Tile_loading_Freq ); oapiCloseFile( hCfgFile, FILE_OUT ); }
bool D3D11Config::loadConfig() { oapiWriteLogV("D3D11Config::loadConfig"); // Check if the file is not there if (!std::ifstream("D3D11Client.cfg") ) { // Its not there so init this D3D11Config object and create file in saveConfig() setDefault(); saveConfig(); return true; } // It exists, read it FILEHANDLE hCfgFile = oapiOpenFile( "D3D11Client.cfg", FILE_IN, ROOT ); // D3D11 options oapiReadItem_int( hCfgFile, "Supported AA modes", m_FileConfig.AA_count ); oapiReadItem_int( hCfgFile, "Selected AA mode", m_FileConfig.AA_mode ); // If we could not get AA_count, the file could not be opened // TODO: Apparently AA_count HAS to be there ? Why ? if (m_FileConfig.AA_count < 1) { oapiWriteLog( "ERROR : Unable to load config file" ); oapiCloseFile( hCfgFile, FILE_IN ); setDefault(); saveConfig(); return true; } // Read the AA modes, need to use strcpy because of Orbiter functions vecAAModes.resize(m_FileConfig.AA_count); int tmp; char line[32], tag[64], temp[16]; strcpy( line, "AA_mode" ); for(int index = 0; index < m_FileConfig.AA_count; ++index ) { sprintf( tag, "%s_%d", line, index); oapiReadItem_string( hCfgFile, tag, temp); vecAAModes[index].desc = temp; sprintf( tag, "%s_%d_count", line, index); oapiReadItem_int( hCfgFile, tag, tmp ); vecAAModes[index].SampleDesc.Count = tmp; sprintf( tag, "%s_%d_quality", line, index); oapiReadItem_int( hCfgFile, tag, tmp ); vecAAModes[index].SampleDesc.Quality = tmp; } oapiReadItem_int( hCfgFile, "Threading", m_FileConfig.Thread_mode ); oapiReadItem_int( hCfgFile, "Sketchpad mode", m_FileConfig.Sketchpad_mode ); oapiReadItem_int( hCfgFile, "MFD filter", m_FileConfig.MFD_filter ); oapiReadItem_int( hCfgFile, "MFD transparency", m_FileConfig.MFD_transparency ); oapiReadItem_int( hCfgFile, "PP Effect Enabled", m_FileConfig.PP_effect_enable ); // Read vessel related options oapiReadItem_int( hCfgFile, "Mesh mip maps", m_FileConfig.Mesh_Texture_Mip_maps ); oapiReadItem_int( hCfgFile, "Mesh texture filter", m_FileConfig.Mesh_Texture_Filter ); oapiReadItem_int( hCfgFile, "Enable mesh normal maps", m_FileConfig.Mesh_Normal_maps ); oapiReadItem_int( hCfgFile, "Enable mesh bump maps", m_FileConfig.Mesh_Bump_maps ); oapiReadItem_int( hCfgFile, "Enable mesh specular maps", m_FileConfig.Mesh_Specular_maps ); oapiReadItem_int( hCfgFile, "Enable mesh emissive maps", m_FileConfig.Mesh_Emissive_maps ); // oapiReadItem_int( hCfgFile, "Enable PS local lighting", m_FileConfig.PStream_LLights ); // oapiReadItem_int( hCfgFile, "Enable base local lighting", m_FileConfig.Base_LLights ); // Read planet related options oapiReadItem_int( hCfgFile, "Planet texture filter", m_FileConfig.Planet_Texture_filter ); oapiReadItem_int( hCfgFile, "Planet tile loading frequency", m_FileConfig.Planet_Tile_loading_Freq ); oapiCloseFile( hCfgFile, FILE_IN ); // Check values m_FileConfig.Thread_mode = m_FileConfig.Thread_mode > 1 ? 0 : (m_FileConfig.Thread_mode < 0 ? 0 : m_FileConfig.Thread_mode); m_FileConfig.Sketchpad_mode = m_FileConfig.Sketchpad_mode > 2 ? 0 : (m_FileConfig.Sketchpad_mode < 0 ? 0 : m_FileConfig.Sketchpad_mode); m_FileConfig.Mesh_Texture_Mip_maps = m_FileConfig.Mesh_Texture_Mip_maps > 2 ? 0 : (m_FileConfig.Mesh_Texture_Mip_maps < 0 ? 0 : m_FileConfig.Mesh_Texture_Mip_maps); m_FileConfig.Mesh_Texture_Filter = m_FileConfig.Mesh_Texture_Filter > 4 ? 0 : (m_FileConfig.Mesh_Texture_Filter < 0 ? 0 : m_FileConfig.Mesh_Texture_Filter); m_FileConfig.Planet_Texture_filter = m_FileConfig.Planet_Texture_filter > 4 ? 0 : (m_FileConfig.Planet_Texture_filter < 0 ? 0 : m_FileConfig.Planet_Texture_filter); m_FileConfig.Planet_Tile_loading_Freq = m_FileConfig.Planet_Tile_loading_Freq > 200 ? 50 : (m_FileConfig.Planet_Tile_loading_Freq < 0 ? 50 : m_FileConfig.Planet_Tile_loading_Freq); return true; }