VR-Vantage 2.8 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
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:
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 
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 )


Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)