Skip to content

Commit a5b7a19

Browse files
ahcordechapulina
andauthored
Added option to visualize light in GUI (#877)
Signed-off-by: ahcorde <[email protected]> Signed-off-by: Louise Poubel <[email protected]> Co-authored-by: Louise Poubel <[email protected]>
1 parent 82ba371 commit a5b7a19

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed

include/sdf/Light.hh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@ namespace sdf
134134
/// \param[in] _cast True to indicate that the light is on, False otherwise.
135135
public: void SetLightOn(const bool _isLightOn);
136136

137+
/// \brief Whether light visualization in the GUI is enabled.
138+
/// \return True if visualization is enabled.
139+
public: bool Visualize() const;
140+
141+
/// \brief Set whether light visualization in the GUI is enabled.
142+
/// \param[in] _visualize True to view the light on the GUI.
143+
public: void SetVisualize(const bool _visualize);
144+
137145
/// \brief Get the light intensity
138146
/// \return The light intensity
139147
public: double Intensity() const;

sdf/1.8/light.sdf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
<description>When true, the light is on.</description>
1919
</element>
2020

21+
<element name="visualize" type="bool" default="true" required="0">
22+
<description>If true, the light is visualized in the GUI</description>
23+
</element>
24+
2125
<element name="intensity" type="double" default="1" required="0">
2226
<description>Scale factor to set the relative power of a light.</description>
2327
</element>

src/Light.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ class sdf::Light::Implementation
8686

8787
/// \brief Is light on ?
8888
public: bool isLightOn = true;
89+
90+
/// \brief is visual light enabled ?
91+
public: bool visualize = true;
8992
};
9093

9194
/////////////////////////////////////////////////
@@ -147,6 +150,9 @@ Errors Light::Load(ElementPtr _sdf)
147150
this->dataPtr->isLightOn = _sdf->Get<bool>("light_on",
148151
this->dataPtr->isLightOn).first;
149152

153+
this->dataPtr->visualize = _sdf->Get<bool>("visualize",
154+
this->dataPtr->visualize).first;
155+
150156
this->dataPtr->castShadows = _sdf->Get<bool>("cast_shadows",
151157
this->dataPtr->castShadows).first;
152158

@@ -334,6 +340,18 @@ void Light::SetLightOn(const bool _isLightOn)
334340
this->dataPtr->isLightOn = _isLightOn;
335341
}
336342

