1 #pragma once
2 
3 #include <osgViewer/Viewer>
4 #include <osgViewer/ViewerEventHandlers>
5 #include <osgViewer/api/win32/GraphicsWindowWin32>
6 #include <osgGA/TrackballManipulator>
7 #include <osgGA/KeySwitchMatrixManipulator>
8 #include <osgDB/DatabasePager>
9 #include <osgDB/Registry>
10 #include <osgDB/ReadFile>
11 #include <osgUtil/Optimizer>
12 #include <string>
13 
14 class cOSG
15 {
16 public:
17     cOSG(HWND hWnd);
18     ~cOSG();
19 
20     void InitOSG(std::string filename);
21     void InitManipulators(void);
22     void InitSceneGraph(void);
23     void InitCameraConfig(void);
24     void SetupWindow(void);
25     void SetupCamera(void);
26     void PreFrameUpdate(void);
27     void PostFrameUpdate(void);
Done(bool value)28     void Done(bool value) { mDone = value; }
Done(void)29     bool Done(void) { return mDone; }
30     //static void Render(void* ptr);
31 
getViewer()32     osgViewer::Viewer* getViewer() { return mViewer; }
33 
34 private:
35     bool mDone;
36     std::string m_ModelName;
37     HWND m_hWnd;
38     osgViewer::Viewer* mViewer;
39     osg::ref_ptr<osg::Group> mRoot;
40     osg::ref_ptr<osg::Node> mModel;
41     osg::ref_ptr<osgGA::TrackballManipulator> trackball;
42     osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator;
43 };
44 
45 class CRenderingThread : public OpenThreads::Thread
46 {
47 public:
48     CRenderingThread( cOSG* ptr );
49     virtual ~CRenderingThread();
50 
51     virtual void run();
52 
53 protected:
54     cOSG* _ptr;
55     bool _done;
56 };
57