VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtLightManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 #pragma once
10 
12 
13 #pragma warning( push )
14 #pragma warning( disable : 4251 )
15 
23 
24 #include <tbb/mutex.h>
25 
26 namespace makVrv {
27 
31  {
32  public:
34  DtLightManager(const AxisAlignedBoundingBox_64& box, size_t depth);
35 
37  virtual ~DtLightManager();
38 
39  protected:
41  : mybVectorLightsdirty(false)
42  , myOctree(0)
43  , myLODDistance(10000)
44  {}
45 
46  public:
48  virtual DtLight* createLight(LightType lightType);
50  virtual void destroyLight(DtLight* pLight);
51  virtual size_t numLights(void) const;
52  virtual DtLight* light(size_t index);
54 
56  virtual const VectorLights& allLights(void) const;
57 
59  virtual bool lightExists(const DtLight* pLight) const;
60 
62  virtual void update(Camera_64* pCamera);
64  virtual void update(Frustum_64* pFrustum, const Vector3_64& vRefPosition);
66 
68  virtual void getClosestLights(VectorLights& closestLights
69  , const Vector3_64& vPosition, size_t n);
70 
72  virtual const VectorLights& frustumAffectingLights(void) const;
73 
74  virtual void setlodDistance(float fDistance);
75  virtual float lodDistance(void) const;
76  virtual float lodDistanceSquared(void) const;
77 
78  virtual void initOctree(const AxisAlignedBoundingBox_64& box);
79 
80  virtual void lightUpdated(const DtLight* pLight);
81  virtual void lightBoundsUpdated(const DtLight* pLight);
82  virtual void lightDestroyed(const DtLight* pLight);
83 
84  virtual void connectSignals(DtLight* pSceneNode);
85  virtual void disconnectSignals(const DtLight* pLight);
86 
87  virtual void createOctreeNode(DtLight* pLight);
88  virtual void destroyOctreeNode(DtLight* pLight);
89  virtual OctreeNode_64* octreeNode(const DtLight* pLight) const;
90 
91  virtual void findVisibleObjects(Camera_64* pCamera);
92  virtual void findVisibleObjects(Frustum_64* pCamera, const Vector3_64& vRefPosition);
93 
94  protected:
95  ListLights myLights;
96 
97  mutable bool mybVectorLightsdirty;
98  mutable VectorLights myVectorLights;
99 
101 
104 
106 
108  // needed in case multiple clients attempt to modify the octree simultaneously
109  tbb::mutex myOctreeMutex;
110  };
111 
112 } //namespace makVrv
113 
114 #pragma warning( pop )
LightManager class which allows creation/deletion of lights.
Definition: DtLightManager.h:30
Dll export defines.
OctreeNode class.
Definition: DtOctreeNode.h:21
float myLODDistance
Definition: DtLightManager.h:107
OctreeNode forward declarations.
VectorLights myFrustumAffectingLightsSortingScratchPad
Definition: DtLightManager.h:105
bool mybVectorLightsdirty
Definition: DtLightManager.h:97
VectorLights myFrustumAffectingLights
Definition: DtLightManager.h:103
Camera forward declarations.
DtOctree class.
Axis Aligned Bounding Box class.
Octree_64::NodeVector myVisibleOctreeNodes
Definition: DtLightManager.h:102
Template for 32/64 bit Cameras.
Definition: DtCamera.h:40
Light class.
VectorLights myVectorLights
Definition: DtLightManager.h:98
LightType
Definition: DtLight.h:32
Octree datastructure for managing scene nodes.
Definition: DtOctree.h:27
std::vector< DtOctreeNode< T > * > NodeVector
Definition: DtOctree.h:79
ListLights myLights
Definition: DtLightManager.h:95
OctreeNode forward declarations.
Class for generic lights.
Definition: DtLight.h:48
#define DT_DLL_VRVGRAPHICSUTILS
Definition: vrvGraphicsUtils.h:18
Template for 32/64 bit bit frustums.
Definition: DtCamera.h:148
Helpers to easily define forward declarations.
tbb::mutex myOctreeMutex
Definition: DtLightManager.h:109
DtLightManager()
Definition: DtLightManager.h:40
Octree_64 * myOctree
Definition: DtLightManager.h:100

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)