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

Last change on this file since 88 was 88, checked in by Torben Dannhauer, 14 years ago

Moved memory leak detection from source file to headerfile. Its still in the class but at least not in the source file.

The leak detection works, but the false positives are not stopped.
Use Linux/Valgrind? to make your final leak detection beyond the easy first approach in MSVC

File size: 3.9 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
88
89namespace osgVisual
90{
91
92class visual_core : public osg::Referenced
93{
94        #include <leakDetection.h>
95
96public:
97        visual_core(osg::ArgumentParser& arguments_);
98        void initialize();
99        void shutdown();
100
101        void addManipulators();
102        bool loadTerrain(osg::ArgumentParser& arguments_);
103        bool checkCommandlineArgumentsForFinalErrors();
104
105        void setupScenery();
106       
107protected:
108        virtual ~visual_core(void);
109
110
111private:
112        void mainLoop();
113
114        /**
115         * Argument object, with contains all commandline arguments, which where called during programm sstartup
116         */ 
117        osg::ArgumentParser& arguments;
118
119        /**
120         * This CSN is at the top node on the complete scenery. Only the nodes for distortion are located above this node.
121         */ 
122        osg::ref_ptr<osg::CoordinateSystemNode> rootNode;
123
124        /**
125         * Reference pointer to the viewer instance. The viewer is the core of the graphical subsystem.
126         */ 
127        osg::ref_ptr<osgViewer::Viewer> viewer;
128
129#ifdef USE_SPACENAVIGATOR
130        /**
131         * Spacemouse node tracker manipulator
132         */ 
133        osg::ref_ptr<NodeTrackerSpaceMouse> mouseTrackerManip;
134
135        /**
136         * Space mouse hardware driver instance
137         */ 
138        SpaceMouse* mouse;
139#endif
140
141        /**
142         * This Matrix manipulator is used for controlling Camera by Nodes.
143         */ 
144        osg::ref_ptr<objectMountedManipulator> objectMountedCameraManip;
145
146
147#ifdef USE_SKY_SILVERLINING
148        /**
149         * Silverlining Sky instance
150         */ 
151        osg::ref_ptr<visual_skySilverLining> sky;
152#endif
153
154#ifdef USE_DISTORTION
155        /**
156         * Distortion instance.
157         */ 
158        osg::ref_ptr<visual_distortion> distortion;
159#endif
160
161        osg::ref_ptr<visual_object> testObj;
162
163        osg::ref_ptr<osgGA::NodeTrackerManipulator> nt;
164
165        osg::ref_ptr<visual_debug_hud> hud;
166};
167
168}       // END NAMESPACE
Note: See TracBrowser for help on using the repository browser.