VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
22 
23 #include <vrvUtil/signalslib.h>
24 
25 #include <array>
26 
27 namespace makVrv
28 {
29  class DtLight;
31 
32  typedef boost::signalslib::signal< void(const DtLight*) > LightSignal;
33 
34  enum LightType
35  {
37  , LT_POINT = 1
39  };
40 
42  {
44  , LG_PROPS = 1
45  , LG_TERRAIN = 2
46  };
47 
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  virtual void setOn(bool bOn);
75  virtual bool isOn(void) const;
77 
79  virtual void setLightType(LightType lightType);
85  virtual LightType lightType(void) const;
87 
89  virtual void setAmbientColor(const DtColorValue& color);
91  virtual void setDiffuseColor(const DtColorValue& color);
92  virtual void setSpecularColor(const DtColorValue& color);
94 
96  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  virtual void setRange(float32 fRange);
113  virtual float32 range(void) const;
114  virtual float32 squaredRange(void) const;
116 
118  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  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  virtual DtUserObjectBindings& userObjectBindings(void);
146  virtual const DtUserObjectBindings& userObjectBindings(void) const;
148 
150  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:
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 
206 
210 
215 
218 
222 
229 
230  bool mybIsOn;
235 
237 
243 
244  unsigned int myLightSourceTypeId;
245 
247 
248  static const std::string theStrReservedBinding;
249  };
250 
251  // initializer for a light pointer
253  {
254  public:
255  void operator()(DtLight*& light)
256  {
257  light = nullptr;
258  }
259  };
260 
261  // a reusable vector of DtLight pointers
263 
264 } //namespace makVrv
265 
266 #pragma warning( pop )
bool mybIsOn
Definition: DtLight.h:230
DtColorValue class.
float32 myfConstantAttenuation
Definition: DtLight.h:219
float32 myfFallOff
Decrease in illumination between a spotlight&#39;s inner cone and the outer edge of the outer cone...
Definition: DtLight.h:228
LightManager class which allows creation/deletion of lights.
Definition: DtLightManager.h:30
Screen space light data, set up per frame and re-used multiple times while adding lights to light buc...
Definition: DtLightScreenSpaceData.h:53
DtReusableMemoryVector< DtLight *, DtLightPointerInitializer > LightReusableVector
Definition: DtLight.h:262
Definition: DtLight.h:36
unsigned int myLightSourceTypeId
Definition: DtLight.h:244
float32 myfRange
Definition: DtLight.h:216
DtDegrees myfOuterAngle
Angle defining the outer edge of the spotlight&#39;s outer cone. Points outside this cone are not lit by ...
Definition: DtLight.h:226
Definition: DtLight.h:38
Class to store a set of keys mapping to a set of any objects.
Vector3_64 myVecPosition
Applicable only to point lights and spot lights.
Definition: DtLight.h:212
LightGroup myLightGroup
For switching on and off lights Is this light node under the DtOsgRenderer::propsRoot or under DtOsgR...
Definition: DtLight.h:241
DtColorValue myAmbientColor
Definition: DtLight.h:207
AxisAlignedBoundingBox_64 myWorldAABB
Definition: DtLight.h:236
#define FORWARD_DECLARE_DIFFERENT_SUFFIX(T, U)
Definition: DtForwardDeclare.h:31
float32 myfSquaredRange
Definition: DtLight.h:217
3 dimensional vector
Definition: DtLight.h:37
boost::signalslib::signal< void(const DtLight *) > LightSignal
Definition: DtLight.h:30
void * myOctreeNode
Definition: DtLight.h:234
DtDegrees myfInnerAngle
Angle of a spotlight&#39;s inner cone - that is, the fully illuminated spotlight cone.
Definition: DtLight.h:224
static const std::string theStrReservedBinding
Definition: DtLight.h:248
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
Axis Aligned Bounding Box class.
LightType myLightType
Definition: DtLight.h:205
Definition: DtLight.h:44
LightType
Definition: DtLight.h:34
float32 myfLinearAttenuation
Definition: DtLight.h:220
Math utilities.
DtColorValue myDiffuseColor
Definition: DtLight.h:208
float float32
Definition: DtCommonTypes.h:33
Definition: DtMath.h:25
DtColorValue mySpecularColor
Definition: DtLight.h:209
DtUserObjectBindings myUserObjectBindings
Definition: DtLight.h:233
float32 myfQuadraticAttenuation
Definition: DtLight.h:221
Contains makVrv::DtReusableMemoryVector class.
Class for generic lights This holds per-light data such as range, attenuation factors, colors, etc.
Definition: DtLight.h:52
Definition: DtLight.h:43
#define DT_DLL_VRVGRAPHICSUTILS
Definition: vrvGraphicsUtils.h:18
bool mybIsInitted
init bit to keep track if it&#39;s really safe to add to the octtree
Definition: DtLight.h:232
Definition: DtLight.h:45
Definition: DtLight.h:252
Vector3_64 myVecDirection
Applicable only to directional lights.
Definition: DtLight.h:214
Helpers to easily define forward declarations.
void operator()(DtLight *&light)
Definition: DtLight.h:255
float64 myUserValue
Definition: DtLight.h:246
Template for Color values in [0,1] range.
Definition: DtColorValue.h:20
Class to store a set of keys mapping to a set of any objects.
Definition: DtUserObjectBindings.h:23
LightGroup
Definition: DtLight.h:41
DtLightManager * myLightManager
Definition: DtLight.h:242

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)