VR-Vantage 3.0 API 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) 2021 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 <array>
24 
25 namespace makVrv
26 {
27  class DtLight;
28  class DtLightManager;
29 
30  enum LightType
31  {
33  , LT_POINT = 1
35  };
36 
38  {
40  , LG_PROPS = 1
41  , LG_TERRAIN = 2
42  };
43 
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:
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 
212 
213  unsigned int mySensorMask; //bit 0 is visual, bit 1 is NVG, bit 2 is MWIR, bit 3 is LWIR
214 
218 
223 
226 
230 
237 
238  bool mybIsOn;
243 
245 
251 
252  unsigned int myLightSourceTypeId;
253 
255 
257  };
258 
259  // initializer for a light pointer
261  {
262  public:
263  void operator()(DtLight*& light)
264  {
265  light = nullptr;
266  }
267  };
268 
269  // a reusable vector of DtLight pointers
271 
272 } //namespace makVrv
273 
274 #pragma warning( pop )


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