#include <Include/general.hxx>
#include <Main/globals.hxx>
+#include <Main/fg_props.hxx>
#include <Scenery/tileentry.hxx>
#include "matlib.hxx"
// after a failed >> operation.
char token = 0;
- in >> material_name >> token;
-
- if ( token == '{' ) {
- FGNewMat m;
- in >> m;
-
- // build the ssgSimpleState
- FGPath tex_path( globals->get_options()->get_fg_root() );
- tex_path.append( "Textures.high" );
-
- FGPath tmp_path = tex_path;
- tmp_path.append( m.get_texture_name() );
- if ( ! local_file_exists(tmp_path.str())
- || general.get_glMaxTexSize() < 512 ) {
- tex_path = FGPath( globals->get_options()->get_fg_root() );
- tex_path.append( "Textures" );
- }
+ in >> material_name;
+
+ if ( material_name == "alias" ) {
+ string src_mat, dst_mat;
+ in >> dst_mat >> src_mat;
+ FG_LOG( FG_GENERAL, FG_INFO, " Material alias: " << dst_mat <<
+ " mapped to " << src_mat );
+ FGNewMat m = matlib[src_mat];
+ matlib[dst_mat] = m;
+ } else {
+ in >> token;
+
+ if ( token == '{' ) {
+ FGNewMat m;
+ in >> m;
+
+ // build the ssgSimpleState
+ FGPath tex_path( globals->get_fg_root() );
+ tex_path.append( "Textures.high" );
+
+ FGPath tmp_path = tex_path;
+ tmp_path.append( m.get_texture_name() );
+ if ( ! local_file_exists(tmp_path.str())
+ || general.get_glMaxTexSize() < 512 ) {
+ tex_path = FGPath( globals->get_fg_root() );
+ tex_path.append( "Textures" );
+ }
- FG_LOG( FG_TERRAIN, FG_INFO, " Loading material "
- << material_name << " (" << tex_path.c_str() << ")");
-
- GLenum shade_model = GL_SMOOTH;
- if ( globals->get_options()->get_shading() == 1 ) {
- shade_model = GL_SMOOTH;
- } else {
- shade_model = GL_FLAT;
- }
+ FG_LOG( FG_TERRAIN, FG_INFO, " Loading material "
+ << material_name << " (" << tex_path.c_str() << ")");
- m.build_ssg_state( tex_path.str(), shade_model,
- globals->get_options()->get_textures() );
+ GLenum shade_model = GL_SMOOTH;
+ if ( fgGetBool("/sim/rendering/shading") ) {
+ shade_model = GL_SMOOTH;
+ } else {
+ shade_model = GL_FLAT;
+ }
+
+ m.build_ssg_state( tex_path.str(), shade_model,
+ fgGetBool("/sim/rendering/textures") );
#if EXTRA_DEBUG
- m.dump_info();
+ m.dump_info();
#endif
- matlib[material_name] = m;
+ matlib[material_name] = m;
+ }
}
}
+ // hard coded light state
+ ssgSimpleState *lights = new ssgSimpleState;
+ lights->ref();
+ lights->disable( GL_TEXTURE_2D );
+ lights->enable( GL_CULL_FACE );
+ lights->enable( GL_COLOR_MATERIAL );
+ lights->setColourMaterial( GL_AMBIENT_AND_DIFFUSE );
+ lights->setMaterial( GL_EMISSION, 0, 0, 0, 1 );
+ lights->setMaterial( GL_SPECULAR, 0, 0, 0, 1 );
+ lights->enable( GL_BLEND );
+ lights->disable( GL_ALPHA_TEST );
+ lights->disable( GL_LIGHTING );
+
+ FGNewMat m;
+ m.set_ssg_state( lights );
+ matlib["LIGHTS"] = m;
+
return true;
}
#endif
GLenum shade_model = GL_SMOOTH;
- if ( globals->get_options()->get_shading() == 1 ) {
+ if ( fgGetBool("/sim/rendering/shading") ) {
shade_model = GL_SMOOTH;
} else {
shade_model = GL_FLAT;
}
m.build_ssg_state( tex_path, shade_model,
- globals->get_options()->get_textures() );
+ fgGetBool("/sim/rendering/textures") );
material_lib.matlib[mat_name] = m;
slot.get_state()->selectStep(step);
}
}
+
+
+
+
+
+
+
+
+
+