source: osgVisual/include/core/visual_core.h @ 40

Last change on this file since 40 was 32, checked in by Torben Dannhauer, 15 years ago

Adding first version of osgVisual!!

File size: 3.8 KB
Line 
1#pragma once
2/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
3 *
4 * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under
5 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
6 * (at your option) any later version.  The full license is in LICENSE file
7 * included with this distribution, and on the openscenegraph.org website.
8 *
9 * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
10 * You have to aquire licenses for all used proprietary modules.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * OpenSceneGraph Public License for more details.
16*/
17
18#include <osg/Referenced>
19#include <osg/notify>
20
21#include <osgViewer/Viewer>
22
23#include <osgDB/ReadFile>
24
25// OSG eventhandler
26#include <osgViewer/ViewerEventHandlers>
27
28// OSG manipulator
29#include <osgGA/TrackballManipulator>
30#include <osgGA/FlightManipulator>
31#include <osgGA/DriveManipulator>
32#include <osgGA/KeySwitchMatrixManipulator>
33#include <osgGA/StateSetManipulator>
34#include <osgGA/AnimationPathManipulator>
35#include <osgGA/TerrainManipulator>
36#include <osgGA/NodeTrackerManipulator>
37
38// Spacenavigator manipulator
39#ifdef USE_SPACENAVIGATOR
40#include <manip_spaceMouse.h>
41#include <manip_nodeTrackerSpaceMouse.h>
42#include <manip_freeSpaceMouse.h>
43#endif
44
45// Object mounted manipulator
46#include <manip_objectMounted.h>
47
48#ifdef USE_DISTORTION
49// Distortion
50#include <visual_distortion.h>
51#endif
52
53#ifdef USE_SKY_SILVERLINING
54// Sky
55#include <visual_skySilverlining.h>
56#endif
57
58// DataIO
59#include <visual_dataIO.h>
60#include <object_updater.h>
61
62// visual_object
63#include <visual_object.h>
64
65// visual_hud
66#include <visual_hud.h>
67#include <visual_debug_hud.h>
68
69// visual_draw2D
70#include <visual_draw2D.h>
71#include <visual_draw3D.h>
72
73// visual util
74#include <visual_util.h>
75
76// visual_vista2D
77#ifdef USE_VISTA2D
78#include <visual_vista2D.h>
79#endif
80
81// Test
82#include <dataIO_transportContainer.h>
83#include <osgDB/OutputStream>
84#include <iostream>
85
86
87
88namespace osgVisual
89{
90
91class visual_core : public osg::Referenced
92{
93public:
94        visual_core(osg::ArgumentParser& arguments_);
95        void initialize();
96        void shutdown();
97
98        void addManipulators();
99        void processCommandlineArguments();
100        bool loadTerrain(osg::ArgumentParser& arguments_);
101        bool checkCommandlineArgumentsForFinalErrors();
102
103        void setupScenery();
104       
105protected:
106        virtual ~visual_core(void);
107
108
109private:
110        void mainLoop();
111
112        /**
113         * Argument object, with contains all commandline arguments, which where called during programm sstartup
114         */ 
115        osg::ArgumentParser& arguments;
116
117        /**
118         * This CSN is at the top node on the complete scenery. Only the nodes for distortion are located above this node.
119         */ 
120        osg::ref_ptr<osg::CoordinateSystemNode> rootNode;
121
122        /**
123         * Reference pointer to the viewer instance. The viewer is the core of the graphical subsystem.
124         */ 
125        osg::ref_ptr<osgViewer::Viewer> viewer;
126
127#ifdef USE_SPACENAVIGATOR
128        /**
129         * Spacemouse node tracker manipulator
130         */ 
131        osg::ref_ptr<NodeTrackerSpaceMouse> mouseTrackerManip;
132#endif
133
134        /**
135         * This Matrix manipulator is used for controlling Camera by Nodes.
136         */ 
137        osg::ref_ptr<objectMountedManipulator> objectMountedCameraManip;
138
139        /**
140         * Space mouse hardware driver instance
141         */ 
142        SpaceMouse* mouse;
143
144#ifdef USE_SKY_SILVERLINING
145        /**
146         * Silverlining Sky instance
147         */ 
148        osg::ref_ptr<visual_skySilverLining> sky;
149#endif
150
151#ifdef USE_DISTORTION
152        /**
153         * Distortion instance.
154         */ 
155        osg::ref_ptr<visual_distortion> distortion;
156#endif
157
158        osg::ref_ptr<visual_object> testObj;
159
160        osg::ref_ptr<osgGA::NodeTrackerManipulator> nt;
161};
162
163}       // END NAMESPACE
Note: See TracBrowser for help on using the repository browser.