X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2FSceneryPager.hxx;h=d8f519a1bc3960255701c0ea058240060efddcb7;hb=69baf3a9d6adb645325e7bfc0305b09604379d9f;hp=283c9db95bf6beec18d7af975b7c95ad4bcd260e;hpb=fd492a297aee6d40c58f71b1889847b6668af3fd;p=flightgear.git diff --git a/src/Scenery/SceneryPager.hxx b/src/Scenery/SceneryPager.hxx index 283c9db95..d8f519a1b 100644 --- a/src/Scenery/SceneryPager.hxx +++ b/src/Scenery/SceneryPager.hxx @@ -19,6 +19,7 @@ // $Id$ #ifndef FLIGHTGEAR_SCENERYPAGERHXX +#define FLIGHTGEAR_SCENERYPAGERHXX 1 #include #include @@ -26,6 +27,8 @@ #include #include +#include + namespace flightgear { class SceneryPager : public osgDB::DatabasePager @@ -33,13 +36,12 @@ class SceneryPager : public osgDB::DatabasePager public: SceneryPager(); SceneryPager(const SceneryPager& rhs); - - // reimplement to add readerWriterOptions from SGPagedLOD - virtual void requestNodeFile(const std::string& fileName,osg::Group* group, - float priority, const osg::FrameStamp* framestamp); - + // Unhide DatabasePager::requestNodeFile + using osgDB::DatabasePager::requestNodeFile; void queueRequest(const std::string& fileName, osg::Group* node, - float priority, osg::FrameStamp* frameStamp); + float priority, osg::FrameStamp* frameStamp, + osg::ref_ptr& databaseRequest, + osgDB::ReaderWriter::Options* options); // This is passed a ref_ptr so that it can "take ownership" of the // node to delete and decrement its refcount while holding the // lock on the delete list. @@ -49,24 +51,28 @@ protected: // Queue up file requests until the end of the frame struct PagerRequest { - PagerRequest() {} + PagerRequest() : _priority(0.0f), _databaseRequest(0) {} PagerRequest(const PagerRequest& rhs) : _fileName(rhs._fileName), _group(rhs._group), - _priority(rhs._priority), _frameStamp(rhs._frameStamp) {} + _priority(rhs._priority), _frameStamp(rhs._frameStamp), + _options(rhs._options), _databaseRequest(rhs._databaseRequest) {} + PagerRequest(const std::string& fileName, osg::Group* group, - float priority, osg::FrameStamp* frameStamp) : + float priority, osg::FrameStamp* frameStamp, + osg::ref_ptr& databaseRequest, + osgDB::ReaderWriter::Options* options): _fileName(fileName), _group(group), _priority(priority), - _frameStamp(frameStamp) {} - void doRequest(SceneryPager* pager) - { - if (_group->getNumChildren() == 0) - pager->requestNodeFile(_fileName, _group.get(), _priority, - _frameStamp.get()); - } + _frameStamp(frameStamp), _options(options), + _databaseRequest(&databaseRequest) + {} + + void doRequest(SceneryPager* pager); std::string _fileName; osg::ref_ptr _group; float _priority; osg::ref_ptr _frameStamp; + osg::ref_ptr _options; + osg::ref_ptr* _databaseRequest; }; typedef std::vector PagerRequestList; PagerRequestList _pagerRequests; @@ -75,5 +81,4 @@ protected: virtual ~SceneryPager(); }; } -#define FLIGHTGEAR_SCENERYPAGERHXX 1 #endif