VR-Vantage 2.7 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
include
vrvGraphicsUtils
DtLight.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 2020 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/DtVectorForwardDeclare.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 <vrvUtil/signalslib.h>
24
25
#include <array>
26
27
namespace
makVrv
28
{
29
class
DtLight;
30
class
DtLightManager
;
31
32
typedef
boost::signalslib::signal< void(const DtLight*) >
LightSignal
;
33
34
enum
LightType
35
{
36
LT_DIRECTIONAL
= 0
37
,
LT_POINT
= 1
38
,
LT_SPOTLIGHT
= 2
39
};
40
41
enum
LightGroup
42
{
43
LG_UNKNOWN
= 0
44
,
LG_PROPS
= 1
45
,
LG_TERRAIN
= 2
46
};
47
52
class
DT_DLL_VRVGRAPHICSUTILS
DtLight
53
{
54
public
:
56
DtLight
(
DtLightManager
* lightManager);
57
59
virtual
~
DtLight
();
60
62
DtLight
& operator=(
const
DtLight
& rhs);
63
64
private
:
66
DtLight
() =
delete
;
67
69
DtLight
(
const
DtLight
& rhs) =
delete
;
70
71
public
:
73
74
virtual
void
setOn(
bool
bOn);
75
virtual
bool
isOn(
void
)
const
;
77
79
80
81
82
83
84
virtual
void
setLightType(
LightType
lightType);
85
virtual
LightType
lightType(
void
)
const
;
87
89
90
virtual
void
setAmbientColor(
const
DtColorValue
&
color
);
91
virtual
void
setDiffuseColor(
const
DtColorValue
& color);
92
virtual
void
setSpecularColor(
const
DtColorValue
& color);
94
96
97
virtual
const
DtColorValue
& ambientColor(
void
)
const
;
98
virtual
const
DtColorValue
& diffuseColor(
void
)
const
;
99
virtual
const
DtColorValue
& specularColor(
void
)
const
;
101
103
virtual
void
setPosition(
const
Vector3_64
& vPosition);
104
virtual
const
Vector3_64
& position(
void
)
const
;
105
107
virtual
void
setDirection(
const
Vector3_64
& vDirection);
108
virtual
const
Vector3_64
& direction(
void
)
const
;
109
111
112
virtual
void
setRange(
float32
fRange);
113
virtual
float32
range
(
void
)
const
;
114
virtual
float32
squaredRange(
void
)
const
;
116
118
119
virtual
void
setAttenuation(
float32
fConstant,
float32
fLinear,
float32
fQuadratic);
120
121
virtual
float32
constantAttenuation(
void
)
const
;
122
virtual
float32
linearAttenuation(
void
)
const
;
123
virtual
float32
quadraticAttenuation(
void
)
const
;
124
125
virtual
void
getAttenuation(
float32
attenuations[3])
const
;
127
128
130
131
virtual
void
setSpotLightParameters(
const
DtDegrees
& fInnerAngleDegrees
132
,
const
DtDegrees
& fOuterAngleDegrees
133
,
float32
fFalloff);
134
135
virtual
void
setSpotLightAngles(
const
DtDegrees
& fInnerAngleDegrees,
const
DtDegrees
& fOuterAngleDegrees);
136
virtual
void
spotLightAngles(
DtDegrees
& fInnerAngleDegrees,
DtDegrees
& fOuterAngleDegrees);
137
138
virtual
DtDegrees
innerAngle(
void
)
const
;
139
virtual
DtDegrees
outerAngle(
void
)
const
;
140
virtual
float32
falloff(
void
)
const
;
142
144
145
virtual
DtUserObjectBindings
& userObjectBindings(
void
);
146
virtual
const
DtUserObjectBindings
& userObjectBindings(
void
)
const
;
148
150
151
virtual
void
setOctreeNode(
void
* pUserData);
152
virtual
void
* octreeNode()
const
;
154
156
virtual
LightGroup
lightGroup()
const
;
157
159
virtual
void
setLightGroup(
LightGroup
group
);
160
162
virtual
const
AxisAlignedBoundingBox_64
& worldAABB(
void
)
const
;
163
165
virtual
bool
isInitted()
const
;
166
169
virtual
void
setLightSourceTypeId(
unsigned
int
lightSourceTypeId);
170
172
virtual
unsigned
int
lightSourceTypeId()
const
;
173
175
virtual
void
printDetails(
void
)
const
;
176
178
virtual
void
setUserValue(
float64
val
);
179
181
virtual
float64
userValue(
void
)
const
;
182
183
public
:
184
static
const
std::string
& reservedBindingKey(
void
);
185
186
187
protected
:
188
friend
class
DtLightScreenSpaceData
;
189
191
virtual
void
getArbitraryBasisVectors(
Vector3_64
& vBasis0,
Vector3_64
& vBasis1)
const
;
193
virtual
void
getArbitraryBasisPoints(
float
distance
, std::array<Vector3_64, 4>& point)
const
;
195
virtual
float
getAngleFactor()
const
;
196
198
virtual
Vector3_64
getSpotCenter()
const
;
199
201
virtual
void
UpdateBounds(
void
);
202
203
protected
:
204
205
LightType
myLightType
;
206
207
DtColorValue
myAmbientColor
;
208
DtColorValue
myDiffuseColor
;
209
DtColorValue
mySpecularColor
;
210
212
Vector3_64
myVecPosition
;
214
Vector3_64
myVecDirection
;
215
216
float32
myfRange
;
217
float32
myfSquaredRange
;
218
219
float32
myfConstantAttenuation
;
220
float32
myfLinearAttenuation
;
221
float32
myfQuadraticAttenuation
;
222
224
DtDegrees
myfInnerAngle
;
226
DtDegrees
myfOuterAngle
;
228
float32
myfFallOff
;
229
230
bool
mybIsOn
;
232
bool
mybIsInitted
;
233
DtUserObjectBindings
myUserObjectBindings
;
234
void
*
myOctreeNode
;
235
236
AxisAlignedBoundingBox_64
myWorldAABB
;
237
241
LightGroup
myLightGroup
;
242
DtLightManager
*
myLightManager
;
243
244
unsigned
int
myLightSourceTypeId
;
245
246
float64
myUserValue
;
247
248
static
const
std::string
theStrReservedBinding
;
249
};
250
251
// initializer for a light pointer
252
struct
DtLightPointerInitializer
253
{
254
public
:
255
void
operator()
(
DtLight
*& light)
256
{
257
light =
nullptr
;
258
}
259
};
260
261
// a reusable vector of DtLight pointers
262
typedef
DtReusableMemoryVector<DtLight*, DtLightPointerInitializer>
LightReusableVector
;
263
264
}
//namespace makVrv
265
266
#pragma warning( pop )
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (
www.mak.com
)