Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include <osg/PositionAttitudeTransform>
00017
00018 class TextHUD : public osg::Referenced
00019 {
00020 private:
00021 osg::ref_ptr<osg::Camera> _camera;
00022 osg::ref_ptr<osgText::Text> _modeText;
00023 osg::ref_ptr<osgText::Text> _cameraModeText;
00024
00025 public:
00026 TextHUD(void)
00027 {
00028 _camera = createCamera();
00029 _camera->addChild(createText());
00030 }
00031
00032 osg::Camera* createCamera(void)
00033 {
00034 osg::ref_ptr<osg::Camera> camera = new osg::Camera;
00035
00036 camera->setViewport(0, 0, 1024, 768);
00037 camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
00038 camera->setProjectionMatrixAsOrtho2D(0, 1024, 0, 768);
00039 camera->setRenderOrder(osg::Camera::POST_RENDER);
00040 camera->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
00041 camera->setClearMask(GL_DEPTH_BUFFER_BIT);
00042
00043
00044 return camera.release();
00045 }
00046
00047 osg::Node* createText(void)
00048 {
00049 osg::Geode* textGeode = new osg::Geode;
00050
00051 osgText::Text* title = new osgText::Text;
00052
00053 title->setCharacterSize(24);
00054 title->setLineSpacing(0.4f);
00055
00056 std::string versionText = std::string("\nPress 'h' for options");
00057
00058 title->setText(versionText);
00059 textGeode->addDrawable(title);
00060
00061 _modeText = new osgText::Text;
00062
00063 _modeText->setCharacterSize(24);
00064 _modeText->setPosition(osg::Vec3f(0.f, -40.f, 0.f));
00065 _modeText->setDataVariance(osg::Object::DYNAMIC);
00066 textGeode->addDrawable(_modeText.get());
00067
00068 _cameraModeText = new osgText::Text;
00069
00070 _cameraModeText->setCharacterSize(24);
00071 _cameraModeText->setPosition(osg::Vec3f(0.f, -60.f, 0.f));
00072 _cameraModeText->setDataVariance(osg::Object::DYNAMIC);
00073
00074
00075 osg::PositionAttitudeTransform* titlePAT = new osg::PositionAttitudeTransform;
00076 titlePAT->setPosition(osg::Vec3f(10, 70, 0.f));
00077
00078
00079 return titlePAT;
00080 }
00081
00082 void setSceneText(const std::string& preset)
00083 {
00084 _modeText->setText("\nWeather: " + preset + "\n");
00085 }
00086
00087 void setCameraText(const std::string& mode)
00088 {
00089 _cameraModeText->setText("Camera: " + mode);
00090 }
00091
00092 osg::Camera* getHudCamera(void)
00093 {
00094 return _camera.get();
00095 }
00096 };