#pragma once #include <osg/Switch> #include <osg/TextureCubeMap> #include <osgText/Text> #include <osgEarth/ModelNode> #include <osgEarth/Sky> #include <osgEarth/LogarithmicDepthBuffer> //#include "scene/SkyDome.h" #include "common/SpdLogger.h" #include "config.h" class OsgView; class OEScene : public osg::Referenced { public: OEScene(); void InitEventHandle(OsgView* view); void AttachView(OsgView* view); void DetachView(OsgView* view); osg::ref_ptr<osg::TextureCubeMap> LoadCubeMapTextures(const std::string& dir); inline osg::Vec4f IntColor(unsigned r, unsigned g, unsigned b, unsigned a = 255) { float div = 1.f / 255.f; return osg::Vec4f(div * (float)r, div * (float)g, div * float(b), div * (float)a); } osg::Group* GetData(); inline osg::Group* GetScene(void) { return earthMapNode_.get(); } osgEarth::MapNode* GetMapNode(void) const { dyt_check(earthMapNode_.valid()); return earthMapNode_; } void AddToScene(osg::Node* node); private: osg::ref_ptr<osg::Node> earthRootNode_; osg::ref_ptr<osgEarth::MapNode> earthMapNode_; osg::ref_ptr<osg::Group> entityRoot_; osg::ref_ptr<osgEarth::SkyNode> skyDome_; std::unique_ptr<osgEarth::Util::LogarithmicDepthBuffer> logarithmicDepthBuffer_; };