abd0c7fe67
returned from Viewer::getContexts/getWindows will be the left most window on the lowest screen number. Added ability for StatsHandler and HelpHandler to support end users setting their Camera's graphics context.
96 lines
3.4 KiB
C++
96 lines
3.4 KiB
C++
/* -*-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_STATSHANDLER
|
|
#define OSGVIEWER_STATSHANDLER 1
|
|
|
|
#include <osgViewer/Viewer>
|
|
#include <osgText/Text>
|
|
#include <osg/Geometry>
|
|
|
|
namespace osgViewer {
|
|
|
|
class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler
|
|
{
|
|
public:
|
|
|
|
StatsHandler();
|
|
|
|
enum StatsType
|
|
{
|
|
NO_STATS = 0,
|
|
FRAME_RATE = 1,
|
|
VIEWER_STATS = 2,
|
|
SCENE_STATS = 3,
|
|
LAST = 4
|
|
};
|
|
|
|
void setKeyEventTogglesOnScreenStats(int key) { _keyEventTogglesOnScreenStats = key; }
|
|
int getKeyEventTogglesOnScreenStats() const { return _keyEventTogglesOnScreenStats; }
|
|
|
|
void setKeyEventPrintsOutStats(int key) { _keyEventPrintsOutStats = key; }
|
|
int getKeyEventPrintsOutStats() const { return _keyEventPrintsOutStats; }
|
|
|
|
double getBlockMultiplier() const { return _blockMultiplier; }
|
|
|
|
void reset();
|
|
|
|
osg::Camera* getCamera() { return _camera.get(); }
|
|
const osg::Camera* getCamera() const { return _camera.get(); }
|
|
|
|
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa);
|
|
|
|
/** Get the keyboard and mouse usage of this manipulator.*/
|
|
virtual void getUsage(osg::ApplicationUsage& usage) const;
|
|
|
|
protected:
|
|
|
|
void setUpHUDCamera(osgViewer::Viewer* viewer);
|
|
|
|
osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks);
|
|
|
|
osg::Geometry* createFrameMarkers(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks);
|
|
|
|
osg::Geometry* createTick(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numTicks);
|
|
|
|
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::Viewer* viewer);
|
|
|
|
void updateThreadingModelText();
|
|
|
|
int _keyEventTogglesOnScreenStats;
|
|
int _keyEventPrintsOutStats;
|
|
|
|
int _statsType;
|
|
|
|
bool _initialized;
|
|
osg::ref_ptr<osg::Camera> _camera;
|
|
|
|
osg::ref_ptr<osg::Switch> _switch;
|
|
|
|
osgViewer::Viewer::ThreadingModel _threadingModel;
|
|
osg::ref_ptr<osgText::Text> _threadingModelText;
|
|
|
|
unsigned int _frameRateChildNum;
|
|
unsigned int _viewerChildNum;
|
|
unsigned int _sceneChildNum;
|
|
unsigned int _numBlocks;
|
|
double _blockMultiplier;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|