X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2Ftilemgr.hxx;h=9eebc5dcb5af0c9166d9685320b455e0cfe40e85;hb=048da049f87fe3f543795f3b1b511d774caa2787;hp=0dfc968ed29eddc83ec3c79f687707917cc4c449;hpb=34854ab2afaeca05e6949755b8d65e991c77675f;p=flightgear.git diff --git a/src/Scenery/tilemgr.hxx b/src/Scenery/tilemgr.hxx index 0dfc968ed..9eebc5dcb 100644 --- a/src/Scenery/tilemgr.hxx +++ b/src/Scenery/tilemgr.hxx @@ -30,6 +30,7 @@ #endif #include +#include #include @@ -50,6 +51,8 @@ # define FG_MEM_COPY(to,from,n) bcopy(from, to, n) #endif +SG_USING_STD( queue ); + // forward declaration class FGTileEntry; @@ -72,24 +75,15 @@ private: // initialize the cache void initialize_queue(); - // forced emptying of the queue. This is necessay to keep - // bookeeping straight for the tile_cache -- which actually - // handles all the (de)allocations - void destroy_queue(); - // schedule a tile for loading void sched_tile( const SGBucket& b ); // schedule a needed buckets for loading - void schedule_needed(); + void schedule_needed(double visibility_meters, SGBucket curr_bucket); // see comment at prep_ssg_nodes() void prep_ssg_node( int idx ); - // int hitcount; - // sgdVec3 hit_pts [ MAX_HITS ] ; - - // ssgEntity *last_hit; FGHitList hit_list; SGBucket previous_bucket; @@ -143,10 +137,12 @@ public: */ static void ready_to_attach( FGTileEntry *t ) { attach_queue.push( t ); } +#ifdef WISH_PLIB_WAS_THREADED // but it isn't /** * Tile is detatched from scene graph and is ready to delete */ inline void ready_to_delete( FGTileEntry *t ) { loader.remove( t ); } +#endif /** * Add a pending model to the 'deferred model load' queue @@ -167,7 +163,10 @@ public: // 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. - int update( double lon, double lat ); + int update( double lon, double lat, double visibility_meters ); + int update( double lon, double lat, double visibility_meters, sgdVec3 abs_pos_vector, SGBucket p_current, SGBucket p_previous, Point3D center ); + void setCurrentTile( double longitude, double latitude ); + int updateCurrentElevAtPos(sgdVec3 abs_pos_vector, Point3D center ); // Determine scenery altitude. Normally this just happens when we // render the scene, but we'd also like to be able to do this @@ -180,12 +179,19 @@ public: const sgdVec3 p, const sgdVec3 dir, FGHitList *list ); - bool current_elev_ssg( sgdVec3 abs_view_pos, double *terrain_elev ); - // Prepare the ssg nodes ... for each tile, set it's proper // transform and update it's range selector based on current // visibilty - void prep_ssg_nodes(); + void prep_ssg_nodes(float visibility_meters); + void prep_ssg_nodes(float visibility_meters, sgVec3 up, Point3D center); + + // + // Set flag with event manager so that non-moving view refreshes tiles... + // + void refresh_view_timestamps(); + + inline SGBucket get_current_bucket () { return current_bucket; } + inline SGBucket get_previous_bucket () { return previous_bucket; } };