Umasoft
Main Page
Modules
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
Pages
TerrainSDK
vtlib
core
TerrainScene.h
1
//
2
// TerrainScene.h
3
//
4
// Copyright (c) 2001-2006 Virtual Terrain Project
5
// Free for all uses, see license.txt for details.
6
//
7
8
#ifndef TERRAINSCENEH
9
#define TERRAINSCENEH
10
11
#include "
vtdata/FilePath.h
"
12
#include "TimeEngines.h"
13
#include "Content3d.h"
14
15
// Forward references
16
class
vtSkyDome
;
17
class
vtTerrain
;
18
class
vtTimeEngine
;
19
class
vtSkyTrackEngine
;
20
25
class
vtUtilStruct
26
{
27
public
:
28
vtUtilStruct
()
29
{
30
m_pTower = NULL;
31
m_iNumWires = 0;
32
}
33
34
osg::Node *m_pTower;
// The station may have a tower placed on it
35
vtString
m_sStructName;
36
37
// The points at which the wires attach
38
FLine3
m_fpWireAtt1;
39
FLine3
m_fpWireAtt2;
40
41
int
m_iNumWires;
42
};
43
50
59
class
vtTerrainScene
:
public
vtTimeTarget
60
{
61
public
:
62
vtTerrainScene
();
63
virtual
~
vtTerrainScene
();
64
65
// scene setup
66
vtGroup
*
BeginTerrainScene
();
67
void
AppendTerrain
(
vtTerrain
*pTerrain);
68
void
Finish(
const
vtStringArray &datapath) {}
// dummy; obsolete method
69
void
SetCurrentTerrain
(
vtTerrain
*pTerrain);
70
vtGroup
*
BuildTerrain
(
vtTerrain
*pTerrain);
71
void
RemoveTerrain(
vtTerrain
*pTerrain);
72
void
CleanupScene();
73
74
vtGroup
*GetTop() {
return
m_pTop; }
75
vtSkyDome
*GetSkyDome() {
return
m_pSkyDome; }
76
void
UpdateSkydomeForTerrain(
vtTerrain
*pTerrain);
77
79
uint
NumTerrains
() {
return
m_Terrains.size(); }
80
vtTerrain
*GetTerrain(uint i) {
return
m_Terrains[i]; }
81
83
vtTerrain
*
GetCurrentTerrain
() {
return
m_pCurrentTerrain; }
84
86
vtTerrain
*
FindTerrainByName
(
const
char
*name);
87
vtTimeEngine
*GetTimeEngine() {
return
m_pTimeEngine; }
88
90
vtTransform
*
GetSunLightTransform
() {
return
m_pSunLight; }
91
vtLightSource
*GetSunLightSource() {
return
m_pLightSource; }
92
93
void
SetTime(
const
vtTime
&time);
94
95
// utility structures, shared between all terrains
96
vtUtilStruct
*LoadUtilStructure(
const
vtString
&name);
97
float
m_fCatenaryFactor;
98
99
// Statics
100
// handle to the singleton
101
static
vtTerrainScene
*s_pTerrainScene;
102
103
// Global content manager for content shared between all terrains
104
vtContentManager3d
m_Content;
105
106
virtual
bool
OnMouse(
vtMouseEvent
&
event
) {
return
false
; }
107
108
protected
:
109
// main scene graph outline
110
vtGroupPtr m_pTop;
111
vtSkyDome
*m_pSkyDome;
112
113
void
_CreateSky();
114
void
_CreateEngines();
115
116
vtGroup
*m_pAtmosphereGroup;
117
118
// array of terrain objects
119
std::vector<vtTerrain*> m_Terrains;
120
121
// the terrain that is currently active
122
vtTerrain
*m_pCurrentTerrain;
123
124
// engines
125
vtEngine
*m_pTerrainEngines;
126
vtTimeEngine
*m_pTimeEngine;
127
vtSkyTrackEngine
*m_pSkyTrack;
128
129
// Utility structures, created on demand from global content file
130
vtArray<vtUtilStruct*>
m_StructObjs;
131
132
vtLightSource
*m_pLightSource;
133
vtTransform
*m_pSunLight;
134
};
135
136
// global helper function
137
vtTerrainScene
*vtGetTS();
138
vtContentManager3d
&vtGetContent();
139
// Group terrain
141
142
#endif // TERRAINSCENEH
143
Generated on Fri Jun 7 2013 16:07:53 for Umasoft by
1.8.4