#include <string>
#include "Include/fg_stl_config.h"
-#include <Debug/fg_debug.h>
+#include <Debug/logstream.hxx>
#include <Main/options.hxx>
#include <Misc/fgstream.hxx>
#include <Main/views.hxx>
// Constructor
fgMATERIAL::fgMATERIAL ( void )
: texture_name(""),
- alpha(0),
- list_size(0)
+ alpha(0)
+ // , list_size(0)
{
ambient[0] = ambient[1] = ambient[2] = ambient[3] = 0.0;
diffuse[0] = diffuse[1] = diffuse[2] = diffuse[3] = 0.0;
emissive[0] = emissive[1] = emissive[2] = emissive[3] = 0.0;
}
-
-int fgMATERIAL::append_sort_list( fgFRAGMENT *object ) {
- if ( list_size < FG_MAX_MATERIAL_FRAGS )
- {
+/*
+int
+fgMATERIAL::append_sort_list( fgFRAGMENT *object )
+{
+ if ( list_size < FG_MAX_MATERIAL_FRAGS ) {
list[ list_size++ ] = object;
return 1;
- }
- else
- {
+ } else {
return 0;
}
}
+*/
istream&
operator >> ( istream& in, fgMATERIAL& m )
{
string token;
- for (;;)
- {
+ for (;;) {
in >> token;
if ( token == "texture" )
{
m.alpha = 0;
else
{
- fgPrintf( FG_TERRAIN, FG_INFO,
- "Bad alpha value '%s'\n", token.c_str() );
+ FG_LOG( FG_TERRAIN, FG_INFO, "Bad alpha value " << token );
}
}
else if ( token[0] == '}' )
void
fgMATERIAL::load_texture()
{
- if ( current_options.get_textures() )
- {
GLubyte *texbuf;
int width, height;
read_rgb_texture(fg_tpath.c_str(), &width, &height))
== NULL )
{
- fgPrintf( FG_GENERAL, FG_EXIT,
- "Error in loading texture %s\n",
- tpath.c_str() );
- return;
+ FG_LOG( FG_GENERAL, FG_ALERT,
+ "Error in loading texture " << tpath );
+ exit(-1);
}
}
read_alpha_texture(fg_tpath.c_str(), &width, &height))
== NULL )
{
- fgPrintf( FG_GENERAL, FG_EXIT,
- "Error in loading texture %s\n",
- tpath.c_str() );
- return;
+ FG_LOG( FG_GENERAL, FG_ALERT,
+ "Error in loading texture " << tpath );
+ exit(-1);
}
}
xglTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0,
GL_RGBA, GL_UNSIGNED_BYTE, texbuf);
}
- }
}
// Constructor
fgMATERIAL_MGR::fgMATERIAL_MGR ( void ) {
+ textures_loaded = false;
}
}
fgTILE* last_tile_ptr = NULL;
- for ( size_t i = 0; i < list_size; ++i )
- {
- fgFRAGMENT* frag_ptr = list[i];
+ frag_list_iterator current = list.begin();
+ frag_list_iterator last = list.end();
+
+ for ( ; current != last; ++current ) {
+ fgFRAGMENT* frag_ptr = *current;
current_view.tris_rendered += frag_ptr->num_faces();
if ( frag_ptr->tile_ptr != last_tile_ptr )
{
// Load a library of material properties
-int fgMATERIAL_MGR::load_lib ( void ) {
+int
+fgMATERIAL_MGR::load_lib ( void )
+{
string material_name;
// build the path name to the material db
string mpath = current_options.get_fg_root() + "/materials";
fg_gzifstream in( mpath );
- if ( ! in )
- fgPrintf( FG_GENERAL, FG_EXIT, "Cannot open file: %s\n",
- mpath.c_str() );
+ if ( ! in ) {
+ FG_LOG( FG_GENERAL, FG_ALERT, "Cannot open file: " << mpath );
+ exit(-1);
+ }
while ( ! in.eof() ) {
// printf("%s", line);
// strip leading white space and comments
- in.eat_comments();
+ in >> skipcomment;
// set to zero to prevent its value accidently being '{'
// after a failed >> operation.
char token = 0;
- in.stream() >> material_name >> token;
+ in >> material_name >> token;
if ( token == '{' ) {
printf( " Loading material %s\n", material_name.c_str() );
fgMATERIAL m;
- in.stream() >> m;
- m.load_texture();
+ in >> m;
+
+ if ( current_options.get_textures() ) {
+ m.load_texture();
+ }
+
material_mgr.material_map[material_name] = m;
}
}
-// iterator last = end();
-// for ( iterator it = begin(); it != last; ++it )
-// {
-// (*it).second.load_texture();
-// }
+ if ( current_options.get_textures() ) {
+ textures_loaded = true;
+ }
return(1);
}
// Initialize the transient list of fragments for each material property
-void fgMATERIAL_MGR::init_transient_material_lists( void ) {
+void
+fgMATERIAL_MGR::init_transient_material_lists( void )
+{
iterator last = end();
for ( iterator it = begin(); it != last; ++it )
{
}
}
+
bool
fgMATERIAL_MGR::find( const string& material, fgMATERIAL*& mtl_ptr )
{
// $Log$
+// Revision 1.10 1998/11/06 21:18:17 curt
+// Converted to new logstream debugging facility. This allows release
+// builds with no messages at all (and no performance impact) by using
+// the -DFG_NDEBUG flag.
+//
+// Revision 1.9 1998/11/06 14:47:05 curt
+// Changes to track Bernie's updates to fgstream.
+//
+// Revision 1.8 1998/10/12 23:49:17 curt
+// Changes from NHV to make the code more dynamic with fewer hard coded limits.
+//
+// Revision 1.7 1998/09/17 18:35:52 curt
+// Tweaks and optimizations by Norman Vine.
+//
// Revision 1.6 1998/09/15 01:35:05 curt
// cleaned up my fragment.num_faces hack :-) to use the STL (no need in
// duplicating work.)