Moved ViewerBase class out into its own header and source file.
Improved the support for stats collection in CompositeViewer/StatsHandler.
This commit is contained in:
@@ -38,15 +38,6 @@ class OSG_EXPORT View : public virtual osg::Object
|
||||
/** Take all the settings, Camera and Slaves from the passed in view, leaving it empty. */
|
||||
virtual void take(View& rhs);
|
||||
|
||||
/** Set the Stats object used for collect various frame related timing and scene graph stats.*/
|
||||
void setStats(osg::Stats* stats) { _stats = stats; }
|
||||
|
||||
/** Get the Stats object.*/
|
||||
osg::Stats* getStats() { return _stats.get(); }
|
||||
|
||||
/** Get the const Stats object.*/
|
||||
const osg::Stats* getStats() const { return _stats.get(); }
|
||||
|
||||
/** Options for controlling the global lighting used for the view.*/
|
||||
enum LightingMode
|
||||
{
|
||||
@@ -139,8 +130,6 @@ class OSG_EXPORT View : public virtual osg::Object
|
||||
|
||||
virtual osg::GraphicsOperation* createRenderer(osg::Camera*) { return 0; }
|
||||
|
||||
osg::ref_ptr<osg::Stats> _stats;
|
||||
|
||||
LightingMode _lightingMode;
|
||||
osg::ref_ptr<osg::Light> _light;
|
||||
|
||||
|
||||
@@ -127,6 +127,8 @@ class OSGVIEWER_EXPORT CompositeViewer : public ViewerBase, public virtual osg::
|
||||
|
||||
virtual void getScenes(Scenes& scenes, bool onlyValid=true);
|
||||
|
||||
virtual void getViews(Views& views, bool onlyValid=true);
|
||||
|
||||
|
||||
/** Set up the threading and processor affinity as per the viewers threading model.*/
|
||||
virtual void setUpThreading();
|
||||
@@ -147,9 +149,9 @@ class OSGVIEWER_EXPORT CompositeViewer : public ViewerBase, public virtual osg::
|
||||
void init();
|
||||
|
||||
void checkWindowStatus();
|
||||
|
||||
typedef std::vector< osg::ref_ptr<osgViewer::View> > Views;
|
||||
Views _views;
|
||||
|
||||
typedef std::vector< osg::ref_ptr<osgViewer::View> > RefViews;
|
||||
RefViews _views;
|
||||
|
||||
bool _firstFrame;
|
||||
|
||||
|
||||
@@ -26,182 +26,10 @@
|
||||
#include <osgGA/EventQueue>
|
||||
|
||||
#include <osgViewer/Scene>
|
||||
#include <osgViewer/GraphicsWindow>
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
namespace osgViewer {
|
||||
|
||||
#define USE_REFERENCE_TIME DBL_MAX
|
||||
|
||||
/** ViewerBase is the view base class that is inhertied by both Viewer and CompositeViewer.*/
|
||||
class OSGVIEWER_EXPORT ViewerBase : public virtual osg::Object
|
||||
{
|
||||
public:
|
||||
|
||||
ViewerBase();
|
||||
ViewerBase(const ViewerBase& vb);
|
||||
|
||||
|
||||
/** read the viewer configuration from a configuration file.*/
|
||||
virtual bool readConfiguration(const std::string& filename) = 0;
|
||||
|
||||
/** Get whether at least of one of this viewers windows are realized.*/
|
||||
virtual bool isRealized() const = 0;
|
||||
|
||||
/** set up windows and associated threads.*/
|
||||
virtual void realize() = 0;
|
||||
|
||||
enum ThreadingModel
|
||||
{
|
||||
SingleThreaded,
|
||||
CullDrawThreadPerContext,
|
||||
ThreadPerContext = CullDrawThreadPerContext,
|
||||
DrawThreadPerContext,
|
||||
CullThreadPerCameraDrawThreadPerContext,
|
||||
ThreadPerCamera = CullThreadPerCameraDrawThreadPerContext,
|
||||
AutomaticSelection
|
||||
};
|
||||
|
||||
/** Set the threading model the rendering traversals will use.*/
|
||||
virtual void setThreadingModel(ThreadingModel threadingModel) = 0;
|
||||
|
||||
/** Get the threading model the rendering traversals will use.*/
|
||||
ThreadingModel getThreadingModel() const { return _threadingModel; }
|
||||
|
||||
|
||||
/** Set the done flag to singnal the viewer's work is done and should exit the frame loop.*/
|
||||
void setDone(bool done) { _done = done; }
|
||||
|
||||
/** Reurn true if viewer's work is done and should exit the frame loop.*/
|
||||
bool done() const { return _done; }
|
||||
|
||||
/** Set the EventVisitor. */
|
||||
void setEventVisitor(osgGA::EventVisitor* eventVisitor) { _eventVisitor = eventVisitor; }
|
||||
|
||||
/** Get the EventVisitor. */
|
||||
osgGA::EventVisitor* getEventVisitor() { return _eventVisitor.get(); }
|
||||
|
||||
/** Get the const EventVisitor. */
|
||||
const osgGA::EventVisitor* getEventVisitor() const { return _eventVisitor.get(); }
|
||||
|
||||
/** Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to
|
||||
* signal end of viewers main loop.
|
||||
* Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape).
|
||||
* Setting to 0 switches off the feature.*/
|
||||
void setKeyEventSetsDone(int key) { _keyEventSetsDone = key; }
|
||||
|
||||
/** get the key event that the viewer checks on each frame to see if the viewer's done flag.*/
|
||||
int getKeyEventSetsDone() const { return _keyEventSetsDone; }
|
||||
|
||||
/** if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature */
|
||||
void setQuitEventSetsDone(bool flag) { _quitEventSetsDone = flag; }
|
||||
|
||||
/** @return true if the viewer respond to the QUIT_APPLICATION-event */
|
||||
bool getQuitEventSetsDone() const { return _quitEventSetsDone; }
|
||||
|
||||
|
||||
|
||||
/** Set the UpdateVisitor. */
|
||||
void setUpdateVisitor(osgUtil::UpdateVisitor* updateVisitor) { _updateVisitor = updateVisitor; }
|
||||
|
||||
/** Get the UpdateVisitor. */
|
||||
osgUtil::UpdateVisitor* getUpdateVisitor() { return _updateVisitor.get(); }
|
||||
|
||||
/** Get the const UpdateVisitor. */
|
||||
const osgUtil::UpdateVisitor* getUpdateVisitor() const { return _updateVisitor.get(); }
|
||||
|
||||
|
||||
/** Set the Update OperationQueue. */
|
||||
void setUpdateOperations(osg::OperationQueue* operations) { _updateOperations = operations; }
|
||||
|
||||
/** Get the Update OperationQueue. */
|
||||
osg::OperationQueue* getUpdateOperations() { return _updateOperations.get(); }
|
||||
|
||||
/** Get the const Update OperationQueue. */
|
||||
const osg::OperationQueue* getUpdateOperations() const { return _updateOperations.get(); }
|
||||
|
||||
/** Add an update operation.*/
|
||||
void addUpdateOperation(osg::Operation* operation);
|
||||
|
||||
/** Remove an update operation.*/
|
||||
void removeUpdateOperation(osg::Operation* operation);
|
||||
|
||||
|
||||
/** Execute a main frame loop.
|
||||
* Equivialant to while (!viewer.done()) viewer.frame();
|
||||
* Also calls realize() if the viewer is not already realized,
|
||||
* and installs trackball manipulator if one is not already assigned.
|
||||
*/
|
||||
virtual int run() = 0;
|
||||
|
||||
/** Render a complete new frame.
|
||||
* Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). */
|
||||
virtual void frame(double simulationTime=USE_REFERENCE_TIME) = 0;
|
||||
|
||||
virtual void advance(double simulationTime=USE_REFERENCE_TIME) = 0;
|
||||
|
||||
virtual void eventTraversal() = 0;
|
||||
|
||||
virtual void updateTraversal() = 0;
|
||||
|
||||
virtual void renderingTraversals() = 0;
|
||||
|
||||
typedef std::vector<osg::Camera*> Cameras;
|
||||
virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osg::GraphicsContext*> Contexts;
|
||||
virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0;
|
||||
|
||||
typedef std::vector<osgViewer::GraphicsWindow*> Windows;
|
||||
virtual void getWindows(Windows& windows, bool onlyValid=true) = 0;
|
||||
|
||||
typedef std::vector<OpenThreads::Thread*> Threads;
|
||||
virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osg::OperationThread*> OperationThreads;
|
||||
virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osgViewer::Scene*> Scenes;
|
||||
virtual void getScenes(Scenes& scenes, bool onlyValid=true) = 0;
|
||||
|
||||
/** Set the graphics operation to call on realization of the viewers graphics windows.*/
|
||||
void setRealizeOperation(osg::Operation* op) { _realizeOperation = op; }
|
||||
|
||||
/** Get the graphics operation to call on realization of the viewers graphics windows.*/
|
||||
osg::Operation* getRealizeOperation() { return _realizeOperation.get(); }
|
||||
|
||||
/** Set up the threading and processor affinity as per the viewers threading model.*/
|
||||
virtual void setUpThreading() = 0;
|
||||
|
||||
/** Return true if viewer threads are running. */
|
||||
bool areThreadsRunning() const { return _threadsRunning; }
|
||||
|
||||
/** Stop any threads begin run by viewer.*/
|
||||
virtual void stopThreading() = 0;
|
||||
|
||||
/** Start any threads required by the viewer.*/
|
||||
virtual void startThreading() = 0;
|
||||
|
||||
/** Get the keyboard and mouse usage of this viewer.*/
|
||||
virtual void getUsage(osg::ApplicationUsage& usage) const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
bool _done;
|
||||
int _keyEventSetsDone;
|
||||
bool _quitEventSetsDone;
|
||||
|
||||
ThreadingModel _threadingModel;
|
||||
bool _threadsRunning;
|
||||
|
||||
osg::ref_ptr<osgGA::EventVisitor> _eventVisitor;
|
||||
|
||||
osg::ref_ptr<osg::OperationQueue> _updateOperations;
|
||||
osg::ref_ptr<osgUtil::UpdateVisitor> _updateVisitor;
|
||||
|
||||
osg::ref_ptr<osg::Operation> _realizeOperation;
|
||||
|
||||
};
|
||||
|
||||
/** View holds a single view on a scene, this view may be composed of one or more slave cameras.*/
|
||||
class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter
|
||||
{
|
||||
|
||||
@@ -120,6 +120,8 @@ class OSGVIEWER_EXPORT Viewer : public ViewerBase, public osgViewer::View
|
||||
|
||||
virtual void getScenes(Scenes& scenes, bool onlyValid=true);
|
||||
|
||||
virtual void getViews(Views& views, bool onlyValid=true);
|
||||
|
||||
|
||||
/** Set up the threading and processor affinity as per the viewers threading model.*/
|
||||
virtual void setUpThreading();
|
||||
@@ -162,7 +164,6 @@ class OSGVIEWER_EXPORT Viewer : public ViewerBase, public osgViewer::View
|
||||
|
||||
bool _firstFrame;
|
||||
|
||||
|
||||
BarrierPosition _endBarrierPosition;
|
||||
|
||||
osg::ref_ptr<osg::BarrierOperation> _startRenderingBarrier;
|
||||
|
||||
221
include/osgViewer/ViewerBase
Normal file
221
include/osgViewer/ViewerBase
Normal file
@@ -0,0 +1,221 @@
|
||||
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
|
||||
*
|
||||
* This library is open source and may be redistributed and/or modified under
|
||||
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
|
||||
* (at your option) any later version. The full license is in LICENSE file
|
||||
* included with this distribution, and on the openscenegraph.org website.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* OpenSceneGraph Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef OSGVIEWER_VIEWERBASE
|
||||
#define OSGVIEWER_VIEWERBASE 1
|
||||
|
||||
#include <osg/Stats>
|
||||
|
||||
#include <osgUtil/UpdateVisitor>
|
||||
|
||||
#include <osgGA/MatrixManipulator>
|
||||
#include <osgGA/EventVisitor>
|
||||
#include <osgGA/EventQueue>
|
||||
|
||||
#include <osgViewer/Scene>
|
||||
#include <osgViewer/GraphicsWindow>
|
||||
|
||||
namespace osgViewer {
|
||||
|
||||
#define USE_REFERENCE_TIME DBL_MAX
|
||||
|
||||
class View;
|
||||
|
||||
/** ViewerBase is the view base class that is inhertied by both Viewer and CompositeViewer.*/
|
||||
class OSGVIEWER_EXPORT ViewerBase : public virtual osg::Object
|
||||
{
|
||||
public:
|
||||
|
||||
ViewerBase();
|
||||
ViewerBase(const ViewerBase& vb);
|
||||
|
||||
|
||||
/** Set the Stats object used for collect various frame related timing and scene graph stats.*/
|
||||
void setStats(osg::Stats* stats) { _stats = stats; }
|
||||
|
||||
/** Get the Viewers Stats object.*/
|
||||
osg::Stats* getStats() { return _stats.get(); }
|
||||
|
||||
/** Get the Viewers Stats object.*/
|
||||
const osg::Stats* getStats() const { return _stats.get(); }
|
||||
|
||||
|
||||
/** read the viewer configuration from a configuration file.*/
|
||||
virtual bool readConfiguration(const std::string& filename) = 0;
|
||||
|
||||
/** Get whether at least of one of this viewers windows are realized.*/
|
||||
virtual bool isRealized() const = 0;
|
||||
|
||||
/** set up windows and associated threads.*/
|
||||
virtual void realize() = 0;
|
||||
|
||||
enum ThreadingModel
|
||||
{
|
||||
SingleThreaded,
|
||||
CullDrawThreadPerContext,
|
||||
ThreadPerContext = CullDrawThreadPerContext,
|
||||
DrawThreadPerContext,
|
||||
CullThreadPerCameraDrawThreadPerContext,
|
||||
ThreadPerCamera = CullThreadPerCameraDrawThreadPerContext,
|
||||
AutomaticSelection
|
||||
};
|
||||
|
||||
/** Set the threading model the rendering traversals will use.*/
|
||||
virtual void setThreadingModel(ThreadingModel threadingModel) = 0;
|
||||
|
||||
/** Get the threading model the rendering traversals will use.*/
|
||||
ThreadingModel getThreadingModel() const { return _threadingModel; }
|
||||
|
||||
|
||||
/** Set the done flag to singnal the viewer's work is done and should exit the frame loop.*/
|
||||
void setDone(bool done) { _done = done; }
|
||||
|
||||
/** Reurn true if viewer's work is done and should exit the frame loop.*/
|
||||
bool done() const { return _done; }
|
||||
|
||||
/** Set the EventVisitor. */
|
||||
void setEventVisitor(osgGA::EventVisitor* eventVisitor) { _eventVisitor = eventVisitor; }
|
||||
|
||||
/** Get the EventVisitor. */
|
||||
osgGA::EventVisitor* getEventVisitor() { return _eventVisitor.get(); }
|
||||
|
||||
/** Get the const EventVisitor. */
|
||||
const osgGA::EventVisitor* getEventVisitor() const { return _eventVisitor.get(); }
|
||||
|
||||
/** Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to
|
||||
* signal end of viewers main loop.
|
||||
* Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape).
|
||||
* Setting to 0 switches off the feature.*/
|
||||
void setKeyEventSetsDone(int key) { _keyEventSetsDone = key; }
|
||||
|
||||
/** get the key event that the viewer checks on each frame to see if the viewer's done flag.*/
|
||||
int getKeyEventSetsDone() const { return _keyEventSetsDone; }
|
||||
|
||||
/** if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature */
|
||||
void setQuitEventSetsDone(bool flag) { _quitEventSetsDone = flag; }
|
||||
|
||||
/** @return true if the viewer respond to the QUIT_APPLICATION-event */
|
||||
bool getQuitEventSetsDone() const { return _quitEventSetsDone; }
|
||||
|
||||
|
||||
|
||||
/** Set the UpdateVisitor. */
|
||||
void setUpdateVisitor(osgUtil::UpdateVisitor* updateVisitor) { _updateVisitor = updateVisitor; }
|
||||
|
||||
/** Get the UpdateVisitor. */
|
||||
osgUtil::UpdateVisitor* getUpdateVisitor() { return _updateVisitor.get(); }
|
||||
|
||||
/** Get the const UpdateVisitor. */
|
||||
const osgUtil::UpdateVisitor* getUpdateVisitor() const { return _updateVisitor.get(); }
|
||||
|
||||
|
||||
/** Set the Update OperationQueue. */
|
||||
void setUpdateOperations(osg::OperationQueue* operations) { _updateOperations = operations; }
|
||||
|
||||
/** Get the Update OperationQueue. */
|
||||
osg::OperationQueue* getUpdateOperations() { return _updateOperations.get(); }
|
||||
|
||||
/** Get the const Update OperationQueue. */
|
||||
const osg::OperationQueue* getUpdateOperations() const { return _updateOperations.get(); }
|
||||
|
||||
/** Add an update operation.*/
|
||||
void addUpdateOperation(osg::Operation* operation);
|
||||
|
||||
/** Remove an update operation.*/
|
||||
void removeUpdateOperation(osg::Operation* operation);
|
||||
|
||||
|
||||
/** Execute a main frame loop.
|
||||
* Equivialant to while (!viewer.done()) viewer.frame();
|
||||
* Also calls realize() if the viewer is not already realized,
|
||||
* and installs trackball manipulator if one is not already assigned.
|
||||
*/
|
||||
virtual int run() = 0;
|
||||
|
||||
/** Render a complete new frame.
|
||||
* Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). */
|
||||
virtual void frame(double simulationTime=USE_REFERENCE_TIME) = 0;
|
||||
|
||||
virtual void advance(double simulationTime=USE_REFERENCE_TIME) = 0;
|
||||
|
||||
virtual void eventTraversal() = 0;
|
||||
|
||||
virtual void updateTraversal() = 0;
|
||||
|
||||
virtual void renderingTraversals() = 0;
|
||||
|
||||
typedef std::vector<osg::Camera*> Cameras;
|
||||
virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osg::GraphicsContext*> Contexts;
|
||||
virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0;
|
||||
|
||||
typedef std::vector<osgViewer::GraphicsWindow*> Windows;
|
||||
virtual void getWindows(Windows& windows, bool onlyValid=true) = 0;
|
||||
|
||||
typedef std::vector<OpenThreads::Thread*> Threads;
|
||||
virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osg::OperationThread*> OperationThreads;
|
||||
virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0;
|
||||
|
||||
typedef std::vector<osgViewer::Scene*> Scenes;
|
||||
virtual void getScenes(Scenes& scenes, bool onlyValid=true) = 0;
|
||||
|
||||
typedef std::vector<osgViewer::View*> Views;
|
||||
virtual void getViews(Views& views, bool onlyValid=true) = 0;
|
||||
|
||||
|
||||
/** Set the graphics operation to call on realization of the viewers graphics windows.*/
|
||||
void setRealizeOperation(osg::Operation* op) { _realizeOperation = op; }
|
||||
|
||||
/** Get the graphics operation to call on realization of the viewers graphics windows.*/
|
||||
osg::Operation* getRealizeOperation() { return _realizeOperation.get(); }
|
||||
|
||||
/** Set up the threading and processor affinity as per the viewers threading model.*/
|
||||
virtual void setUpThreading() = 0;
|
||||
|
||||
/** Return true if viewer threads are running. */
|
||||
bool areThreadsRunning() const { return _threadsRunning; }
|
||||
|
||||
/** Stop any threads begin run by viewer.*/
|
||||
virtual void stopThreading() = 0;
|
||||
|
||||
/** Start any threads required by the viewer.*/
|
||||
virtual void startThreading() = 0;
|
||||
|
||||
/** Get the keyboard and mouse usage of this viewer.*/
|
||||
virtual void getUsage(osg::ApplicationUsage& usage) const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
osg::ref_ptr<osg::Stats> _stats;
|
||||
|
||||
bool _done;
|
||||
int _keyEventSetsDone;
|
||||
bool _quitEventSetsDone;
|
||||
|
||||
ThreadingModel _threadingModel;
|
||||
bool _threadsRunning;
|
||||
|
||||
osg::ref_ptr<osgGA::EventVisitor> _eventVisitor;
|
||||
|
||||
osg::ref_ptr<osg::OperationQueue> _updateOperations;
|
||||
osg::ref_ptr<osgUtil::UpdateVisitor> _updateVisitor;
|
||||
|
||||
osg::ref_ptr<osg::Operation> _realizeOperation;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -101,7 +101,7 @@ class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler
|
||||
|
||||
protected:
|
||||
|
||||
void setUpHUDCamera(osgViewer::View* view);
|
||||
void setUpHUDCamera(osgViewer::ViewerBase* viewer);
|
||||
|
||||
osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks);
|
||||
|
||||
@@ -111,7 +111,7 @@ class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler
|
||||
|
||||
osg::Node* createCameraStats(const std::string& font, osg::Vec3& pos, float startBlocks, bool aquireGPUStats, float characterSize, osg::Stats* viewerStats, osg::Camera* camera);
|
||||
|
||||
void setUpScene(osgViewer::View* view);
|
||||
void setUpScene(osgViewer::ViewerBase* viewer);
|
||||
|
||||
void updateThreadingModelText();
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ SET(LIB_PUBLIC_HEADERS
|
||||
${HEADER_PATH}/Version
|
||||
${HEADER_PATH}/View
|
||||
${HEADER_PATH}/Viewer
|
||||
${HEADER_PATH}/ViewerBase
|
||||
${HEADER_PATH}/ViewerEventHandlers
|
||||
)
|
||||
|
||||
@@ -29,6 +30,7 @@ SET(LIB_COMMON_FILES
|
||||
Version.cpp
|
||||
View.cpp
|
||||
Viewer.cpp
|
||||
ViewerBase.cpp
|
||||
ViewerEventHandlers.cpp
|
||||
)
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ void CompositeViewer::constructorInit()
|
||||
_updateVisitor = new osgUtil::UpdateVisitor;
|
||||
_updateVisitor->setFrameStamp(_frameStamp.get());
|
||||
|
||||
|
||||
setStats(new osg::Stats("CompsiteViewer"));
|
||||
}
|
||||
|
||||
CompositeViewer::~CompositeViewer()
|
||||
@@ -126,14 +126,13 @@ void CompositeViewer::addView(osgViewer::View* view)
|
||||
view->_viewerBase = this;
|
||||
|
||||
view->setFrameStamp(_frameStamp.get());
|
||||
view->setStats(new osg::Stats("CompositeViewer"));
|
||||
|
||||
if (threadsWereRuinning) startThreading();
|
||||
}
|
||||
|
||||
void CompositeViewer::removeView(osgViewer::View* view)
|
||||
{
|
||||
for(Views::iterator itr = _views.begin();
|
||||
for(RefViews::iterator itr = _views.begin();
|
||||
itr != _views.end();
|
||||
++itr)
|
||||
{
|
||||
@@ -173,7 +172,7 @@ bool CompositeViewer::isRealized() const
|
||||
|
||||
int CompositeViewer::run()
|
||||
{
|
||||
for(Views::iterator itr = _views.begin();
|
||||
for(RefViews::iterator itr = _views.begin();
|
||||
itr != _views.end();
|
||||
++itr)
|
||||
{
|
||||
@@ -201,7 +200,7 @@ void CompositeViewer::setStartTick(osg::Timer_t tick)
|
||||
{
|
||||
_startTick = tick;
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -462,7 +461,7 @@ void CompositeViewer::init()
|
||||
{
|
||||
osg::notify(osg::INFO)<<"CompositeViewer::init()"<<std::endl;
|
||||
|
||||
for(Views::iterator itr = _views.begin();
|
||||
for(RefViews::iterator itr = _views.begin();
|
||||
itr != _views.end();
|
||||
++itr)
|
||||
{
|
||||
@@ -475,7 +474,7 @@ void CompositeViewer::getContexts(Contexts& contexts, bool onlyValid)
|
||||
typedef std::set<osg::GraphicsContext*> ContextSet;
|
||||
ContextSet contextSet;
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -514,7 +513,7 @@ void CompositeViewer::getCameras(Cameras& cameras, bool onlyActive)
|
||||
{
|
||||
cameras.clear();
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -554,7 +553,7 @@ void CompositeViewer::getScenes(Scenes& scenes, bool onlyValid)
|
||||
typedef std::set<osgViewer::Scene*> SceneSet;
|
||||
SceneSet sceneSet;
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -573,6 +572,16 @@ void CompositeViewer::getScenes(Scenes& scenes, bool onlyValid)
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeViewer::getViews(Views& views, bool onlyValid)
|
||||
{
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
views.push_back(vitr->get());
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeViewer::getAllThreads(Threads& threads, bool onlyActive)
|
||||
{
|
||||
OperationThreads operationThreads;
|
||||
@@ -778,23 +787,17 @@ void CompositeViewer::advance(double simulationTime)
|
||||
_frameStamp->setSimulationTime(simulationTime);
|
||||
}
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
if (getStats() && getStats()->collectStats("frame_rate"))
|
||||
{
|
||||
if ((*vitr)->getStats() && (*vitr)->getStats()->collectStats("frame_rate"))
|
||||
{
|
||||
// update previous frame stats
|
||||
double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime;
|
||||
(*vitr)->getStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime);
|
||||
(*vitr)->getStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime);
|
||||
// update previous frame stats
|
||||
double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime;
|
||||
getStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime);
|
||||
getStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime);
|
||||
|
||||
// update current frames stats
|
||||
(*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());
|
||||
}
|
||||
|
||||
// update current frames stats
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CompositeViewer::setCameraWithFocus(osg::Camera* camera)
|
||||
@@ -803,7 +806,7 @@ void CompositeViewer::setCameraWithFocus(osg::Camera* camera)
|
||||
|
||||
if (camera)
|
||||
{
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -1016,7 +1019,7 @@ void CompositeViewer::eventTraversal()
|
||||
// osg::notify(osg::NOTICE)<<"mouseEventState Xmin = "<<eventState->getXmin()<<" Ymin="<<eventState->getYmin()<<" xMax="<<eventState->getXmax()<<" Ymax="<<eventState->getYmax()<<std::endl;
|
||||
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -1140,22 +1143,15 @@ void CompositeViewer::eventTraversal()
|
||||
|
||||
}
|
||||
|
||||
// stats:
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
|
||||
if ((*vitr)->getStats() && (*vitr)->getStats()->collectStats("event"))
|
||||
{
|
||||
double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
// update current frames stats
|
||||
(*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal);
|
||||
(*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal);
|
||||
(*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal);
|
||||
}
|
||||
if (getStats() && getStats()->collectStats("event"))
|
||||
{
|
||||
double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
// update current frames stats
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1191,7 +1187,7 @@ void CompositeViewer::updateTraversal()
|
||||
_updateOperations->runOperations(this);
|
||||
}
|
||||
|
||||
for(Views::iterator vitr = _views.begin();
|
||||
for(RefViews::iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
@@ -1225,21 +1221,18 @@ void CompositeViewer::updateTraversal()
|
||||
view->getCamera()->setViewMatrix( view->getCameraManipulator()->getInverseMatrix());
|
||||
}
|
||||
view->updateSlaves();
|
||||
|
||||
// stats
|
||||
if (view->getStats() && view->getStats()->collectStats("update"))
|
||||
{
|
||||
double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
// update current frames stats
|
||||
view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal);
|
||||
view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal);
|
||||
view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (getStats() && getStats()->collectStats("update"))
|
||||
{
|
||||
double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
// update current frames stats
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1250,6 +1243,8 @@ void CompositeViewer::renderingTraversals()
|
||||
|
||||
if (_done) return;
|
||||
|
||||
double beginRenderingTraversals = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
Scenes scenes;
|
||||
getScenes(scenes);
|
||||
|
||||
@@ -1318,11 +1313,21 @@ void CompositeViewer::renderingTraversals()
|
||||
dp->signalEndFrame();
|
||||
}
|
||||
}
|
||||
|
||||
if (getStats() && getStats()->collectStats("update"))
|
||||
{
|
||||
double endRenderingTraversals = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick());
|
||||
|
||||
// update current frames stats
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals begin time ", beginRenderingTraversals);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals end time ", endRenderingTraversals);
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals time taken", endRenderingTraversals-beginRenderingTraversals);
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeViewer::getUsage(osg::ApplicationUsage& usage) const
|
||||
{
|
||||
for(Views::const_iterator vitr = _views.begin();
|
||||
for(RefViews::const_iterator vitr = _views.begin();
|
||||
vitr != _views.end();
|
||||
++vitr)
|
||||
{
|
||||
|
||||
@@ -42,10 +42,10 @@ StatsHandler::StatsHandler():
|
||||
bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
|
||||
{
|
||||
|
||||
osgViewer::View* view = dynamic_cast<osgViewer::View*>(&aa);
|
||||
if (!view) return false;
|
||||
osgViewer::View* myview = dynamic_cast<osgViewer::View*>(&aa);
|
||||
if (!myview) return false;
|
||||
|
||||
osgViewer::ViewerBase* viewer = view->getViewerBase();
|
||||
osgViewer::ViewerBase* viewer = myview->getViewerBase();
|
||||
if (viewer && _threadingModelText.valid() && viewer->getThreadingModel()!=_threadingModel)
|
||||
{
|
||||
_threadingModel = viewer->getThreadingModel();
|
||||
@@ -61,12 +61,12 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
{
|
||||
if (ea.getKey()==_keyEventTogglesOnScreenStats)
|
||||
{
|
||||
if (view->getStats())
|
||||
if (viewer->getStats())
|
||||
{
|
||||
if (!_initialized)
|
||||
{
|
||||
setUpHUDCamera(view);
|
||||
setUpScene(view);
|
||||
setUpHUDCamera(viewer);
|
||||
setUpScene(viewer);
|
||||
}
|
||||
|
||||
++_statsType;
|
||||
@@ -80,9 +80,9 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
{
|
||||
case(NO_STATS):
|
||||
{
|
||||
view->getStats()->collectStats("frame_rate",false);
|
||||
view->getStats()->collectStats("event",false);
|
||||
view->getStats()->collectStats("update",false);
|
||||
viewer->getStats()->collectStats("frame_rate",false);
|
||||
viewer->getStats()->collectStats("event",false);
|
||||
viewer->getStats()->collectStats("update",false);
|
||||
|
||||
for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin();
|
||||
itr != cameras.end();
|
||||
@@ -98,7 +98,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
}
|
||||
case(FRAME_RATE):
|
||||
{
|
||||
view->getStats()->collectStats("frame_rate",true);
|
||||
viewer->getStats()->collectStats("frame_rate",true);
|
||||
|
||||
_camera->setNodeMask(0xffffffff);
|
||||
_switch->setValue(_frameRateChildNum, true);
|
||||
@@ -106,13 +106,22 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
}
|
||||
case(VIEWER_STATS):
|
||||
{
|
||||
if (view->getDatabasePager() && view->getDatabasePager()->isRunning())
|
||||
ViewerBase::Scenes scenes;
|
||||
viewer->getScenes(scenes);
|
||||
for(ViewerBase::Scenes::iterator itr = scenes.begin();
|
||||
itr != scenes.end();
|
||||
++itr)
|
||||
{
|
||||
view->getDatabasePager()->resetStats();
|
||||
Scene* scene = *itr;
|
||||
osgDB::DatabasePager* dp = scene->getDatabasePager();
|
||||
if (dp && dp->isRunning())
|
||||
{
|
||||
dp->resetStats();
|
||||
}
|
||||
}
|
||||
|
||||
view->getStats()->collectStats("event",true);
|
||||
view->getStats()->collectStats("update",true);
|
||||
viewer->getStats()->collectStats("event",true);
|
||||
viewer->getStats()->collectStats("update",true);
|
||||
|
||||
for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin();
|
||||
itr != cameras.end();
|
||||
@@ -144,12 +153,12 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
}
|
||||
if (ea.getKey()==_keyEventPrintsOutStats)
|
||||
{
|
||||
if (view->getStats())
|
||||
if (viewer->getStats())
|
||||
{
|
||||
osg::notify(osg::NOTICE)<<std::endl<<"Stats report:"<<std::endl;
|
||||
typedef std::vector<osg::Stats*> StatsList;
|
||||
StatsList statsList;
|
||||
statsList.push_back(view->getStats());
|
||||
statsList.push_back(viewer->getStats());
|
||||
|
||||
osgViewer::ViewerBase::Contexts contexts;
|
||||
viewer->getContexts(contexts);
|
||||
@@ -169,7 +178,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = view->getStats()->getEarliestFrameNumber(); i<= view->getStats()->getLatestFrameNumber()-1; ++i)
|
||||
for(int i = viewer->getStats()->getEarliestFrameNumber(); i<= viewer->getStats()->getLatestFrameNumber()-1; ++i)
|
||||
{
|
||||
for(StatsList::iterator itr = statsList.begin();
|
||||
itr != statsList.end();
|
||||
@@ -212,13 +221,12 @@ void StatsHandler::reset()
|
||||
_camera->setGraphicsContext(0);
|
||||
}
|
||||
|
||||
void StatsHandler::setUpHUDCamera(osgViewer::View* view)
|
||||
void StatsHandler::setUpHUDCamera(osgViewer::ViewerBase* viewer)
|
||||
{
|
||||
osgViewer::GraphicsWindow* window = dynamic_cast<osgViewer::GraphicsWindow*>(_camera->getGraphicsContext());
|
||||
osgViewer::ViewerBase* viewer = view->getViewerBase();
|
||||
osg::GraphicsContext* context;
|
||||
|
||||
if (viewer && !window)
|
||||
if (!window)
|
||||
{
|
||||
osgViewer::Viewer::Windows windows;
|
||||
viewer->getWindows(windows);
|
||||
@@ -230,10 +238,7 @@ void StatsHandler::setUpHUDCamera(osgViewer::View* view)
|
||||
|
||||
context = window;
|
||||
}
|
||||
else if (!viewer)
|
||||
{
|
||||
context = view->getCamera()->getGraphicsContext();
|
||||
}
|
||||
|
||||
_camera->setGraphicsContext(context);
|
||||
|
||||
_camera->setViewport(0, 0, context->getTraits()->width, context->getTraits()->height);
|
||||
@@ -546,7 +551,7 @@ osg::Geometry* StatsHandler::createTick(const osg::Vec3& pos, float height, cons
|
||||
return geometry;
|
||||
}
|
||||
|
||||
void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer)
|
||||
{
|
||||
_switch = new osg::Switch;
|
||||
|
||||
@@ -562,23 +567,23 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
|
||||
|
||||
// collect all the relevant camers
|
||||
typedef std::vector<osg::Camera*> Cameras;
|
||||
Cameras cameras;
|
||||
if (view->getCamera()->getStats() && view->getCamera()->getGraphicsContext())
|
||||
ViewerBase::Cameras validCameras;
|
||||
viewer->getCameras(validCameras);
|
||||
|
||||
ViewerBase::Cameras cameras;
|
||||
for(ViewerBase::Cameras::iterator itr = validCameras.begin();
|
||||
itr != validCameras.end();
|
||||
++itr)
|
||||
{
|
||||
cameras.push_back(view->getCamera());
|
||||
}
|
||||
for(unsigned int si=0; si<view->getNumSlaves(); ++si)
|
||||
{
|
||||
if (view->getSlave(si)._camera->getStats() && view->getSlave(si)._camera->getGraphicsContext())
|
||||
if ((*itr)->getStats())
|
||||
{
|
||||
cameras.push_back(view->getSlave(si)._camera.get());
|
||||
cameras.push_back(*itr);
|
||||
}
|
||||
}
|
||||
|
||||
// check for querry time support
|
||||
unsigned int numCamrasWithTimerQuerySupport = 0;
|
||||
for(Cameras::iterator citr = cameras.begin();
|
||||
for(ViewerBase::Cameras::iterator citr = cameras.begin();
|
||||
citr != cameras.end();
|
||||
++citr)
|
||||
{
|
||||
@@ -634,7 +639,7 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
frameRateValue->setPosition(pos);
|
||||
frameRateValue->setText("0.0");
|
||||
|
||||
frameRateValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Frame rate",-1, true, 1.0));
|
||||
frameRateValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Frame rate",-1, true, 1.0));
|
||||
|
||||
pos.y() -= characterSize*1.5f;
|
||||
|
||||
@@ -693,11 +698,11 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
eventValue->setPosition(pos);
|
||||
eventValue->setText("0.0");
|
||||
|
||||
eventValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Event traversal time taken",-1, false, 1000.0));
|
||||
eventValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Event traversal time taken",-1, false, 1000.0));
|
||||
|
||||
pos.x() = startBlocks;
|
||||
osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks);
|
||||
geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, view->getStats(), view->getStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks));
|
||||
geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getStats(), viewer->getStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks));
|
||||
geode->addDrawable(geometry);
|
||||
|
||||
pos.y() -= characterSize*1.5f;
|
||||
@@ -726,11 +731,11 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
updateValue->setPosition(pos);
|
||||
updateValue->setText("0.0");
|
||||
|
||||
updateValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Update traversal time taken",-1, false, 1000.0));
|
||||
updateValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Update traversal time taken",-1, false, 1000.0));
|
||||
|
||||
pos.x() = startBlocks;
|
||||
osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks);
|
||||
geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, view->getStats(), view->getStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks));
|
||||
geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getStats(), viewer->getStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks));
|
||||
geode->addDrawable(geometry);
|
||||
|
||||
pos.y() -= characterSize*1.5f;
|
||||
@@ -740,11 +745,11 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
|
||||
|
||||
// add camera stats
|
||||
for(Cameras::iterator citr = cameras.begin();
|
||||
for(ViewerBase::Cameras::iterator citr = cameras.begin();
|
||||
citr != cameras.end();
|
||||
++citr)
|
||||
{
|
||||
group->addChild(createCameraStats(font, pos, startBlocks, aquireGPUStats, characterSize, view->getStats(), *citr));
|
||||
group->addChild(createCameraStats(font, pos, startBlocks, aquireGPUStats, characterSize, viewer->getStats(), *citr));
|
||||
}
|
||||
|
||||
|
||||
@@ -763,91 +768,98 @@ void StatsHandler::setUpScene(osgViewer::View* view)
|
||||
geode->addDrawable(ticks);
|
||||
|
||||
osg::Geometry* frameMarkers = createFrameMarkers(pos, height, colourTicks, _numBlocks + 1);
|
||||
frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, view->getStats(), 0, _numBlocks + 1));
|
||||
frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, viewer->getStats(), 0, _numBlocks + 1));
|
||||
geode->addDrawable(frameMarkers);
|
||||
}
|
||||
|
||||
|
||||
osgDB::DatabasePager* dp = view->getDatabasePager();
|
||||
if (dp && dp->isRunning())
|
||||
ViewerBase::Scenes scenes;
|
||||
viewer->getScenes(scenes);
|
||||
for(ViewerBase::Scenes::iterator itr = scenes.begin();
|
||||
itr != scenes.end();
|
||||
++itr)
|
||||
{
|
||||
pos.y() -= characterSize*1.5f;
|
||||
|
||||
Scene* scene = *itr;
|
||||
osgDB::DatabasePager* dp = scene->getDatabasePager();
|
||||
if (dp && dp->isRunning())
|
||||
{
|
||||
pos.y() -= characterSize*1.5f;
|
||||
|
||||
pos.x() = leftPos;
|
||||
|
||||
osg::ref_ptr<osgText::Text> averageLabel = new osgText::Text;
|
||||
geode->addDrawable( averageLabel.get() );
|
||||
|
||||
averageLabel->setColor(colorDP);
|
||||
averageLabel->setFont(font);
|
||||
averageLabel->setCharacterSize(characterSize);
|
||||
averageLabel->setPosition(pos);
|
||||
averageLabel->setText("DatabasePager time to merge new tiles - average: ");
|
||||
|
||||
pos.x() = averageLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> averageValue = new osgText::Text;
|
||||
geode->addDrawable( averageValue.get() );
|
||||
|
||||
averageValue->setColor(colorDP);
|
||||
averageValue->setFont(font);
|
||||
averageValue->setCharacterSize(characterSize);
|
||||
averageValue->setPosition(pos);
|
||||
averageValue->setText("1000");
|
||||
|
||||
pos.x() = averageValue->getBound().xMax() + 2.0f*characterSize;
|
||||
|
||||
|
||||
osg::ref_ptr<osgText::Text> minLabel = new osgText::Text;
|
||||
geode->addDrawable( minLabel.get() );
|
||||
|
||||
minLabel->setColor(colorDP);
|
||||
minLabel->setFont(font);
|
||||
minLabel->setCharacterSize(characterSize);
|
||||
minLabel->setPosition(pos);
|
||||
minLabel->setText("min: ");
|
||||
|
||||
pos.x() = minLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> minValue = new osgText::Text;
|
||||
geode->addDrawable( minValue.get() );
|
||||
|
||||
minValue->setColor(colorDP);
|
||||
minValue->setFont(font);
|
||||
minValue->setCharacterSize(characterSize);
|
||||
minValue->setPosition(pos);
|
||||
minValue->setText("1000");
|
||||
|
||||
pos.x() = minValue->getBound().xMax() + 2.0f*characterSize;
|
||||
|
||||
|
||||
osg::ref_ptr<osgText::Text> maxLabel = new osgText::Text;
|
||||
geode->addDrawable( maxLabel.get() );
|
||||
|
||||
maxLabel->setColor(colorDP);
|
||||
maxLabel->setFont(font);
|
||||
maxLabel->setCharacterSize(characterSize);
|
||||
maxLabel->setPosition(pos);
|
||||
maxLabel->setText("max: ");
|
||||
|
||||
pos.x() = maxLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> maxValue = new osgText::Text;
|
||||
geode->addDrawable( maxValue.get() );
|
||||
|
||||
maxValue->setColor(colorDP);
|
||||
maxValue->setFont(font);
|
||||
maxValue->setCharacterSize(characterSize);
|
||||
maxValue->setPosition(pos);
|
||||
maxValue->setText("1000");
|
||||
|
||||
pos.x() = maxLabel->getBound().xMax();
|
||||
|
||||
geode->setCullCallback(new PagerCallback(dp, minValue.get(), maxValue.get(), averageValue.get(), 1000.0));
|
||||
}
|
||||
|
||||
pos.x() = leftPos;
|
||||
|
||||
osg::ref_ptr<osgText::Text> averageLabel = new osgText::Text;
|
||||
geode->addDrawable( averageLabel.get() );
|
||||
|
||||
averageLabel->setColor(colorDP);
|
||||
averageLabel->setFont(font);
|
||||
averageLabel->setCharacterSize(characterSize);
|
||||
averageLabel->setPosition(pos);
|
||||
averageLabel->setText("DatabasePager time to merge new tiles - average: ");
|
||||
|
||||
pos.x() = averageLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> averageValue = new osgText::Text;
|
||||
geode->addDrawable( averageValue.get() );
|
||||
|
||||
averageValue->setColor(colorDP);
|
||||
averageValue->setFont(font);
|
||||
averageValue->setCharacterSize(characterSize);
|
||||
averageValue->setPosition(pos);
|
||||
averageValue->setText("1000");
|
||||
|
||||
pos.x() = averageValue->getBound().xMax() + 2.0f*characterSize;
|
||||
|
||||
|
||||
osg::ref_ptr<osgText::Text> minLabel = new osgText::Text;
|
||||
geode->addDrawable( minLabel.get() );
|
||||
|
||||
minLabel->setColor(colorDP);
|
||||
minLabel->setFont(font);
|
||||
minLabel->setCharacterSize(characterSize);
|
||||
minLabel->setPosition(pos);
|
||||
minLabel->setText("min: ");
|
||||
|
||||
pos.x() = minLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> minValue = new osgText::Text;
|
||||
geode->addDrawable( minValue.get() );
|
||||
|
||||
minValue->setColor(colorDP);
|
||||
minValue->setFont(font);
|
||||
minValue->setCharacterSize(characterSize);
|
||||
minValue->setPosition(pos);
|
||||
minValue->setText("1000");
|
||||
|
||||
pos.x() = minValue->getBound().xMax() + 2.0f*characterSize;
|
||||
|
||||
|
||||
osg::ref_ptr<osgText::Text> maxLabel = new osgText::Text;
|
||||
geode->addDrawable( maxLabel.get() );
|
||||
|
||||
maxLabel->setColor(colorDP);
|
||||
maxLabel->setFont(font);
|
||||
maxLabel->setCharacterSize(characterSize);
|
||||
maxLabel->setPosition(pos);
|
||||
maxLabel->setText("max: ");
|
||||
|
||||
pos.x() = maxLabel->getBound().xMax();
|
||||
|
||||
osg::ref_ptr<osgText::Text> maxValue = new osgText::Text;
|
||||
geode->addDrawable( maxValue.get() );
|
||||
|
||||
maxValue->setColor(colorDP);
|
||||
maxValue->setFont(font);
|
||||
maxValue->setCharacterSize(characterSize);
|
||||
maxValue->setPosition(pos);
|
||||
maxValue->setText("1000");
|
||||
|
||||
pos.x() = maxLabel->getBound().xMax();
|
||||
|
||||
geode->setCullCallback(new PagerCallback(dp, minValue.get(), maxValue.get(), averageValue.get(), 1000.0));
|
||||
}
|
||||
|
||||
pos.x() = leftPos;
|
||||
|
||||
}
|
||||
#if 0
|
||||
// scene stats
|
||||
|
||||
@@ -124,44 +124,6 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
ViewerBase::ViewerBase():
|
||||
osg::Object(true)
|
||||
{
|
||||
_done = false;
|
||||
_keyEventSetsDone = osgGA::GUIEventAdapter::KEY_Escape;
|
||||
_quitEventSetsDone = true;
|
||||
_threadingModel = AutomaticSelection;
|
||||
_threadsRunning = false;
|
||||
|
||||
}
|
||||
|
||||
ViewerBase::ViewerBase(const ViewerBase& base):
|
||||
osg::Object(true)
|
||||
{
|
||||
}
|
||||
|
||||
void ViewerBase::addUpdateOperation(osg::Operation* operation)
|
||||
{
|
||||
if (!operation) return;
|
||||
|
||||
if (!_updateOperations) _updateOperations = new osg::OperationQueue;
|
||||
|
||||
_updateOperations->add(operation);
|
||||
}
|
||||
|
||||
void ViewerBase::removeUpdateOperation(osg::Operation* operation)
|
||||
{
|
||||
if (!operation) return;
|
||||
|
||||
if (_updateOperations.valid())
|
||||
{
|
||||
_updateOperations->remove(operation);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
View::View():
|
||||
_fusionDistanceMode(osgUtil::SceneView::PROPORTIONAL_TO_SCREEN_DISTANCE),
|
||||
_fusionDistanceValue(1.0f)
|
||||
|
||||
@@ -1408,7 +1408,6 @@ void Viewer::eventTraversal()
|
||||
getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void Viewer::updateTraversal()
|
||||
@@ -1585,6 +1584,11 @@ void Viewer::getScenes(Scenes& scenes, bool onlyValid)
|
||||
scenes.push_back(_scene.get());
|
||||
}
|
||||
|
||||
void Viewer::getViews(Views& views, bool onlyValid)
|
||||
{
|
||||
views.push_back(this);
|
||||
}
|
||||
|
||||
struct LessGraphicsContext
|
||||
{
|
||||
bool operator () (const osg::GraphicsContext* lhs, const osg::GraphicsContext* rhs) const
|
||||
|
||||
60
src/osgViewer/ViewerBase.cpp
Normal file
60
src/osgViewer/ViewerBase.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
|
||||
*
|
||||
* This library is open source and may be redistributed and/or modified under
|
||||
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
|
||||
* (at your option) any later version. The full license is in LICENSE file
|
||||
* included with this distribution, and on the openscenegraph.org website.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* OpenSceneGraph Public License for more details.
|
||||
*/
|
||||
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
#include <osg/io_utils>
|
||||
|
||||
#include <osg/TextureCubeMap>
|
||||
#include <osg/TextureRectangle>
|
||||
#include <osg/TexMat>
|
||||
|
||||
#include <osgUtil/Optimizer>
|
||||
#include <osgUtil/IntersectionVisitor>
|
||||
|
||||
using namespace osgViewer;
|
||||
|
||||
ViewerBase::ViewerBase():
|
||||
osg::Object(true)
|
||||
{
|
||||
_done = false;
|
||||
_keyEventSetsDone = osgGA::GUIEventAdapter::KEY_Escape;
|
||||
_quitEventSetsDone = true;
|
||||
_threadingModel = AutomaticSelection;
|
||||
_threadsRunning = false;
|
||||
|
||||
}
|
||||
|
||||
ViewerBase::ViewerBase(const ViewerBase& base):
|
||||
osg::Object(true)
|
||||
{
|
||||
}
|
||||
|
||||
void ViewerBase::addUpdateOperation(osg::Operation* operation)
|
||||
{
|
||||
if (!operation) return;
|
||||
|
||||
if (!_updateOperations) _updateOperations = new osg::OperationQueue;
|
||||
|
||||
_updateOperations->add(operation);
|
||||
}
|
||||
|
||||
void ViewerBase::removeUpdateOperation(osg::Operation* operation)
|
||||
{
|
||||
if (!operation) return;
|
||||
|
||||
if (_updateOperations.valid())
|
||||
{
|
||||
_updateOperations->remove(operation);
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <osg/Matrix>
|
||||
#include <osg/Matrixd>
|
||||
#include <osg/Object>
|
||||
#include <osg/Stats>
|
||||
#include <osg/View>
|
||||
|
||||
// Must undefine IN and OUT macros defined in Windows headers
|
||||
@@ -74,21 +73,6 @@ BEGIN_OBJECT_REFLECTOR(osg::View)
|
||||
__void__take__View_R1,
|
||||
"Take all the settings, Camera and Slaves from the passed in view, leaving it empty. ",
|
||||
"");
|
||||
I_Method1(void, setStats, IN, osg::Stats *, stats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setStats__osg_Stats_P1,
|
||||
"Set the Stats object used for collect various frame related timing and scene graph stats. ",
|
||||
"");
|
||||
I_Method0(osg::Stats *, getStats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_Stats_P1__getStats,
|
||||
"Get the Stats object. ",
|
||||
"");
|
||||
I_Method0(const osg::Stats *, getStats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osg_Stats_P1__getStats,
|
||||
"Get the const Stats object. ",
|
||||
"");
|
||||
I_Method1(void, setLightingMode, IN, osg::View::LightingMode, lightingMode,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setLightingMode__LightingMode,
|
||||
@@ -201,9 +185,6 @@ BEGIN_OBJECT_REFLECTOR(osg::View)
|
||||
0,
|
||||
0,
|
||||
__bool__removeSlave__unsigned_int);
|
||||
I_SimpleProperty(osg::Stats *, Stats,
|
||||
__osg_Stats_P1__getStats,
|
||||
__void__setStats__osg_Stats_P1);
|
||||
END_REFLECTOR
|
||||
|
||||
BEGIN_VALUE_REFLECTOR(osg::View::Slave)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <osgGA/EventQueue>
|
||||
#include <osgViewer/CompositeViewer>
|
||||
#include <osgViewer/View>
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
// Must undefine IN and OUT macros defined in Windows headers
|
||||
#ifdef IN
|
||||
@@ -251,6 +252,11 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::CompositeViewer)
|
||||
__void__getScenes__Scenes_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true,
|
||||
Properties::VIRTUAL,
|
||||
__void__getViews__Views_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, setUpThreading,
|
||||
Properties::VIRTUAL,
|
||||
__void__setUpThreading,
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include <osgIntrospection/StaticMethodInfo>
|
||||
#include <osgIntrospection/Attributes>
|
||||
|
||||
#include <osg/ApplicationUsage>
|
||||
#include <osg/Camera>
|
||||
#include <osg/CopyOp>
|
||||
#include <osg/DisplaySettings>
|
||||
@@ -18,19 +17,17 @@
|
||||
#include <osg/Image>
|
||||
#include <osg/Node>
|
||||
#include <osg/Object>
|
||||
#include <osg/OperationThread>
|
||||
#include <osg/Timer>
|
||||
#include <osg/View>
|
||||
#include <osgDB/DatabasePager>
|
||||
#include <osgGA/EventQueue>
|
||||
#include <osgGA/EventVisitor>
|
||||
#include <osgGA/GUIEventHandler>
|
||||
#include <osgGA/MatrixManipulator>
|
||||
#include <osgUtil/LineSegmentIntersector>
|
||||
#include <osgUtil/SceneView>
|
||||
#include <osgUtil/UpdateVisitor>
|
||||
#include <osgViewer/Scene>
|
||||
#include <osgViewer/View>
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
// Must undefine IN and OUT macros defined in Windows headers
|
||||
#ifdef IN
|
||||
@@ -368,271 +365,6 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::View)
|
||||
0);
|
||||
END_REFLECTOR
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::Camera * >, osgViewer::ViewerBase::Cameras)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::GraphicsContext * >, osgViewer::ViewerBase::Contexts)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osgViewer::GraphicsWindow * >, osgViewer::ViewerBase::Windows)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< OpenThreads::Thread * >, osgViewer::ViewerBase::Threads)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::OperationThread * >, osgViewer::ViewerBase::OperationThreads)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osgViewer::Scene * >, osgViewer::ViewerBase::Scenes)
|
||||
|
||||
BEGIN_ENUM_REFLECTOR(osgViewer::ViewerBase::ThreadingModel)
|
||||
I_DeclaringFile("osgViewer/View");
|
||||
I_EnumLabel(osgViewer::ViewerBase::SingleThreaded);
|
||||
I_EnumLabel(osgViewer::ViewerBase::CullDrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::ThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::DrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::ThreadPerCamera);
|
||||
I_EnumLabel(osgViewer::ViewerBase::AutomaticSelection);
|
||||
END_REFLECTOR
|
||||
|
||||
BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgViewer::ViewerBase)
|
||||
I_DeclaringFile("osgViewer/View");
|
||||
I_VirtualBaseType(osg::Object);
|
||||
I_Constructor0(____ViewerBase,
|
||||
"",
|
||||
"");
|
||||
I_Constructor1(IN, const osgViewer::ViewerBase &, vb,
|
||||
Properties::NON_EXPLICIT,
|
||||
____ViewerBase__C5_ViewerBase_R1,
|
||||
"",
|
||||
"");
|
||||
I_Method1(bool, readConfiguration, IN, const std::string &, filename,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__bool__readConfiguration__C5_std_string_R1,
|
||||
"read the viewer configuration from a configuration file. ",
|
||||
"");
|
||||
I_Method0(bool, isRealized,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__bool__isRealized,
|
||||
"Get whether at least of one of this viewers windows are realized. ",
|
||||
"");
|
||||
I_Method0(void, realize,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__realize,
|
||||
"set up windows and associated threads. ",
|
||||
"");
|
||||
I_Method1(void, setThreadingModel, IN, osgViewer::ViewerBase::ThreadingModel, threadingModel,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__setThreadingModel__ThreadingModel,
|
||||
"Set the threading model the rendering traversals will use. ",
|
||||
"");
|
||||
I_Method0(osgViewer::ViewerBase::ThreadingModel, getThreadingModel,
|
||||
Properties::NON_VIRTUAL,
|
||||
__ThreadingModel__getThreadingModel,
|
||||
"Get the threading model the rendering traversals will use. ",
|
||||
"");
|
||||
I_Method1(void, setDone, IN, bool, done,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setDone__bool,
|
||||
"Set the done flag to singnal the viewer's work is done and should exit the frame loop. ",
|
||||
"");
|
||||
I_Method0(bool, done,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__done,
|
||||
"Reurn true if viewer's work is done and should exit the frame loop. ",
|
||||
"");
|
||||
I_Method1(void, setEventVisitor, IN, osgGA::EventVisitor *, eventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setEventVisitor__osgGA_EventVisitor_P1,
|
||||
"Set the EventVisitor. ",
|
||||
"");
|
||||
I_Method0(osgGA::EventVisitor *, getEventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osgGA_EventVisitor_P1__getEventVisitor,
|
||||
"Get the EventVisitor. ",
|
||||
"");
|
||||
I_Method0(const osgGA::EventVisitor *, getEventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osgGA_EventVisitor_P1__getEventVisitor,
|
||||
"Get the const EventVisitor. ",
|
||||
"");
|
||||
I_Method1(void, setKeyEventSetsDone, IN, int, key,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setKeyEventSetsDone__int,
|
||||
"Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to signal end of viewers main loop. ",
|
||||
"Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). Setting to 0 switches off the feature. ");
|
||||
I_Method0(int, getKeyEventSetsDone,
|
||||
Properties::NON_VIRTUAL,
|
||||
__int__getKeyEventSetsDone,
|
||||
"get the key event that the viewer checks on each frame to see if the viewer's done flag. ",
|
||||
"");
|
||||
I_Method1(void, setQuitEventSetsDone, IN, bool, flag,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setQuitEventSetsDone__bool,
|
||||
"if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature ",
|
||||
"");
|
||||
I_Method0(bool, getQuitEventSetsDone,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__getQuitEventSetsDone,
|
||||
"",
|
||||
"true if the viewer respond to the QUIT_APPLICATION-event ");
|
||||
I_Method1(void, setUpdateVisitor, IN, osgUtil::UpdateVisitor *, updateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setUpdateVisitor__osgUtil_UpdateVisitor_P1,
|
||||
"Set the UpdateVisitor. ",
|
||||
"");
|
||||
I_Method0(osgUtil::UpdateVisitor *, getUpdateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
"Get the UpdateVisitor. ",
|
||||
"");
|
||||
I_Method0(const osgUtil::UpdateVisitor *, getUpdateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
"Get the const UpdateVisitor. ",
|
||||
"");
|
||||
I_Method1(void, setUpdateOperations, IN, osg::OperationQueue *, operations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setUpdateOperations__osg_OperationQueue_P1,
|
||||
"Set the Update OperationQueue. ",
|
||||
"");
|
||||
I_Method0(osg::OperationQueue *, getUpdateOperations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_OperationQueue_P1__getUpdateOperations,
|
||||
"Get the Update OperationQueue. ",
|
||||
"");
|
||||
I_Method0(const osg::OperationQueue *, getUpdateOperations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osg_OperationQueue_P1__getUpdateOperations,
|
||||
"Get the const Update OperationQueue. ",
|
||||
"");
|
||||
I_Method1(void, addUpdateOperation, IN, osg::Operation *, operation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__addUpdateOperation__osg_Operation_P1,
|
||||
"Add an update operation. ",
|
||||
"");
|
||||
I_Method1(void, removeUpdateOperation, IN, osg::Operation *, operation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__removeUpdateOperation__osg_Operation_P1,
|
||||
"Remove an update operation. ",
|
||||
"");
|
||||
I_Method0(int, run,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__int__run,
|
||||
"Execute a main frame loop. ",
|
||||
"Equivialant to while (!viewer.done()) viewer.frame(); Also calls realize() if the viewer is not already realized, and installs trackball manipulator if one is not already assigned. ");
|
||||
I_MethodWithDefaults1(void, frame, IN, double, simulationTime, USE_REFERENCE_TIME,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__frame__double,
|
||||
"Render a complete new frame. ",
|
||||
"Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). ");
|
||||
I_MethodWithDefaults1(void, advance, IN, double, simulationTime, USE_REFERENCE_TIME,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__advance__double,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, eventTraversal,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__eventTraversal,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, updateTraversal,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__updateTraversal,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, renderingTraversals,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__renderingTraversals,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getCameras, IN, osgViewer::ViewerBase::Cameras &, cameras, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getCameras__Cameras_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getContexts, IN, osgViewer::ViewerBase::Contexts &, contexts, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getContexts__Contexts_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getWindows, IN, osgViewer::ViewerBase::Windows &, windows, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getWindows__Windows_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getAllThreads, IN, osgViewer::ViewerBase::Threads &, threads, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getAllThreads__Threads_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getOperationThreads, IN, osgViewer::ViewerBase::OperationThreads &, threads, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getOperationThreads__OperationThreads_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getScenes, IN, osgViewer::ViewerBase::Scenes &, scenes, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getScenes__Scenes_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_Method1(void, setRealizeOperation, IN, osg::Operation *, op,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setRealizeOperation__osg_Operation_P1,
|
||||
"Set the graphics operation to call on realization of the viewers graphics windows. ",
|
||||
"");
|
||||
I_Method0(osg::Operation *, getRealizeOperation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_Operation_P1__getRealizeOperation,
|
||||
"Get the graphics operation to call on realization of the viewers graphics windows. ",
|
||||
"");
|
||||
I_Method0(void, setUpThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__setUpThreading,
|
||||
"Set up the threading and processor affinity as per the viewers threading model. ",
|
||||
"");
|
||||
I_Method0(bool, areThreadsRunning,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__areThreadsRunning,
|
||||
"Return true if viewer threads are running. ",
|
||||
"");
|
||||
I_Method0(void, stopThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__stopThreading,
|
||||
"Stop any threads begin run by viewer. ",
|
||||
"");
|
||||
I_Method0(void, startThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__startThreading,
|
||||
"Start any threads required by the viewer. ",
|
||||
"");
|
||||
I_Method1(void, getUsage, IN, osg::ApplicationUsage &, usage,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getUsage__osg_ApplicationUsage_R1,
|
||||
"Get the keyboard and mouse usage of this viewer. ",
|
||||
"");
|
||||
I_SimpleProperty(bool, Done,
|
||||
0,
|
||||
__void__setDone__bool);
|
||||
I_SimpleProperty(osgGA::EventVisitor *, EventVisitor,
|
||||
__osgGA_EventVisitor_P1__getEventVisitor,
|
||||
__void__setEventVisitor__osgGA_EventVisitor_P1);
|
||||
I_SimpleProperty(int, KeyEventSetsDone,
|
||||
__int__getKeyEventSetsDone,
|
||||
__void__setKeyEventSetsDone__int);
|
||||
I_SimpleProperty(bool, QuitEventSetsDone,
|
||||
__bool__getQuitEventSetsDone,
|
||||
__void__setQuitEventSetsDone__bool);
|
||||
I_SimpleProperty(osg::Operation *, RealizeOperation,
|
||||
__osg_Operation_P1__getRealizeOperation,
|
||||
__void__setRealizeOperation__osg_Operation_P1);
|
||||
I_SimpleProperty(osgViewer::ViewerBase::ThreadingModel, ThreadingModel,
|
||||
__ThreadingModel__getThreadingModel,
|
||||
__void__setThreadingModel__ThreadingModel);
|
||||
I_SimpleProperty(osg::OperationQueue *, UpdateOperations,
|
||||
__osg_OperationQueue_P1__getUpdateOperations,
|
||||
__void__setUpdateOperations__osg_OperationQueue_P1);
|
||||
I_SimpleProperty(osgUtil::UpdateVisitor *, UpdateVisitor,
|
||||
__osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
__void__setUpdateVisitor__osgUtil_UpdateVisitor_P1);
|
||||
END_REFLECTOR
|
||||
|
||||
BEGIN_VALUE_REFLECTOR(osg::ref_ptr< osgGA::GUIEventHandler >)
|
||||
I_DeclaringFile("osg/ref_ptr");
|
||||
I_Constructor0(____ref_ptr,
|
||||
@@ -675,13 +407,3 @@ END_REFLECTOR
|
||||
|
||||
STD_LIST_REFLECTOR(std::list< osg::ref_ptr< osgGA::GUIEventHandler > >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< OpenThreads::Thread * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osg::Camera * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osg::OperationThread * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osgViewer::GraphicsWindow * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osgViewer::Scene * >)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <osgViewer/GraphicsWindow>
|
||||
#include <osgViewer/View>
|
||||
#include <osgViewer/Viewer>
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
// Must undefine IN and OUT macros defined in Windows headers
|
||||
#ifdef IN
|
||||
@@ -211,6 +212,11 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::Viewer)
|
||||
__void__getScenes__Scenes_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true,
|
||||
Properties::VIRTUAL,
|
||||
__void__getViews__Views_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, setUpThreading,
|
||||
Properties::VIRTUAL,
|
||||
__void__setUpThreading,
|
||||
|
||||
329
src/osgWrappers/osgViewer/ViewerBase.cpp
Normal file
329
src/osgWrappers/osgViewer/ViewerBase.cpp
Normal file
@@ -0,0 +1,329 @@
|
||||
// ***************************************************************************
|
||||
//
|
||||
// Generated automatically by genwrapper.
|
||||
// Please DO NOT EDIT this file!
|
||||
//
|
||||
// ***************************************************************************
|
||||
|
||||
#include <osgIntrospection/ReflectionMacros>
|
||||
#include <osgIntrospection/TypedMethodInfo>
|
||||
#include <osgIntrospection/StaticMethodInfo>
|
||||
#include <osgIntrospection/Attributes>
|
||||
|
||||
#include <osg/ApplicationUsage>
|
||||
#include <osg/OperationThread>
|
||||
#include <osg/Stats>
|
||||
#include <osgGA/EventVisitor>
|
||||
#include <osgUtil/UpdateVisitor>
|
||||
#include <osgViewer/ViewerBase>
|
||||
|
||||
// Must undefine IN and OUT macros defined in Windows headers
|
||||
#ifdef IN
|
||||
#undef IN
|
||||
#endif
|
||||
#ifdef OUT
|
||||
#undef OUT
|
||||
#endif
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::Camera * >, osgViewer::ViewerBase::Cameras)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::GraphicsContext * >, osgViewer::ViewerBase::Contexts)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osgViewer::GraphicsWindow * >, osgViewer::ViewerBase::Windows)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< OpenThreads::Thread * >, osgViewer::ViewerBase::Threads)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osg::OperationThread * >, osgViewer::ViewerBase::OperationThreads)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osgViewer::Scene * >, osgViewer::ViewerBase::Scenes)
|
||||
|
||||
TYPE_NAME_ALIAS(std::vector< osgViewer::View * >, osgViewer::ViewerBase::Views)
|
||||
|
||||
BEGIN_ENUM_REFLECTOR(osgViewer::ViewerBase::ThreadingModel)
|
||||
I_DeclaringFile("osgViewer/ViewerBase");
|
||||
I_EnumLabel(osgViewer::ViewerBase::SingleThreaded);
|
||||
I_EnumLabel(osgViewer::ViewerBase::CullDrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::ThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::DrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext);
|
||||
I_EnumLabel(osgViewer::ViewerBase::ThreadPerCamera);
|
||||
I_EnumLabel(osgViewer::ViewerBase::AutomaticSelection);
|
||||
END_REFLECTOR
|
||||
|
||||
BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgViewer::ViewerBase)
|
||||
I_DeclaringFile("osgViewer/ViewerBase");
|
||||
I_VirtualBaseType(osg::Object);
|
||||
I_Constructor0(____ViewerBase,
|
||||
"",
|
||||
"");
|
||||
I_Constructor1(IN, const osgViewer::ViewerBase &, vb,
|
||||
Properties::NON_EXPLICIT,
|
||||
____ViewerBase__C5_ViewerBase_R1,
|
||||
"",
|
||||
"");
|
||||
I_Method1(void, setStats, IN, osg::Stats *, stats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setStats__osg_Stats_P1,
|
||||
"Set the Stats object used for collect various frame related timing and scene graph stats. ",
|
||||
"");
|
||||
I_Method0(osg::Stats *, getStats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_Stats_P1__getStats,
|
||||
"Get the Viewers Stats object. ",
|
||||
"");
|
||||
I_Method0(const osg::Stats *, getStats,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osg_Stats_P1__getStats,
|
||||
"Get the Viewers Stats object. ",
|
||||
"");
|
||||
I_Method1(bool, readConfiguration, IN, const std::string &, filename,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__bool__readConfiguration__C5_std_string_R1,
|
||||
"read the viewer configuration from a configuration file. ",
|
||||
"");
|
||||
I_Method0(bool, isRealized,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__bool__isRealized,
|
||||
"Get whether at least of one of this viewers windows are realized. ",
|
||||
"");
|
||||
I_Method0(void, realize,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__realize,
|
||||
"set up windows and associated threads. ",
|
||||
"");
|
||||
I_Method1(void, setThreadingModel, IN, osgViewer::ViewerBase::ThreadingModel, threadingModel,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__setThreadingModel__ThreadingModel,
|
||||
"Set the threading model the rendering traversals will use. ",
|
||||
"");
|
||||
I_Method0(osgViewer::ViewerBase::ThreadingModel, getThreadingModel,
|
||||
Properties::NON_VIRTUAL,
|
||||
__ThreadingModel__getThreadingModel,
|
||||
"Get the threading model the rendering traversals will use. ",
|
||||
"");
|
||||
I_Method1(void, setDone, IN, bool, done,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setDone__bool,
|
||||
"Set the done flag to singnal the viewer's work is done and should exit the frame loop. ",
|
||||
"");
|
||||
I_Method0(bool, done,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__done,
|
||||
"Reurn true if viewer's work is done and should exit the frame loop. ",
|
||||
"");
|
||||
I_Method1(void, setEventVisitor, IN, osgGA::EventVisitor *, eventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setEventVisitor__osgGA_EventVisitor_P1,
|
||||
"Set the EventVisitor. ",
|
||||
"");
|
||||
I_Method0(osgGA::EventVisitor *, getEventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osgGA_EventVisitor_P1__getEventVisitor,
|
||||
"Get the EventVisitor. ",
|
||||
"");
|
||||
I_Method0(const osgGA::EventVisitor *, getEventVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osgGA_EventVisitor_P1__getEventVisitor,
|
||||
"Get the const EventVisitor. ",
|
||||
"");
|
||||
I_Method1(void, setKeyEventSetsDone, IN, int, key,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setKeyEventSetsDone__int,
|
||||
"Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to signal end of viewers main loop. ",
|
||||
"Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). Setting to 0 switches off the feature. ");
|
||||
I_Method0(int, getKeyEventSetsDone,
|
||||
Properties::NON_VIRTUAL,
|
||||
__int__getKeyEventSetsDone,
|
||||
"get the key event that the viewer checks on each frame to see if the viewer's done flag. ",
|
||||
"");
|
||||
I_Method1(void, setQuitEventSetsDone, IN, bool, flag,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setQuitEventSetsDone__bool,
|
||||
"if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature ",
|
||||
"");
|
||||
I_Method0(bool, getQuitEventSetsDone,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__getQuitEventSetsDone,
|
||||
"",
|
||||
"true if the viewer respond to the QUIT_APPLICATION-event ");
|
||||
I_Method1(void, setUpdateVisitor, IN, osgUtil::UpdateVisitor *, updateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setUpdateVisitor__osgUtil_UpdateVisitor_P1,
|
||||
"Set the UpdateVisitor. ",
|
||||
"");
|
||||
I_Method0(osgUtil::UpdateVisitor *, getUpdateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
"Get the UpdateVisitor. ",
|
||||
"");
|
||||
I_Method0(const osgUtil::UpdateVisitor *, getUpdateVisitor,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
"Get the const UpdateVisitor. ",
|
||||
"");
|
||||
I_Method1(void, setUpdateOperations, IN, osg::OperationQueue *, operations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setUpdateOperations__osg_OperationQueue_P1,
|
||||
"Set the Update OperationQueue. ",
|
||||
"");
|
||||
I_Method0(osg::OperationQueue *, getUpdateOperations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_OperationQueue_P1__getUpdateOperations,
|
||||
"Get the Update OperationQueue. ",
|
||||
"");
|
||||
I_Method0(const osg::OperationQueue *, getUpdateOperations,
|
||||
Properties::NON_VIRTUAL,
|
||||
__C5_osg_OperationQueue_P1__getUpdateOperations,
|
||||
"Get the const Update OperationQueue. ",
|
||||
"");
|
||||
I_Method1(void, addUpdateOperation, IN, osg::Operation *, operation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__addUpdateOperation__osg_Operation_P1,
|
||||
"Add an update operation. ",
|
||||
"");
|
||||
I_Method1(void, removeUpdateOperation, IN, osg::Operation *, operation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__removeUpdateOperation__osg_Operation_P1,
|
||||
"Remove an update operation. ",
|
||||
"");
|
||||
I_Method0(int, run,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__int__run,
|
||||
"Execute a main frame loop. ",
|
||||
"Equivialant to while (!viewer.done()) viewer.frame(); Also calls realize() if the viewer is not already realized, and installs trackball manipulator if one is not already assigned. ");
|
||||
I_MethodWithDefaults1(void, frame, IN, double, simulationTime, USE_REFERENCE_TIME,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__frame__double,
|
||||
"Render a complete new frame. ",
|
||||
"Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). ");
|
||||
I_MethodWithDefaults1(void, advance, IN, double, simulationTime, USE_REFERENCE_TIME,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__advance__double,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, eventTraversal,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__eventTraversal,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, updateTraversal,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__updateTraversal,
|
||||
"",
|
||||
"");
|
||||
I_Method0(void, renderingTraversals,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__renderingTraversals,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getCameras, IN, osgViewer::ViewerBase::Cameras &, cameras, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getCameras__Cameras_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getContexts, IN, osgViewer::ViewerBase::Contexts &, contexts, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getContexts__Contexts_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getWindows, IN, osgViewer::ViewerBase::Windows &, windows, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getWindows__Windows_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getAllThreads, IN, osgViewer::ViewerBase::Threads &, threads, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getAllThreads__Threads_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getOperationThreads, IN, osgViewer::ViewerBase::OperationThreads &, threads, , IN, bool, onlyActive, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getOperationThreads__OperationThreads_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getScenes, IN, osgViewer::ViewerBase::Scenes &, scenes, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getScenes__Scenes_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getViews__Views_R1__bool,
|
||||
"",
|
||||
"");
|
||||
I_Method1(void, setRealizeOperation, IN, osg::Operation *, op,
|
||||
Properties::NON_VIRTUAL,
|
||||
__void__setRealizeOperation__osg_Operation_P1,
|
||||
"Set the graphics operation to call on realization of the viewers graphics windows. ",
|
||||
"");
|
||||
I_Method0(osg::Operation *, getRealizeOperation,
|
||||
Properties::NON_VIRTUAL,
|
||||
__osg_Operation_P1__getRealizeOperation,
|
||||
"Get the graphics operation to call on realization of the viewers graphics windows. ",
|
||||
"");
|
||||
I_Method0(void, setUpThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__setUpThreading,
|
||||
"Set up the threading and processor affinity as per the viewers threading model. ",
|
||||
"");
|
||||
I_Method0(bool, areThreadsRunning,
|
||||
Properties::NON_VIRTUAL,
|
||||
__bool__areThreadsRunning,
|
||||
"Return true if viewer threads are running. ",
|
||||
"");
|
||||
I_Method0(void, stopThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__stopThreading,
|
||||
"Stop any threads begin run by viewer. ",
|
||||
"");
|
||||
I_Method0(void, startThreading,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__startThreading,
|
||||
"Start any threads required by the viewer. ",
|
||||
"");
|
||||
I_Method1(void, getUsage, IN, osg::ApplicationUsage &, usage,
|
||||
Properties::PURE_VIRTUAL,
|
||||
__void__getUsage__osg_ApplicationUsage_R1,
|
||||
"Get the keyboard and mouse usage of this viewer. ",
|
||||
"");
|
||||
I_SimpleProperty(bool, Done,
|
||||
0,
|
||||
__void__setDone__bool);
|
||||
I_SimpleProperty(osgGA::EventVisitor *, EventVisitor,
|
||||
__osgGA_EventVisitor_P1__getEventVisitor,
|
||||
__void__setEventVisitor__osgGA_EventVisitor_P1);
|
||||
I_SimpleProperty(int, KeyEventSetsDone,
|
||||
__int__getKeyEventSetsDone,
|
||||
__void__setKeyEventSetsDone__int);
|
||||
I_SimpleProperty(bool, QuitEventSetsDone,
|
||||
__bool__getQuitEventSetsDone,
|
||||
__void__setQuitEventSetsDone__bool);
|
||||
I_SimpleProperty(osg::Operation *, RealizeOperation,
|
||||
__osg_Operation_P1__getRealizeOperation,
|
||||
__void__setRealizeOperation__osg_Operation_P1);
|
||||
I_SimpleProperty(osg::Stats *, Stats,
|
||||
__osg_Stats_P1__getStats,
|
||||
__void__setStats__osg_Stats_P1);
|
||||
I_SimpleProperty(osgViewer::ViewerBase::ThreadingModel, ThreadingModel,
|
||||
__ThreadingModel__getThreadingModel,
|
||||
__void__setThreadingModel__ThreadingModel);
|
||||
I_SimpleProperty(osg::OperationQueue *, UpdateOperations,
|
||||
__osg_OperationQueue_P1__getUpdateOperations,
|
||||
__void__setUpdateOperations__osg_OperationQueue_P1);
|
||||
I_SimpleProperty(osgUtil::UpdateVisitor *, UpdateVisitor,
|
||||
__osgUtil_UpdateVisitor_P1__getUpdateVisitor,
|
||||
__void__setUpdateVisitor__osgUtil_UpdateVisitor_P1);
|
||||
END_REFLECTOR
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< OpenThreads::Thread * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osg::Camera * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osg::OperationThread * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osgViewer::GraphicsWindow * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osgViewer::Scene * >)
|
||||
|
||||
STD_VECTOR_REFLECTOR(std::vector< osgViewer::View * >)
|
||||
|
||||
@@ -215,10 +215,10 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::StatsHandler)
|
||||
__void__getUsage__osg_ApplicationUsage_R1,
|
||||
"Get the keyboard and mouse usage of this manipulator. ",
|
||||
"");
|
||||
I_ProtectedMethod1(void, setUpHUDCamera, IN, osgViewer::View *, view,
|
||||
I_ProtectedMethod1(void, setUpHUDCamera, IN, osgViewer::ViewerBase *, viewer,
|
||||
Properties::NON_VIRTUAL,
|
||||
Properties::NON_CONST,
|
||||
__void__setUpHUDCamera__osgViewer_View_P1,
|
||||
__void__setUpHUDCamera__osgViewer_ViewerBase_P1,
|
||||
"",
|
||||
"");
|
||||
I_ProtectedMethod4(osg::Geometry *, createGeometry, IN, const osg::Vec3 &, pos, IN, float, height, IN, const osg::Vec4 &, colour, IN, unsigned int, numBlocks,
|
||||
@@ -245,10 +245,10 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::StatsHandler)
|
||||
__osg_Node_P1__createCameraStats__C5_std_string_R1__osg_Vec3_R1__float__bool__float__osg_Stats_P1__osg_Camera_P1,
|
||||
"",
|
||||
"");
|
||||
I_ProtectedMethod1(void, setUpScene, IN, osgViewer::View *, view,
|
||||
I_ProtectedMethod1(void, setUpScene, IN, osgViewer::ViewerBase *, viewer,
|
||||
Properties::NON_VIRTUAL,
|
||||
Properties::NON_CONST,
|
||||
__void__setUpScene__osgViewer_View_P1,
|
||||
__void__setUpScene__osgViewer_ViewerBase_P1,
|
||||
"",
|
||||
"");
|
||||
I_ProtectedMethod0(void, updateThreadingModelText,
|
||||
|
||||
Reference in New Issue
Block a user