Visualization Library 2.0.0

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
SceneManager.hpp
Go to the documentation of this file.
1 /**************************************************************************************/
2 /* */
3 /* Visualization Library */
4 /* http://visualizationlibrary.org */
5 /* */
6 /* Copyright (c) 2005-2020, Michele Bosi */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without modification, */
10 /* are permitted provided that the following conditions are met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, this */
13 /* list of conditions and the following disclaimer. */
14 /* */
15 /* - Redistributions in binary form must reproduce the above copyright notice, this */
16 /* list of conditions and the following disclaimer in the documentation and/or */
17 /* other materials provided with the distribution. */
18 /* */
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */
20 /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */
21 /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */
23 /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
24 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
25 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
26 /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
27 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
28 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
29 /* */
30 /**************************************************************************************/
31 
32 #ifndef SceneManager_INCLUDE_ONCE
33 #define SceneManager_INCLUDE_ONCE
34 
36 #include <vlCore/Object.hpp>
37 #include <vlCore/Sphere.hpp>
38 
39 namespace vl
40 {
41  class Actor;
42  class ActorCollection;
43  class Camera;
44 
45 //-------------------------------------------------------------------------------------------------------------------------------------------
46 // SceneManager
47 //-------------------------------------------------------------------------------------------------------------------------------------------
73  {
75 
76  public:
78  SceneManager();
79 
81  virtual void extractActors(ActorCollection& list) = 0;
82 
85  virtual void extractVisibleActors(ActorCollection& list, const Camera* camera) = 0;
86 
88  virtual void computeBounds();
89 
91  void setBoundingSphere(const Sphere& sphere) { mSphere = sphere; }
93  const Sphere& boundingSphere() const { return mSphere; }
94 
96  void setBoundingBox(const AABB& bbox) { mAABB = bbox; }
98  const AABB& boundingBox() const { return mAABB; }
99 
101  void setBoundsDirty(bool dirty) { mBoundsDirty = dirty; }
103  bool boundsDirty() const { return mBoundsDirty; }
104 
106  void setCullingEnabled(bool enable) { mCullingEnabled = enable; }
108  bool cullingEnabled() const { return mCullingEnabled; }
109 
112  void setEnableMask(unsigned int enabled) { mEnableMask = enabled; }
115  unsigned int enableMask() const { return mEnableMask; }
116 
118  bool isEnabled(Actor*a) const;
119 
120  protected:
123  unsigned int mEnableMask;
126  };
127 }
128 
129 #endif
Associates a Renderable object to an Effect and Transform.
Definition: Actor.hpp:130
unsigned int enableMask() const
The enable mask to be used by extractVisibleActors()
bool cullingEnabled() const
Used to enable or disable frustum culling or whichever culling system the scene manager implements...
bool boundsDirty() const
Returns true if the scene manager&#39;s bounds should be recomputed at the next rendering frame...
unsigned int mEnableMask
void setBoundingBox(const AABB &bbox)
Explicitly set the scene manager&#39;s bounding sphere. See also computeBounds().
const Sphere & boundingSphere() const
Returns the scene manager&#39;s bounding sphere.
Visualization Library main namespace.
void setCullingEnabled(bool enable)
Used to enable or disable frustum culling or whichever culling system the scene manager implements...
void setBoundsDirty(bool dirty)
Flags a scene manager&#39;s bounding box and bounding sphere as dirty. The bounds will be recomputed usin...
const AABB & boundingBox() const
Returns the scene manager&#39;s bounding box.
The AABB class implements an axis-aligned bounding box using vl::real precision.
Definition: AABB.hpp:44
void setEnableMask(unsigned int enabled)
The enable mask to be used by extractVisibleActors()
The base class for all the reference counted objects.
Definition: Object.hpp:158
void setBoundingSphere(const Sphere &sphere)
Explicitly set the scene manager&#39;s bounding sphere. See also computeBounds().
The SceneManager class is the base class for all the scene managers.
The Sphere class defines a sphere using a center and a radius using vl::real precision.
Definition: Sphere.hpp:43
Defined as a simple subclass of Collection<Actor>, see Collection for more information.
Definition: Actor.hpp:479
#define VL_INSTRUMENT_ABSTRACT_CLASS(ClassName, BaseClass)
Definition: TypeInfo.hpp:145
Represents a virtual camera defining, among other things, the point of view from which scenes can be ...
Definition: Camera.hpp:50