Esempio n. 1
0
STATICMODULEDATA IMS_ModuleDataManager::GetStaticModuleData(string configfile, IMSFILE cfg)
//returns a pointer to the IMS_General_ModuleData with the passed name if it was already loaded, NULL otherwise
{
//	GetConsumableData("dummy");

	//get the data from the map
	STATICMODULEDATA data = _staticModuleData[configfile];
	//if not loaded yet, load the config file. Technically, they should both be either NULL or valid
	if (data.moduleData == NULL || data.orbiterData == NULL)
	{
		if (cfg.file == NULL)
		//open the file if it isn't open already
		{
			string fullpath = "Vessels\\" + configfile;
			cfg.file = oapiOpenFile(fullpath.c_str(), FILE_IN, CONFIG);
		}

		//get the module type from the config
		data.moduleData = new IMS_General_ModuleData;
		data.orbiterData = new IMS_Orbiter_ModuleData;

		//load the data from the config file and put them in the map
		data.orbiterData->LoadFromFile(configfile, cfg);
		data.moduleData->LoadFromFile(configfile, cfg);

		_staticModuleData[configfile].moduleData = data.moduleData;
		_staticModuleData[configfile].orbiterData = data.orbiterData;
	}
	return data;
}
Esempio n. 2
0
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 );
}
Server::Server(void) : _isRunning(false), _port(0), _interval(0.5)
{
	// Get the MFD refresh interval from the Orbiter configuration
	FILEHANDLE ocfg = oapiOpenFile("Orbiter.cfg", FILE_IN);
	oapiReadItem_float(ocfg, "InstrumentUpdateInterval", _interval);
	oapiCloseFile(ocfg, FILE_IN);

	// Creates the mutex to access the shared resources
	_mfdsMutex = CreateMutex(NULL, FALSE, NULL);
}
Esempio n. 4
0
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;
}