VR-Forces 4.1 Class Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Behavior Models
File List
File Members
include
vantageTerrainImplementation
vantageTerrainImplementation.h
Go to the documentation of this file.
1
/*******************************************************************************
2
** Copyright 2010 VT MAK
3
*******************************************************************************/
4
7
9
10
#pragma once
11
12
#include <BulletCollision/CollisionShapes/btTriangleCallback.h>
13
#include <
vantageTerrainImplementation/vantageTerrainImplementationDefines.h
>
14
#include <
terrainInterface/terrainImplementation.h
>
15
#include <
terrainInterface/terrainCapabilities.h
>
16
17
#include <vlutil/vlFilename.h>
18
#include <tbb/tbb_thread.h>
19
#include <tbb/mutex.h>
20
#include "LinearMath/btTransform.h"
21
#include "LinearMath/btMatrix3x3.h"
22
#include "
osgToBullet.h
"
23
24
#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
25
26
class
DtSharedMemoryBulletDebugDrawer
;
27
class
DtConsoleCommandOwner
;
28
class
DtActivePageTracker
;
29
class
DtCollisionWorld
;
30
class
DtVantageTerrainEngine
;
31
class
DtPreloadCommandManager
;
32
class
DtVantageTerrainImplementationCreator
;
33
class
DtTerrainConfigurationOptions
;
34
35
struct
DtPagingMetaData
;
36
namespace
makArchives
37
{
38
class
DtGenericTerrainRecord;
39
}
40
44
class
DT_DLL_vantageTerrainImplementation
DtVantageTerrainImplementation
:
45
public
DtTerrainImplementation
46
{
47
public
:
48
49
DtVantageTerrainImplementation
(
DtConsoleCommandManager
* cmdMgr);
50
virtual
~
DtVantageTerrainImplementation
();
51
54
virtual
bool
loadTerrain
(
const
makArchives::DtGenericTerrainRecord
& record,
55
MAKVRinTerra::DtFeatureLoader
&,
56
const
TerrainSettings
& settings =
TerrainSettings
());
57
58
virtual
const
Coordinate_System
*
coordinateSystem
()
const
;
59
60
virtual
bool
chordIntersect
(
const
DtChord
& chord,
61
DtChordIntersectionRecord
& record,
62
DtIntersectionRecord::DtIntersectionType
irtFlag =
DtIntersectionRecord::INT_ALL_DATA
,
63
bool
* dataAvailable = 0,
bool
overrideBlockingAssert =
false
)
const
;
64
65
virtual
bool
allIntersectsAlongChord
(
const
DtChord
& chord,
66
DtChordIntersectRecordList
& intList,
67
DtIntersectionRecord::DtIntersectionType
irtFlag =
DtIntersectionRecord::INT_ALL_DATA
,
68
bool
* dataAvailable = 0,
bool
overrideBlockingAssert =
false
)
const
;
69
70
virtual
bool
sphereIntersect
(
const
DtSphere
& sphere,
DtSphereIntersectionRecord
& record,
71
DtIntersectionRecord::DtIntersectionType
irtFlag =
DtIntersectionRecord::INT_ALL_DATA
,
72
bool
* dataAvailable = 0,
bool
overrideBlockingAssert =
false
)
const
;
73
74
virtual
void
preloadTerrainAreas
(
const
DtTerrainPagingGeometryList
& preloadGeometry);
75
76
virtual
const
DtTerrainCapabilities
*
terrainCapabilities
()
const
;
77
78
static
DtTerrainImplementation
* create(
DtConsoleCommandManager
* cmdMgr);
79
85
virtual
void
loadData(
DtPagingMetaDataPtr
metaData,
86
DtTerrainPagingGeometryPtr
geometry,
bool
* dataAvailable,
87
bool
overrideBlockingAssert =
false
)
const
;
88
89
virtual
const
unsigned
int
lastIntersectId
()
const
{
return
myLastIntersectId; };
90
91
virtual
void
loadConfigurationFile(
const
DtFilename& filename);
92
93
virtual
const
DtTerrainConfigurationOptions
* configurationOptions()
const
;
94
95
virtual
DtPagingMetaDataPtr
createMetaData(
bool
* dataAvailable,
96
int
intersectId)
const
;
97
98
virtual
void
setIntersectDataLoadExpireTime
(
const
double
& expireTime);
99
virtual
void
expireDataLoadRequestsBeforeTime
(
const
double
& currentTime);
100
101
virtual
void
processTrianglesInArea
(
DtTriangleCallbackFcn
func,
DtTriangleCallbackFinalizeFcn
finalize,
DtTerrainProcessPolygonsBox
& box,
void
* usr)
const
;
102
103
static
DtVantageTerrainImplementationCreator
* creator();
104
void
forceTerrainPagingInBox(
DtTerrainProcessPolygonsBox
& box )
const
;
105
106
virtual
void
breakUpChords
(
const
MAKVRinTerra::DtProj
&,
const
DtChord
& chord,
107
std::vector<DtChord>& chords);
108
109
protected
:
110
Coordinate_System
*
myCoordinateSystem
;
111
DtSharedMemoryBulletDebugDrawer
*
myBulletDebugDrawer
;
112
mutable
unsigned
int
myLastIntersectId
;
113
DtActivePageTracker
*
myActivePageTracker
;
114
DtCollisionWorld
*
myCollisionWorld
;
115
DtVantageTerrainEngine
*
myVantageTerrainEngine
;
116
DtConsoleCommandOwner
*
myCommandOwner
;
117
118
DtTerrainCapabilities
myCapabilities
;
119
120
DtTerrainConfigurationOptions
*
myTerrainOptions
;
121
DtFilename
myTerrainOptionsFilename
;
122
123
DtPreloadCommandManager
*
myPreloadCommandManager
;
124
125
double
myIntersectDataLoadExpireTime
;
126
127
bool
myThreadShutdown
;
128
tbb::tbb_thread*
myPreloadCommandThread
;
129
mutable
tbb::mutex
myShutdownMutex
;
130
};
131
132
class
DT_DLL_vantageTerrainImplementation
DtBulletTriangleCallback
:
public
btTriangleCallback
133
{
134
public
:
135
DtBulletTriangleCallback
(
DtTerrainProcessPolygonsBox
* box);
136
virtual
~
DtBulletTriangleCallback
();
137
virtual
void
processTriangle(btVector3* triangle,
int
partId,
int
triangleIndex);
138
virtual
void
setTransform(btTransform* transform);
139
virtual
void
setMesh(
const
DtTriangleMeshWithSoil
* mesh);
140
void
setVrfTriangleCallback(
DtTriangleCallbackFcn
func,
void
* usr );
141
protected
:
142
btTransform*
myTransform
;
143
DtTerrainProcessPolygonsBox
*
myBox
;
144
const
DtTriangleMeshWithSoil
*
myMesh
;
145
DtTriangleCallbackFcn
myVrfTriangleCallbackFunc
;
146
void
*
myVrfUsr
;
147
};
Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (
www.mak.com
)