#include <queue>
-#include <plib/ssg.h>
-
#include <simgear/bucket/newbucket.hxx>
-#ifdef ENABLE_THREADS
+#if defined(ENABLE_THREADS) && ENABLE_THREADS
# include <simgear/threads/SGQueue.hxx>
#endif // ENABLE_THREADS
// forward declaration
+class ssgBranch;
+class ssgEntity;
class FGTileEntry;
class FGDeferredModel;
* Queue tiles for loading.
*/
FGTileLoader loader;
- int counter_hack;
/**
* Work queues.
* model_queue is the set of models that need to be loaded by the
* primary render thread.
*/
-#ifdef ENABLE_THREADS
+#if defined(ENABLE_THREADS) && ENABLE_THREADS
static SGLockedQueue<FGTileEntry *> attach_queue;
static SGLockedQueue<FGDeferredModel *> model_queue;
#else
#endif // ENABLE_THREADS
static queue<FGTileEntry *> delete_queue;
+ /**
+ * Tile filter indicator, to implement multipass rendering
+ */
+ static bool tile_filter;
+
public:
/**
// internal function, do not call directly.)
void update_queues();
+ // get state of all the scenery loading queues
+ bool all_queues_empty();
+
// given the current lon/lat (in degrees), fill in the array of
// local chunks. If the chunk isn't already in the cache, then
// read it from disk.
inline SGBucket get_current_bucket () { return current_bucket; }
inline SGBucket get_previous_bucket () { return previous_bucket; }
+
+ static bool set_tile_filter( bool f );
+ static int tile_filter_cb( ssgEntity *, int );
};