#include <string> // Standard C++ string library
#include <map> // STL associative "array"
+#include <vector> // STL "array"
#ifdef NEEDNAMESPACESTD
using namespace std;
class fgFRAGMENT;
-#define FG_MAX_MATERIAL_FRAGS 800
+// convenience types
+typedef vector < fgFRAGMENT * > frag_list_type;
+typedef frag_list_type::iterator frag_list_iterator;
+typedef frag_list_type::const_iterator frag_list_const_iterator;
+
+
+// #define FG_MAX_MATERIAL_FRAGS 800
// Material property class
// transient list of objects with this material type (used for sorting
// by material to reduce GL state changes when rendering the scene
- fgFRAGMENT * list[FG_MAX_MATERIAL_FRAGS];
- size_t list_size;
+ frag_list_type list;
+ // size_t list_size;
public:
// Constructor
fgMATERIAL ( void );
- size_t size() const { return list_size; }
- bool empty() const { return list_size == 0; }
+ int size() const { return list.size(); }
+ bool empty() const { return list.size() == 0; }
// Sorting routines
void init_sort_list( void ) {
- list_size = 0;
+ list.erase( list.begin(), list.end() );
}
- int append_sort_list( fgFRAGMENT *object );
+ bool append_sort_list( fgFRAGMENT *object ) {
+ list.push_back( object );
+ return true;
+ }
void render_fragments();
// Load a library of material properties
int load_lib ( void );
+ bool get_textures_loaded() { return textures_loaded; }
+
// Initialize the transient list of fragments for each material property
void init_transient_material_lists( void );
private:
+ // Have textures been loaded
+ bool textures_loaded;
+
container material_map;
};
// $Log$
+// Revision 1.5 1998/10/12 23:49:18 curt
+// Changes from NHV to make the code more dynamic with fewer hard coded limits.
+//
+// Revision 1.4 1998/09/17 18:35:53 curt
+// Tweaks and optimizations by Norman Vine.
+//
// Revision 1.3 1998/09/10 19:07:12 curt
// /Simulator/Objects/fragment.hxx
// Nested fgFACE inside fgFRAGMENT since its not used anywhere else.