VR-Vantage 3.0 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
vrvGraphicsUtils
DtLight.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 2021 MAK Technologies, Inc.
3
** All rights reserved.
4
******************************************************************************/
5
9
#pragma once
10
11
#pragma warning( push )
12
#pragma warning( disable : 4251 )
13
14
#include <
vrvGraphicsUtils/DtColorValue.h
>
15
#include <
vrvGraphicsUtils/DtVector3.h
>
16
#include <
vrvGraphicsUtils/DtAxisAlignedBoundingBox.h
>
17
#include <
vrvGraphicsUtils/DtUserObjectBindings.h
>
18
#include <
vrvGraphicsUtils/DtMath.h
>
19
#include <
vrvGraphicsUtils/DtForwardDeclare.h
>
20
#include <
vrvGraphicsUtils/DtReusableMemoryVector.h
>
21
FORWARD_DECLARE_DIFFERENT_SUFFIX
(DtLight, Light)
22
23
#include <array>
24
25
namespace
makVrv
26
{
27
class
DtLight;
28
class
DtLightManager;
29
30
enum
LightType
31
{
32
LT_DIRECTIONAL
= 0
33
,
LT_POINT
= 1
34
,
LT_SPOTLIGHT
= 2
35
};
36
37
enum
LightGroup
38
{
39
LG_UNKNOWN
= 0
40
,
LG_PROPS
= 1
41
,
LG_TERRAIN
= 2
42
};
43
48
class
DT_DLL_VRVGRAPHICSUTILS
DtLight
49
{
50
public
:
52
DtLight
(
DtLightManager
* lightManager);
53
55
virtual
~
DtLight
();
56
58
DtLight
& operator=(
const
DtLight
& rhs);
59
60
private
:
62
DtLight
() =
delete
;
63
65
DtLight
(
const
DtLight
& rhs) =
delete
;
66
67
public
:
69
70
virtual
void
setOn(
bool
bOn);
71
virtual
bool
isOn(
void
)
const
;
73
75
76
77
78
79
80
virtual
void
setLightType(
LightType
lightType);
81
virtual
LightType
lightType(
void
)
const
;
83
85
86
87
88
89
virtual
void
setSensorMask(
unsigned
int
sensorMask);
90
virtual
unsigned
int
sensorMask()
const
;
92
93
95
96
virtual
void
setAmbientColor(
const
DtColorValue
&
color
);
97
virtual
void
setDiffuseColor(
const
DtColorValue
& color);
98
virtual
void
setSpecularColor(
const
DtColorValue
& color);
100
102
103
virtual
const
DtColorValue
& ambientColor(
void
)
const
;
104
virtual
const
DtColorValue
& diffuseColor(
void
)
const
;
105
virtual
const
DtColorValue
& specularColor(
void
)
const
;
107
109
virtual
void
setPosition(
const
Vector3_64
& vPosition);
110
virtual
const
Vector3_64
& position(
void
)
const
;
111
113
virtual
void
setDirection(
const
Vector3_64
& vDirection);
114
virtual
const
Vector3_64
& direction(
void
)
const
;
115
117
118
virtual
void
setRange(
float32
fRange);
119
virtual
float32
range
(
void
)
const
;
120
virtual
float32
squaredRange(
void
)
const
;
122
124
125
virtual
void
setAttenuation(
float32
fConstant,
float32
fLinear,
float32
fQuadratic);
126
127
virtual
float32
constantAttenuation(
void
)
const
;
128
virtual
float32
linearAttenuation(
void
)
const
;
129
virtual
float32
quadraticAttenuation(
void
)
const
;
130
131
virtual
void
getAttenuation(
float32
attenuations[3])
const
;
133
134
136
137
virtual
void
setSpotLightParameters(
const
DtDegrees
& fInnerAngleDegrees
138
,
const
DtDegrees
& fOuterAngleDegrees
139
,
float32
fFalloff);
140
141
virtual
void
setSpotLightAngles(
const
DtDegrees
& fInnerAngleDegrees,
const
DtDegrees
& fOuterAngleDegrees);
142
virtual
void
spotLightAngles(
DtDegrees
& fInnerAngleDegrees,
DtDegrees
& fOuterAngleDegrees);
143
144
virtual
DtDegrees
innerAngle(
void
)
const
;
145
virtual
DtDegrees
outerAngle(
void
)
const
;
146
virtual
float32
falloff(
void
)
const
;
148
150
151
virtual
DtUserObjectBindings
& userObjectBindings(
void
);
152
virtual
const
DtUserObjectBindings
& userObjectBindings(
void
)
const
;
154
156
157
virtual
void
setOctreeNode(
void
* pUserData);
158
virtual
void
* octreeNode()
const
;
160
162
virtual
LightGroup
lightGroup()
const
;
163
165
virtual
void
setLightGroup(
LightGroup
group
);
166
168
virtual
const
AxisAlignedBoundingBox_64
& worldAABB(
void
)
const
;
169
171
virtual
bool
isInitted()
const
;
172
175
virtual
void
setLightSourceTypeId(
unsigned
int
lightSourceTypeId);
176
178
virtual
unsigned
int
lightSourceTypeId()
const
;
179
181
virtual
void
printDetails(
void
)
const
;
182
184
virtual
void
setUserValue(
float64
val
);
185
187
virtual
float64
userValue(
void
)
const
;
188
189
public
:
190
static
const
std::string
& reservedBindingKey(
void
);
191
192
193
protected
:
194
friend
class
DtLightScreenSpaceData
;
195
197
virtual
void
getArbitraryBasisVectors(
Vector3_64
& vBasis0,
Vector3_64
& vBasis1)
const
;
199
virtual
void
getArbitraryBasisPoints(
float
distance
, std::array<Vector3_64, 4>& point)
const
;
201
virtual
float
getAngleFactor()
const
;
202
204
virtual
Vector3_64
getSpotCenter()
const
;
205
207
virtual
void
UpdateBounds(
void
);
208
209
protected
:
210
211
LightType
myLightType
;
212
213
unsigned
int
mySensorMask
;
//bit 0 is visual, bit 1 is NVG, bit 2 is MWIR, bit 3 is LWIR
214
215
DtColorValue
myAmbientColor
;
216
DtColorValue
myDiffuseColor
;
217
DtColorValue
mySpecularColor
;
218
220
Vector3_64
myVecPosition
;
222
Vector3_64
myVecDirection
;
223
224
float32
myfRange
;
225
float32
myfSquaredRange
;
226
227
float32
myfConstantAttenuation
;
228
float32
myfLinearAttenuation
;
229
float32
myfQuadraticAttenuation
;
230
232
DtDegrees
myfInnerAngle
;
234
DtDegrees
myfOuterAngle
;
236
float32
myfFallOff
;
237
238
bool
mybIsOn
;
240
bool
mybIsInitted
;
241
DtUserObjectBindings
myUserObjectBindings
;
242
void
*
myOctreeNode
;
243
244
AxisAlignedBoundingBox_64
myWorldAABB
;
245
249
LightGroup
myLightGroup
;
250
DtLightManager
*
myLightManager
;
251
252
unsigned
int
myLightSourceTypeId
;
253
254
float64
myUserValue
;
255
256
static
const
std::string
theStrReservedBinding
;
257
};
258
259
// initializer for a light pointer
260
struct
DtLightPointerInitializer
261
{
262
public
:
263
void
operator()
(
DtLight
*& light)
264
{
265
light =
nullptr
;
266
}
267
};
268
269
// a reusable vector of DtLight pointers
270
typedef
DtReusableMemoryVector<DtLight*, DtLightPointerInitializer>
LightReusableVector
;
271
272
}
//namespace makVrv
273
274
#pragma warning( pop )
Copyright © 2005-2022 MAK Technologies. All Rights Reserved (
www.mak.com
)