Preliminary material lookup hooks - still unoptimized.
This commit is contained in:
@@ -538,3 +538,36 @@ void SGMaterialLib::load_next_deferred() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SGMaterialLib::find( ssgSimpleState *state, string & material ) const
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
ssgSimpleState *state_mat;
|
||||||
|
|
||||||
|
material = "";
|
||||||
|
|
||||||
|
for( const_material_map_iterator iter = begin(); iter != end(); iter++ )
|
||||||
|
{
|
||||||
|
int nb_tex = (*iter).second->get_num();
|
||||||
|
|
||||||
|
// many textures per material
|
||||||
|
for( int i = 0; i < nb_tex; i++ )
|
||||||
|
{
|
||||||
|
// material state
|
||||||
|
state_mat = (*iter).second->get_state( i );
|
||||||
|
|
||||||
|
if( state_mat == state )
|
||||||
|
{
|
||||||
|
material = (*iter).first.c_str();
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( found )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ public:
|
|||||||
material_map_iterator end() { return matlib.end(); }
|
material_map_iterator end() { return matlib.end(); }
|
||||||
const_material_map_iterator end() const { return matlib.end(); }
|
const_material_map_iterator end() const { return matlib.end(); }
|
||||||
|
|
||||||
|
bool find( ssgSimpleState*, string & material ) const;
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~SGMaterialLib ( void );
|
~SGMaterialLib ( void );
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user