Removed non-textured and flat shaded support because it really clutters up
the API and I don't believe we'd have any hope of running at any kind of reasonable frame rates on a non-hardware-3d accelerated box these days anyway.
This commit is contained in:
+30
-125
@@ -253,31 +253,24 @@ SGMaterial::ObjectGroup::get_object (int index) const
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
SGMaterial::SGMaterial( const string &fg_root,
|
SGMaterial::SGMaterial( const string &fg_root, const SGPropertyNode *props )
|
||||||
const SGPropertyNode *props,
|
|
||||||
bool smooth_shading,
|
|
||||||
bool use_textures )
|
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
read_properties( fg_root, props );
|
read_properties( fg_root, props );
|
||||||
build_ssg_state( false, smooth_shading, use_textures );
|
build_ssg_state( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
SGMaterial::SGMaterial( const string &texpath,
|
SGMaterial::SGMaterial( const string &texpath )
|
||||||
bool smooth_shading,
|
|
||||||
bool use_textures )
|
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
texture_path = texpath;
|
texture_path = texpath;
|
||||||
build_ssg_state( true, smooth_shading, use_textures );
|
build_ssg_state( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
SGMaterial::SGMaterial( ssgSimpleState *s,
|
SGMaterial::SGMaterial( ssgSimpleState *s )
|
||||||
bool smooth_shading,
|
|
||||||
bool use_textures )
|
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
set_ssg_state( s, smooth_shading, use_textures );
|
set_ssg_state( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
SGMaterial::~SGMaterial (void)
|
SGMaterial::~SGMaterial (void)
|
||||||
@@ -354,9 +347,7 @@ void
|
|||||||
SGMaterial::init ()
|
SGMaterial::init ()
|
||||||
{
|
{
|
||||||
texture_path = "";
|
texture_path = "";
|
||||||
state = 0;
|
state = NULL;
|
||||||
textured = 0;
|
|
||||||
nontextured = 0;
|
|
||||||
xsize = 0;
|
xsize = 0;
|
||||||
ysize = 0;
|
ysize = 0;
|
||||||
wrapu = true;
|
wrapu = true;
|
||||||
@@ -374,13 +365,12 @@ SGMaterial::init ()
|
|||||||
bool
|
bool
|
||||||
SGMaterial::load_texture ()
|
SGMaterial::load_texture ()
|
||||||
{
|
{
|
||||||
if (texture_loaded) {
|
if ( texture_loaded ) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
SG_LOG( SG_GENERAL, SG_INFO, "Loading deferred texture "
|
SG_LOG( SG_GENERAL, SG_INFO, "Loading deferred texture "
|
||||||
<< texture_path );
|
<< texture_path );
|
||||||
textured->setTexture( (char *)texture_path.c_str(),
|
state->setTexture( (char *)texture_path.c_str(), wrapu, wrapv, mipmap );
|
||||||
wrapu, wrapv, mipmap );
|
|
||||||
texture_loaded = true;
|
texture_loaded = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -388,140 +378,55 @@ SGMaterial::load_texture ()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SGMaterial::build_ssg_state( bool defer_tex_load,
|
SGMaterial::build_ssg_state( bool defer_tex_load )
|
||||||
bool smooth_shading,
|
|
||||||
bool use_textures )
|
|
||||||
{
|
{
|
||||||
GLenum shade_model = ( smooth_shading ? GL_SMOOTH : GL_FLAT);
|
GLenum shade_model = GL_SMOOTH;
|
||||||
|
|
||||||
state = new ssgStateSelector(2);
|
state = new ssgSimpleState();
|
||||||
state->ref();
|
state->ref();
|
||||||
|
|
||||||
textured = new ssgSimpleState();
|
|
||||||
textured->ref();
|
|
||||||
|
|
||||||
nontextured = new ssgSimpleState();
|
|
||||||
nontextured->ref();
|
|
||||||
|
|
||||||
// Set up the textured state
|
// Set up the textured state
|
||||||
textured->setShadeModel( shade_model );
|
state->setShadeModel( shade_model );
|
||||||
textured->enable( GL_LIGHTING );
|
state->enable( GL_LIGHTING );
|
||||||
textured->enable ( GL_CULL_FACE ) ;
|
state->enable ( GL_CULL_FACE ) ;
|
||||||
textured->enable( GL_TEXTURE_2D );
|
state->enable( GL_TEXTURE_2D );
|
||||||
textured->disable( GL_BLEND );
|
state->disable( GL_BLEND );
|
||||||
textured->disable( GL_ALPHA_TEST );
|
state->disable( GL_ALPHA_TEST );
|
||||||
if ( !defer_tex_load ) {
|
if ( !defer_tex_load ) {
|
||||||
SG_LOG(SG_INPUT, SG_INFO, " " << texture_path );
|
SG_LOG(SG_INPUT, SG_INFO, " " << texture_path );
|
||||||
textured->setTexture( (char *)texture_path.c_str(), wrapu, wrapv );
|
state->setTexture( (char *)texture_path.c_str(), wrapu, wrapv );
|
||||||
texture_loaded = true;
|
texture_loaded = true;
|
||||||
} else {
|
} else {
|
||||||
texture_loaded = false;
|
texture_loaded = false;
|
||||||
}
|
}
|
||||||
textured->enable( GL_COLOR_MATERIAL );
|
state->enable( GL_COLOR_MATERIAL );
|
||||||
#if 0
|
#if 0
|
||||||
textured->setColourMaterial( GL_AMBIENT_AND_DIFFUSE );
|
state->setColourMaterial( GL_AMBIENT_AND_DIFFUSE );
|
||||||
textured->setMaterial( GL_EMISSION, 0, 0, 0, 1 );
|
state->setMaterial( GL_EMISSION, 0, 0, 0, 1 );
|
||||||
textured->setMaterial( GL_SPECULAR, 0, 0, 0, 1 );
|
state->setMaterial( GL_SPECULAR, 0, 0, 0, 1 );
|
||||||
#else
|
#else
|
||||||
textured->setMaterial ( GL_AMBIENT,
|
state->setMaterial ( GL_AMBIENT,
|
||||||
ambient[0], ambient[1],
|
ambient[0], ambient[1],
|
||||||
ambient[2], ambient[3] ) ;
|
ambient[2], ambient[3] ) ;
|
||||||
textured->setMaterial ( GL_DIFFUSE,
|
state->setMaterial ( GL_DIFFUSE,
|
||||||
diffuse[0], diffuse[1],
|
diffuse[0], diffuse[1],
|
||||||
diffuse[2], diffuse[3] ) ;
|
diffuse[2], diffuse[3] ) ;
|
||||||
textured->setMaterial ( GL_SPECULAR,
|
state->setMaterial ( GL_SPECULAR,
|
||||||
specular[0], specular[1],
|
specular[0], specular[1],
|
||||||
specular[2], specular[3] ) ;
|
specular[2], specular[3] ) ;
|
||||||
textured->setMaterial ( GL_EMISSION,
|
state->setMaterial ( GL_EMISSION,
|
||||||
emission[0], emission[1],
|
emission[0], emission[1],
|
||||||
emission[2], emission[3] ) ;
|
emission[2], emission[3] ) ;
|
||||||
textured->setShininess ( shininess );
|
state->setShininess ( shininess );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set up the coloured state
|
|
||||||
nontextured->enable( GL_LIGHTING );
|
|
||||||
nontextured->setShadeModel( shade_model );
|
|
||||||
nontextured->enable ( GL_CULL_FACE ) ;
|
|
||||||
nontextured->disable( GL_TEXTURE_2D );
|
|
||||||
nontextured->disable( GL_BLEND );
|
|
||||||
nontextured->disable( GL_ALPHA_TEST );
|
|
||||||
nontextured->disable( GL_COLOR_MATERIAL );
|
|
||||||
|
|
||||||
nontextured->setMaterial ( GL_AMBIENT,
|
|
||||||
ambient[0], ambient[1],
|
|
||||||
ambient[2], ambient[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_DIFFUSE,
|
|
||||||
diffuse[0], diffuse[1],
|
|
||||||
diffuse[2], diffuse[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_SPECULAR,
|
|
||||||
specular[0], specular[1],
|
|
||||||
specular[2], specular[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_EMISSION,
|
|
||||||
emission[0], emission[1],
|
|
||||||
emission[2], emission[3] ) ;
|
|
||||||
nontextured->setShininess ( shininess );
|
|
||||||
|
|
||||||
state->setStep( 0, textured ); // textured
|
|
||||||
state->setStep( 1, nontextured ); // untextured
|
|
||||||
|
|
||||||
// Choose the appropriate starting state.
|
|
||||||
if ( use_textures ) {
|
|
||||||
state->selectStep(0);
|
|
||||||
} else {
|
|
||||||
state->selectStep(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SGMaterial::set_ssg_state( ssgSimpleState *s,
|
void SGMaterial::set_ssg_state( ssgSimpleState *s )
|
||||||
bool smooth_shading, bool use_textures )
|
|
||||||
{
|
{
|
||||||
GLenum shade_model = ( smooth_shading ? GL_SMOOTH : GL_FLAT);
|
state = s;
|
||||||
|
|
||||||
state = new ssgStateSelector(2);
|
|
||||||
state->ref();
|
state->ref();
|
||||||
|
|
||||||
textured = s;
|
|
||||||
texture_loaded = true;
|
texture_loaded = true;
|
||||||
|
|
||||||
nontextured = new ssgSimpleState();
|
|
||||||
nontextured->ref();
|
|
||||||
|
|
||||||
// Set up the textured state
|
|
||||||
textured->setShadeModel( shade_model );
|
|
||||||
|
|
||||||
// Set up the coloured state
|
|
||||||
nontextured->enable( GL_LIGHTING );
|
|
||||||
nontextured->setShadeModel( shade_model );
|
|
||||||
nontextured->enable ( GL_CULL_FACE ) ;
|
|
||||||
nontextured->disable( GL_TEXTURE_2D );
|
|
||||||
nontextured->disable( GL_BLEND );
|
|
||||||
nontextured->disable( GL_ALPHA_TEST );
|
|
||||||
nontextured->disable( GL_COLOR_MATERIAL );
|
|
||||||
|
|
||||||
nontextured->setMaterial ( GL_AMBIENT,
|
|
||||||
ambient[0], ambient[1],
|
|
||||||
ambient[2], ambient[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_DIFFUSE,
|
|
||||||
diffuse[0], diffuse[1],
|
|
||||||
diffuse[2], diffuse[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_SPECULAR,
|
|
||||||
specular[0], specular[1],
|
|
||||||
specular[2], specular[3] ) ;
|
|
||||||
nontextured->setMaterial ( GL_EMISSION,
|
|
||||||
emission[0], emission[1],
|
|
||||||
emission[2], emission[3] ) ;
|
|
||||||
nontextured->setShininess ( shininess );
|
|
||||||
|
|
||||||
state->setStep( 0, textured ); // textured
|
|
||||||
state->setStep( 1, nontextured ); // untextured
|
|
||||||
|
|
||||||
// Choose the appropriate starting state.
|
|
||||||
if ( use_textures ) {
|
|
||||||
state->selectStep(0);
|
|
||||||
} else {
|
|
||||||
state->selectStep(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// end of newmat.cxx
|
// end of newmat.cxx
|
||||||
|
|||||||
@@ -231,8 +231,7 @@ public:
|
|||||||
* state information for the material. This node is usually
|
* state information for the material. This node is usually
|
||||||
* loaded from the $FG_ROOT/materials.xml file.
|
* loaded from the $FG_ROOT/materials.xml file.
|
||||||
*/
|
*/
|
||||||
SGMaterial( const string &fg_root, const SGPropertyNode *props,
|
SGMaterial( const string &fg_root, const SGPropertyNode *props );
|
||||||
bool smooth_shading, bool use_textures );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -241,7 +240,7 @@ public:
|
|||||||
* @param texture_path A string containing an absolute path
|
* @param texture_path A string containing an absolute path
|
||||||
* to a texture file (usually RGB).
|
* to a texture file (usually RGB).
|
||||||
*/
|
*/
|
||||||
SGMaterial( const string &texpath, bool smooth_shading, bool use_textures );
|
SGMaterial( const string &texpath );
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -253,7 +252,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @param s The SSG state for this material.
|
* @param s The SSG state for this material.
|
||||||
*/
|
*/
|
||||||
SGMaterial( ssgSimpleState *s, bool smooth_shading, bool use_textures );
|
SGMaterial( ssgSimpleState *s );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor.
|
* Destructor.
|
||||||
@@ -278,7 +277,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Get the textured state.
|
* Get the textured state.
|
||||||
*/
|
*/
|
||||||
virtual inline ssgSimpleState *get_textured () { return textured; }
|
virtual inline ssgSimpleState *get_state () const { return state; }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -317,12 +316,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current state.
|
|
||||||
*/
|
|
||||||
virtual inline ssgStateSelector *get_state () const { return state; }
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increment the reference count for this material.
|
* Increment the reference count for this material.
|
||||||
*
|
*
|
||||||
@@ -369,9 +362,7 @@ private:
|
|||||||
string texture_path;
|
string texture_path;
|
||||||
|
|
||||||
// pointers to ssg states
|
// pointers to ssg states
|
||||||
ssgStateSelector *state;
|
ssgSimpleState *state;
|
||||||
ssgSimpleState *textured;
|
|
||||||
ssgSimpleState *nontextured;
|
|
||||||
|
|
||||||
// texture size
|
// texture size
|
||||||
double xsize, ysize;
|
double xsize, ysize;
|
||||||
@@ -407,11 +398,8 @@ private:
|
|||||||
SGMaterial( const string &fg_root, const SGMaterial &mat ); // unimplemented
|
SGMaterial( const string &fg_root, const SGMaterial &mat ); // unimplemented
|
||||||
|
|
||||||
void read_properties( const string &fg_root, const SGPropertyNode *props );
|
void read_properties( const string &fg_root, const SGPropertyNode *props );
|
||||||
void build_ssg_state( bool defer_tex_load,
|
void build_ssg_state( bool defer_tex_load );
|
||||||
bool smooth_shading,
|
void set_ssg_state( ssgSimpleState *s );
|
||||||
bool use_textures );
|
|
||||||
void set_ssg_state( ssgSimpleState *s,
|
|
||||||
bool smooth_shading, bool use_textures );
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ SGMaterialLib material_lib;
|
|||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
SGMaterialLib::SGMaterialLib ( void ) {
|
SGMaterialLib::SGMaterialLib ( void ) {
|
||||||
set_step(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -244,7 +243,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
for (int i = 0; i < nMaterials; i++) {
|
for (int i = 0; i < nMaterials; i++) {
|
||||||
const SGPropertyNode * node = materials.getChild(i);
|
const SGPropertyNode * node = materials.getChild(i);
|
||||||
if (!strcmp(node->getName(), "material")) {
|
if (!strcmp(node->getName(), "material")) {
|
||||||
SGMaterial *m = new SGMaterial( fg_root, node, true, true );
|
SGMaterial *m = new SGMaterial( fg_root, node );
|
||||||
|
|
||||||
vector<SGPropertyNode_ptr>names = node->getChildren("name");
|
vector<SGPropertyNode_ptr>names = node->getChildren("name");
|
||||||
for ( unsigned int j = 0; j < names.size(); j++ ) {
|
for ( unsigned int j = 0; j < names.size(); j++ ) {
|
||||||
@@ -273,7 +272,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
gnd_lights->enable( GL_BLEND );
|
gnd_lights->enable( GL_BLEND );
|
||||||
gnd_lights->disable( GL_ALPHA_TEST );
|
gnd_lights->disable( GL_ALPHA_TEST );
|
||||||
gnd_lights->disable( GL_LIGHTING );
|
gnd_lights->disable( GL_LIGHTING );
|
||||||
matlib["GROUND_LIGHTS"] = new SGMaterial( gnd_lights, true, true );
|
matlib["GROUND_LIGHTS"] = new SGMaterial( gnd_lights );
|
||||||
|
|
||||||
GLuint tex_name;
|
GLuint tex_name;
|
||||||
|
|
||||||
@@ -292,10 +291,10 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_white_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
rwy_white_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_white_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_white_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_white_lights->setTexture( tex_name );
|
rwy_white_lights->setTexture( tex_name );
|
||||||
matlib["RWY_WHITE_LIGHTS"] = new SGMaterial( rwy_white_lights, true, true );
|
matlib["RWY_WHITE_LIGHTS"] = new SGMaterial( rwy_white_lights );
|
||||||
// For backwards compatibility ... remove someday
|
// For backwards compatibility ... remove someday
|
||||||
matlib["RUNWAY_LIGHTS"] = new SGMaterial( rwy_white_lights, true, true );
|
matlib["RUNWAY_LIGHTS"] = new SGMaterial( rwy_white_lights );
|
||||||
matlib["RWY_LIGHTS"] = new SGMaterial( rwy_white_lights, true, true );
|
matlib["RWY_LIGHTS"] = new SGMaterial( rwy_white_lights );
|
||||||
// end of backwards compatitibilty
|
// end of backwards compatitibilty
|
||||||
|
|
||||||
// hard coded runway medium intensity white light state
|
// hard coded runway medium intensity white light state
|
||||||
@@ -314,7 +313,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_white_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_white_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_white_medium_lights->setTexture( tex_name );
|
rwy_white_medium_lights->setTexture( tex_name );
|
||||||
matlib["RWY_WHITE_MEDIUM_LIGHTS"]
|
matlib["RWY_WHITE_MEDIUM_LIGHTS"]
|
||||||
= new SGMaterial( rwy_white_medium_lights, true, true );
|
= new SGMaterial( rwy_white_medium_lights );
|
||||||
|
|
||||||
// hard coded runway low intensity white light state
|
// hard coded runway low intensity white light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 235, 195, 155 );
|
tex_name = gen_standard_dir_light_map( 235, 235, 195, 155 );
|
||||||
@@ -332,7 +331,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_white_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_white_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_white_low_lights->setTexture( tex_name );
|
rwy_white_low_lights->setTexture( tex_name );
|
||||||
matlib["RWY_WHITE_LOW_LIGHTS"]
|
matlib["RWY_WHITE_LOW_LIGHTS"]
|
||||||
= new SGMaterial( rwy_white_low_lights, true, true );
|
= new SGMaterial( rwy_white_low_lights );
|
||||||
|
|
||||||
// hard coded runway yellow light state
|
// hard coded runway yellow light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 215, 20, 255 );
|
tex_name = gen_standard_dir_light_map( 235, 215, 20, 255 );
|
||||||
@@ -349,7 +348,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_yellow_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
rwy_yellow_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_yellow_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_yellow_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_yellow_lights->setTexture( tex_name );
|
rwy_yellow_lights->setTexture( tex_name );
|
||||||
matlib["RWY_YELLOW_LIGHTS"] = new SGMaterial( rwy_yellow_lights, true, true );
|
matlib["RWY_YELLOW_LIGHTS"] = new SGMaterial( rwy_yellow_lights );
|
||||||
|
|
||||||
// hard coded runway medium intensity yellow light state
|
// hard coded runway medium intensity yellow light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 215, 20, 205 );
|
tex_name = gen_standard_dir_light_map( 235, 215, 20, 205 );
|
||||||
@@ -367,7 +366,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_yellow_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_yellow_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_yellow_medium_lights->setTexture( tex_name );
|
rwy_yellow_medium_lights->setTexture( tex_name );
|
||||||
matlib["RWY_YELLOW_MEDIUM_LIGHTS"]
|
matlib["RWY_YELLOW_MEDIUM_LIGHTS"]
|
||||||
= new SGMaterial( rwy_yellow_medium_lights, true, true );
|
= new SGMaterial( rwy_yellow_medium_lights );
|
||||||
|
|
||||||
// hard coded runway low intensity yellow light state
|
// hard coded runway low intensity yellow light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 215, 20, 155 );
|
tex_name = gen_standard_dir_light_map( 235, 215, 20, 155 );
|
||||||
@@ -385,7 +384,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_yellow_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_yellow_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_yellow_low_lights->setTexture( tex_name );
|
rwy_yellow_low_lights->setTexture( tex_name );
|
||||||
matlib["RWY_YELLOW_LOW_LIGHTS"]
|
matlib["RWY_YELLOW_LOW_LIGHTS"]
|
||||||
= new SGMaterial( rwy_yellow_low_lights, true, true );
|
= new SGMaterial( rwy_yellow_low_lights );
|
||||||
|
|
||||||
// hard coded runway red light state
|
// hard coded runway red light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 90, 90, 255 );
|
tex_name = gen_standard_dir_light_map( 235, 90, 90, 255 );
|
||||||
@@ -403,7 +402,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_red_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_red_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_red_lights->setTexture( tex_name );
|
rwy_red_lights->setTexture( tex_name );
|
||||||
matlib["RWY_RED_LIGHTS"]
|
matlib["RWY_RED_LIGHTS"]
|
||||||
= new SGMaterial( rwy_red_lights, true, true );
|
= new SGMaterial( rwy_red_lights );
|
||||||
|
|
||||||
// hard coded medium intensity runway red light state
|
// hard coded medium intensity runway red light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
|
tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
|
||||||
@@ -421,7 +420,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_red_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_red_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_red_medium_lights->setTexture( tex_name );
|
rwy_red_medium_lights->setTexture( tex_name );
|
||||||
matlib["RWY_RED_MEDIUM_LIGHTS"]
|
matlib["RWY_RED_MEDIUM_LIGHTS"]
|
||||||
= new SGMaterial( rwy_red_medium_lights, true, true );
|
= new SGMaterial( rwy_red_medium_lights );
|
||||||
|
|
||||||
// hard coded low intensity runway red light state
|
// hard coded low intensity runway red light state
|
||||||
tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
|
tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
|
||||||
@@ -439,7 +438,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_red_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_red_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_red_low_lights->setTexture( tex_name );
|
rwy_red_low_lights->setTexture( tex_name );
|
||||||
matlib["RWY_RED_LOW_LIGHTS"]
|
matlib["RWY_RED_LOW_LIGHTS"]
|
||||||
= new SGMaterial( rwy_red_low_lights, true, true );
|
= new SGMaterial( rwy_red_low_lights );
|
||||||
|
|
||||||
// hard coded runway green light state
|
// hard coded runway green light state
|
||||||
tex_name = gen_standard_dir_light_map( 20, 235, 20, 255 );
|
tex_name = gen_standard_dir_light_map( 20, 235, 20, 255 );
|
||||||
@@ -457,7 +456,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_green_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_green_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_green_lights->setTexture( tex_name );
|
rwy_green_lights->setTexture( tex_name );
|
||||||
matlib["RWY_GREEN_LIGHTS"]
|
matlib["RWY_GREEN_LIGHTS"]
|
||||||
= new SGMaterial( rwy_green_lights, true, true );
|
= new SGMaterial( rwy_green_lights );
|
||||||
|
|
||||||
// hard coded medium intensity runway green light state
|
// hard coded medium intensity runway green light state
|
||||||
tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
|
tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
|
||||||
@@ -475,7 +474,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_green_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_green_medium_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_green_medium_lights->setTexture( tex_name );
|
rwy_green_medium_lights->setTexture( tex_name );
|
||||||
matlib["RWY_GREEN_MEDIUM_LIGHTS"]
|
matlib["RWY_GREEN_MEDIUM_LIGHTS"]
|
||||||
= new SGMaterial( rwy_green_medium_lights, true, true );
|
= new SGMaterial( rwy_green_medium_lights );
|
||||||
|
|
||||||
// hard coded low intensity runway green light state
|
// hard coded low intensity runway green light state
|
||||||
tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
|
tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
|
||||||
@@ -493,7 +492,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_green_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_green_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_green_low_lights->setTexture( tex_name );
|
rwy_green_low_lights->setTexture( tex_name );
|
||||||
matlib["RWY_GREEN_LOW_LIGHTS"]
|
matlib["RWY_GREEN_LOW_LIGHTS"]
|
||||||
= new SGMaterial( rwy_green_low_lights, true, true );
|
= new SGMaterial( rwy_green_low_lights );
|
||||||
|
|
||||||
// hard coded low intensity taxiway blue light state
|
// hard coded low intensity taxiway blue light state
|
||||||
tex_name = gen_taxiway_dir_light_map( 90, 90, 235, 205 );
|
tex_name = gen_taxiway_dir_light_map( 90, 90, 235, 205 );
|
||||||
@@ -511,7 +510,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
taxiway_blue_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
taxiway_blue_low_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
taxiway_blue_low_lights->setTexture( tex_name );
|
taxiway_blue_low_lights->setTexture( tex_name );
|
||||||
matlib["RWY_BLUE_TAXIWAY_LIGHTS"]
|
matlib["RWY_BLUE_TAXIWAY_LIGHTS"]
|
||||||
= new SGMaterial( taxiway_blue_low_lights, true, true );
|
= new SGMaterial( taxiway_blue_low_lights );
|
||||||
|
|
||||||
// hard coded runway vasi light state
|
// hard coded runway vasi light state
|
||||||
ssgSimpleState *rwy_vasi_lights = new ssgSimpleState();
|
ssgSimpleState *rwy_vasi_lights = new ssgSimpleState();
|
||||||
@@ -527,7 +526,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
|
|||||||
rwy_vasi_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
rwy_vasi_lights->setMaterial ( GL_SPECULAR, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_vasi_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
rwy_vasi_lights->setMaterial ( GL_EMISSION, 0.0, 0.0, 0.0, 0.0 );
|
||||||
rwy_vasi_lights->setTexture( gen_vasi_light_map() );
|
rwy_vasi_lights->setTexture( gen_vasi_light_map() );
|
||||||
matlib["RWY_VASI_LIGHTS"] = new SGMaterial( rwy_vasi_lights, true, true );
|
matlib["RWY_VASI_LIGHTS"] = new SGMaterial( rwy_vasi_lights );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -554,7 +553,7 @@ bool SGMaterialLib::add_item ( const string &mat_name, const string &full_path )
|
|||||||
SG_LOG( SG_TERRAIN, SG_INFO, " Loading material "
|
SG_LOG( SG_TERRAIN, SG_INFO, " Loading material "
|
||||||
<< mat_name << " (" << full_path << ")");
|
<< mat_name << " (" << full_path << ")");
|
||||||
|
|
||||||
material_lib.matlib[mat_name] = new SGMaterial( full_path, true, true );
|
material_lib.matlib[mat_name] = new SGMaterial( full_path );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -563,7 +562,7 @@ bool SGMaterialLib::add_item ( const string &mat_name, const string &full_path )
|
|||||||
// Load a library of material properties
|
// Load a library of material properties
|
||||||
bool SGMaterialLib::add_item ( const string &mat_name, ssgSimpleState *state )
|
bool SGMaterialLib::add_item ( const string &mat_name, ssgSimpleState *state )
|
||||||
{
|
{
|
||||||
SGMaterial *m = new SGMaterial( state, true, true );
|
SGMaterial *m = new SGMaterial( state );
|
||||||
|
|
||||||
SG_LOG( SG_TERRAIN, SG_INFO, " Loading material given a premade "
|
SG_LOG( SG_TERRAIN, SG_INFO, " Loading material given a premade "
|
||||||
<< "ssgSimpleState = " << mat_name );
|
<< "ssgSimpleState = " << mat_name );
|
||||||
@@ -600,28 +599,6 @@ SGMaterialLib::~SGMaterialLib ( void ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set the step for all of the state selectors in the material slots
|
|
||||||
void SGMaterialLib::set_step ( int step )
|
|
||||||
{
|
|
||||||
// container::iterator it = begin();
|
|
||||||
for ( material_map_iterator it = begin(); it != end(); it++ ) {
|
|
||||||
const string &key = it->first;
|
|
||||||
SG_LOG( SG_GENERAL, SG_INFO,
|
|
||||||
"Updating material " << key << " to step " << step );
|
|
||||||
SGMaterial *slot = it->second;
|
|
||||||
slot->get_state()->selectStep(step);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Get the step for the state selectors
|
|
||||||
int SGMaterialLib::get_step ()
|
|
||||||
{
|
|
||||||
material_map_iterator it = begin();
|
|
||||||
return it->second->get_state()->getSelectStep();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Load one pending "deferred" texture. Return true if a texture
|
// Load one pending "deferred" texture. Return true if a texture
|
||||||
// loaded successfully, false if no pending, or error.
|
// loaded successfully, false if no pending, or error.
|
||||||
void SGMaterialLib::load_next_deferred() {
|
void SGMaterialLib::load_next_deferred() {
|
||||||
|
|||||||
@@ -74,9 +74,6 @@ public:
|
|||||||
// find a material record by material name
|
// find a material record by material name
|
||||||
SGMaterial *find( const string& material );
|
SGMaterial *find( const string& material );
|
||||||
|
|
||||||
void set_step (int step);
|
|
||||||
int get_step ();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the next deferred texture, if there is any.
|
* Load the next deferred texture, if there is any.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user