]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/material/matlib.cxx
A patch from Frederic Bouvier to correct a naming problem caused bu Curts work. This...
[simgear.git] / simgear / scene / material / matlib.cxx
index 3a8d102b7f1d82b6bdc8e3aa463da263af58bc8b..d3e49c8293c82baf5a44f73c04197a5dadfeb19e 100644 (file)
@@ -55,16 +55,12 @@ SG_USING_NAMESPACE(std);
 SG_USING_STD(string);
 
 
-// global material management class
-SGMaterialLib material_lib;
-
-
 // Constructor
 SGMaterialLib::SGMaterialLib ( void ) {
-  set_step(0);
 }
 
 
+#if 0 // debugging infrastructure
 static int gen_test_light_map() {
     static const int env_tex_res = 32;
     int half_res = env_tex_res / 2;
@@ -100,6 +96,7 @@ static int gen_test_light_map() {
 
     return tex_name;
 }
+#endif
 
 
 // generate standard colored directional light environment texture map
@@ -244,7 +241,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
     for (int i = 0; i < nMaterials; i++) {
         const SGPropertyNode * node = materials.getChild(i);
         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");
             for ( unsigned int j = 0; j < names.size(); j++ ) {
@@ -273,7 +270,7 @@ bool SGMaterialLib::load( const string &fg_root, const string& mpath ) {
     gnd_lights->enable( GL_BLEND );
     gnd_lights->disable( GL_ALPHA_TEST );
     gnd_lights->disable( GL_LIGHTING );
-    matlib["GROUND_LIGHTS"] = new SGMaterial( gnd_lights, true, true );
+    matlib["GROUND_LIGHTS"] = new SGMaterial( gnd_lights );
 
     GLuint tex_name;
 
@@ -292,10 +289,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_EMISSION, 0.0, 0.0, 0.0, 0.0 );
     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
-    matlib["RUNWAY_LIGHTS"] = new SGMaterial( rwy_white_lights, true, true );
-    matlib["RWY_LIGHTS"] = new SGMaterial( rwy_white_lights, true, true );
+    matlib["RUNWAY_LIGHTS"] = new SGMaterial( rwy_white_lights );
+    matlib["RWY_LIGHTS"] = new SGMaterial( rwy_white_lights );
     // end of backwards compatitibilty
 
     // hard coded runway medium intensity white light state
@@ -314,7 +311,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 235, 235, 195, 155 );
@@ -332,7 +329,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 235, 215, 20, 255 );
@@ -349,7 +346,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_EMISSION, 0.0, 0.0, 0.0, 0.0 );
     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
     tex_name = gen_standard_dir_light_map( 235, 215, 20, 205 );
@@ -367,7 +364,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 235, 215, 20, 155 );
@@ -385,7 +382,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 235, 90, 90, 255 );
@@ -403,7 +400,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->setTexture( tex_name );
     matlib["RWY_RED_LIGHTS"]
-        = new SGMaterial( rwy_red_lights, true, true );
+        = new SGMaterial( rwy_red_lights );
 
     // hard coded medium intensity runway red light state
     tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
@@ -421,7 +418,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 235, 90, 90, 205 );
@@ -439,7 +436,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 20, 235, 20, 255 );
@@ -457,7 +454,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->setTexture( tex_name );
     matlib["RWY_GREEN_LIGHTS"]
-        = new SGMaterial( rwy_green_lights, true, true );
+        = new SGMaterial( rwy_green_lights );
 
     // hard coded medium intensity runway green light state
     tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
@@ -475,7 +472,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->setTexture( tex_name );
     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
     tex_name = gen_standard_dir_light_map( 20, 235, 20, 205 );
@@ -493,7 +490,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->setTexture( tex_name );
     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
     tex_name = gen_taxiway_dir_light_map( 90, 90, 235, 205 );
@@ -511,7 +508,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->setTexture( tex_name );
     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
     ssgSimpleState *rwy_vasi_lights = new ssgSimpleState();
@@ -527,7 +524,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_EMISSION, 0.0, 0.0, 0.0, 0.0 );
     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;
 }
@@ -554,7 +551,7 @@ bool SGMaterialLib::add_item ( const string &mat_name, const string &full_path )
     SG_LOG( SG_TERRAIN, SG_INFO, "  Loading material " 
            << mat_name << " (" << full_path << ")");
 
-    material_lib.matlib[mat_name] = new SGMaterial( full_path, true, true );
+    matlib[mat_name] = new SGMaterial( full_path );
 
     return true;
 }
@@ -563,12 +560,12 @@ bool SGMaterialLib::add_item ( const string &mat_name, const string &full_path )
 // Load a library of material properties
 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 "
            << "ssgSimpleState = " << mat_name );
 
-    material_lib.matlib[mat_name] = m;
+    matlib[mat_name] = m;
 
     return true;
 }
@@ -600,28 +597,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
 // loaded successfully, false if no pending, or error.
 void SGMaterialLib::load_next_deferred() {