343+
/////////////////////////////////////////////////
344+
bool Light::Visualize() const
345+
{
346+
return this->dataPtr->visualize;
347+
}
348+
349+
/////////////////////////////////////////////////
350+
void Light::SetVisualize(const bool _visualize)
351+
{
352+
this->dataPtr->visualize = _visualize;
353+
}
354+
337355
/////////////////////////////////////////////////
338356
ignition::math::Color Light::Diffuse() const
339357
{

src/Light_TEST.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ TEST(DOMLight, DefaultConstruction)
5959
light.SetLightOn(false);
6060
EXPECT_FALSE(light.LightOn());
6161

62+
EXPECT_TRUE(light.Visualize());
63+
light.SetVisualize(false);
64+
EXPECT_FALSE(light.Visualize());
65+
6266
EXPECT_FALSE(light.CastShadows());
6367
light.SetCastShadows(true);
6468
EXPECT_TRUE(light.CastShadows());
@@ -118,6 +122,7 @@ TEST(DOMLight, CopyConstructor)
118122
light.SetPoseRelativeTo("ground_plane");
119123
light.SetCastShadows(true);
120124
light.SetLightOn(false);
125+
light.SetVisualize(false);
121126
light.SetDiffuse(ignition::math::Color(0.4f, 0.5f, 0.6f, 1.0));
122127
light.SetSpecular(ignition::math::Color(0.8f, 0.9f, 0.1f, 1.0));
123128
light.SetAttenuationRange(3.2);
@@ -137,6 +142,7 @@ TEST(DOMLight, CopyConstructor)
137142
EXPECT_EQ("ground_plane", light2.PoseRelativeTo());
138143
EXPECT_TRUE(light2.CastShadows());
139144
EXPECT_FALSE(light2.LightOn());
145+
EXPECT_FALSE(light2.Visualize());
140146
EXPECT_EQ(ignition::math::Color(0.4f, 0.5f, 0.6f, 1), light2.Diffuse());
141147
EXPECT_EQ(ignition::math::Color(0.8f, 0.9f, 0.1f, 1), light2.Specular());
142148
EXPECT_DOUBLE_EQ(3.2, light2.AttenuationRange());
@@ -160,6 +166,7 @@ TEST(DOMLight, CopyAssignmentOperator)
160166
light.SetPoseRelativeTo("ground_plane");
161167
light.SetCastShadows(true);
162168
light.SetLightOn(false);
169+
light.SetVisualize(false);
163170
light.SetDiffuse(ignition::math::Color(0.4f, 0.5f, 0.6f, 1.0));
164171
light.SetSpecular(ignition::math::Color(0.8f, 0.9f, 0.1f, 1.0));
165172
light.SetAttenuationRange(3.2);
@@ -180,6 +187,7 @@ TEST(DOMLight, CopyAssignmentOperator)
180187
EXPECT_EQ("ground_plane", light2.PoseRelativeTo());
181188
EXPECT_TRUE(light2.CastShadows());
182189
EXPECT_FALSE(light2.LightOn());
190+
EXPECT_FALSE(light2.Visualize());
183191
EXPECT_EQ(ignition::math::Color(0.4f, 0.5f, 0.6f, 1), light2.Diffuse());
184192
EXPECT_EQ(ignition::math::Color(0.8f, 0.9f, 0.1f, 1), light2.Specular());
185193
EXPECT_DOUBLE_EQ(3.2, light2.AttenuationRange());
@@ -203,6 +211,7 @@ TEST(DOMLight, MoveConstructor)
203211
light.SetPoseRelativeTo("ground_plane");
204212
light.SetCastShadows(true);
205213
light.SetLightOn(false);
214+
light.SetVisualize(false);
206215
light.SetDiffuse(ignition::math::Color(0.4f, 0.5f, 0.6f, 1.0));
207216
light.SetSpecular(ignition::math::Color(0.8f, 0.9f, 0.1f, 1.0));
208217
light.SetAttenuationRange(3.2);
@@ -222,6 +231,7 @@ TEST(DOMLight, MoveConstructor)
222231
EXPECT_EQ("ground_plane", light2.PoseRelativeTo());
223232
EXPECT_TRUE(light2.CastShadows());
224233
EXPECT_FALSE(light2.LightOn());
234+
EXPECT_FALSE(light2.Visualize());
225235
EXPECT_EQ(ignition::math::Color(0.4f, 0.5f, 0.6f, 1), light2.Diffuse());
226236
EXPECT_EQ(ignition::math::Color(0.8f, 0.9f, 0.1f, 1), light2.Specular());
227237
EXPECT_DOUBLE_EQ(3.2, light2.AttenuationRange());
@@ -245,6 +255,7 @@ TEST(DOMLight, MoveAssignment)
245255
light.SetPoseRelativeTo("ground_plane");
246256
light.SetCastShadows(true);
247257
light.SetLightOn(false);
258+
light.SetVisualize(false);
248259
light.SetDiffuse(ignition::math::Color(0.4f, 0.5f, 0.6f, 1.0));
249260
light.SetSpecular(ignition::math::Color(0.8f, 0.9f, 0.1f, 1.0));
250261
light.SetAttenuationRange(3.2);
@@ -265,6 +276,7 @@ TEST(DOMLight, MoveAssignment)
265276
EXPECT_EQ("ground_plane", light2.PoseRelativeTo());
266277
EXPECT_TRUE(light2.CastShadows());
267278
EXPECT_FALSE(light2.LightOn());
279+
EXPECT_FALSE(light2.Visualize());
268280
EXPECT_EQ(ignition::math::Color(0.4f, 0.5f, 0.6f, 1), light2.Diffuse());
269281
EXPECT_EQ(ignition::math::Color(0.8f, 0.9f, 0.1f, 1), light2.Specular());
270282
EXPECT_DOUBLE_EQ(3.2, light2.AttenuationRange());

0 commit comments

Comments
 (0)