Gazebo Rendering

API Reference

8.2.0
Ogre2Light.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #ifndef GZ_RENDERING_OGRE2_OGRE2LIGHT_HH_
18 #define GZ_RENDERING_OGRE2_OGRE2LIGHT_HH_
19 
20 #include <memory>
21 
24 
25 #ifdef _MSC_VER
26  #pragma warning(push, 0)
27 #endif
28 #include <OgreLight.h>
29 #ifdef _MSC_VER
30  #pragma warning(pop)
31 #endif
32 
33 namespace Ogre
34 {
35  class Light;
36 }
37 
38 namespace gz
39 {
40  namespace rendering
41  {
42  inline namespace GZ_RENDERING_VERSION_NAMESPACE {
43  //
44  // forward declaration
45  class Ogre2LightPrivate;
46 
48  class GZ_RENDERING_OGRE2_VISIBLE Ogre2Light :
49  public BaseLight<Ogre2Node>
50  {
52  protected: Ogre2Light();
53 
55  public: virtual ~Ogre2Light();
56 
57  // Documentation Inherited
58  public: virtual void SetLocalPosition(const math::Vector3d &_position)
59  override;
60 
61  // Documentation Inherited
62  public: virtual math::Color DiffuseColor() const override;
63 
64  // Documentation Inherited
65  public: virtual void SetDiffuseColor(const math::Color &_color) override;
66 
67  // Documentation Inherited
68  public: virtual math::Color SpecularColor() const override;
69 
70  // Documentation Inherited
71  public: virtual void SetSpecularColor(const math::Color &_color) override;
72 
73  // Documentation Inherited
74  public: virtual double AttenuationConstant() const override;
75 
76  // Documentation Inherited
77  public: virtual void SetAttenuationConstant(double _value) override;
78 
79  // Documentation Inherited
80  public: virtual double AttenuationLinear() const override;
81 
82  // Documentation Inherited
83  public: virtual void SetAttenuationLinear(double _value) override;
84 
85  // Documentation Inherited
86  public: virtual double AttenuationQuadratic() const override;
87 
88  // Documentation Inherited
89  public: virtual void SetAttenuationQuadratic(double _value) override;
90 
91  // Documentation Inherited
92  public: virtual double AttenuationRange() const override;
93 
94  // Documentation Inherited
95  public: virtual void SetAttenuationRange(double _range) override;
96 
97  // Documentation Inherited
98  public: virtual bool CastShadows() const override;
99 
100  // Documentation Inherited
101  public: virtual void SetCastShadows(bool _castShadows) override;
102 
103  // Documentation Inherited
104  public: virtual double Intensity() const override;
105 
106  // Documentation Inherited
107  public: virtual void SetIntensity(double _intensity) override;
108 
110  public: virtual Ogre::Light *Light() const;
111 
113  public: virtual void Destroy() override;
114 
116  protected: virtual void Init() override;
117 
119  private: void CreateLight();
120 
122  private: void UpdateAttenuation();
123 
125  protected: double attenConstant = 1.0;
126 
128  protected: double attenLinear = 0.0;
129 
131  protected: double attenQuadratic = 0.0;
132 
134  protected: double attenRange = 100.0;
135 
137  protected: Ogre::Light *ogreLight = nullptr;
138 
140  protected: Ogre::Light::LightTypes ogreLightType;
141 
143  private: std::unique_ptr<Ogre2LightPrivate> dataPtr;
144  };
145 
147  class GZ_RENDERING_OGRE2_VISIBLE Ogre2DirectionalLight :
148  public BaseDirectionalLight<Ogre2Light>
149  {
151  protected: Ogre2DirectionalLight();
152 
154  public: virtual ~Ogre2DirectionalLight();
155 
156  // Documentation Inherited
157  public: virtual math::Vector3d Direction() const override;
158 
159  // Documentation Inherited
160  public: virtual void SetDirection(const math::Vector3d &_dir) override;
161 
163  private: friend class Ogre2Scene;
164  };
165 
167  class GZ_RENDERING_OGRE2_VISIBLE Ogre2PointLight :
168  public BasePointLight<Ogre2Light>
169  {
171  protected: Ogre2PointLight();
172 
174  public: virtual ~Ogre2PointLight();
175 
177  private: friend class Ogre2Scene;
178  };
179 
181  class GZ_RENDERING_OGRE2_VISIBLE Ogre2SpotLight :
182  public BaseSpotLight<Ogre2Light>
183  {
185  protected: Ogre2SpotLight();
186 
188  public: virtual ~Ogre2SpotLight();
189 
190  // Documentation inherited.
191  public: virtual math::Vector3d Direction() const override;
192 
193  // Documentation Inherited
194  public: virtual void SetDirection(const math::Vector3d &_dir) override;
195 
196  // Documentation Inherited
197  public: virtual math::Angle InnerAngle() const override;
198 
199  // Documentation Inherited
200  public: virtual void SetInnerAngle(const math::Angle &_angle) override;
201 
202  // Documentation Inherited
203  public: virtual math::Angle OuterAngle() const override;
204 
205  // Documentation Inherited
206  public: virtual void SetOuterAngle(const math::Angle &_angle) override;
207 
208  // Documentation Inherited
209  public: virtual double Falloff() const override;
210 
211  // Documentation Inherited
212  public: virtual void SetFalloff(double _falloff) override;
213 
215  private: friend class Ogre2Scene;
216  };
217  }
218  }
219 }
220 #endif