16 #ifndef SURGSIM_GRAPHICS_OSGLIGHT_H
17 #define SURGSIM_GRAPHICS_OSGLIGHT_H
21 #include <unordered_map>
26 #include <osg/ref_ptr>
30 #pragma warning(disable:4250)
60 explicit OsgLight(
const std::string& name);
63 virtual bool setGroup(std::shared_ptr<SurgSim::Graphics::Group> group)
override;
69 virtual std::shared_ptr<SurgSim::Graphics::Group>
getGroup()
override;
93 virtual void doUpdate(
double dt)
override;
96 void apply(osg::ref_ptr<osg::StateSet> stateSet);
99 void remove(osg::ref_ptr<osg::StateSet> stateSet);
116 std::unordered_map<int, osg::ref_ptr<osg::Uniform>>
m_uniforms;
134 #if defined(_MSC_VER)
Definition: DriveElementFromInputBehavior.cpp:27
virtual ~OsgLight()
Definition: OsgLight.cpp:91
SurgSim::Math::Vector4d m_specularColor
The actual specular color that was set.
Definition: OsgLight.h:119
friend class OsgLightTests
If we use the uniforms map, to check for all the uniforms that should be set in the stateset...
Definition: OsgLight.h:57
virtual bool setGroup(std::shared_ptr< SurgSim::Graphics::Group > group) override
Sets the group for this light, setting nullptr here will remove the light from its current group...
Definition: OsgLight.cpp:98
Definition: OsgLight.h:109
Abstract interface for a light, a light needs to be assigned to a group to be active, only the members of this group will be considered to be lit by this light.
Definition: Light.h:47
virtual void setDiffuseColor(const SurgSim::Math::Vector4d &color) override
Sets diffuse color of this light.
Definition: OsgLight.cpp:134
OpenScenegraph implementation for the Light interface.
Definition: OsgLight.h:51
virtual void setQuadraticAttenuation(double val) override
Sets quadratic attenuation.
Definition: OsgLight.cpp:186
virtual void setLinearAttenuation(double val) override
Sets linear attenuation.
Definition: OsgLight.cpp:174
std::string m_groupReference
Name of the group that this light should shine on...
Definition: OsgLight.h:131
virtual double getQuadraticAttenuation() override
Gets quadratic attenuation.
Definition: OsgLight.cpp:193
void apply(osg::ref_ptr< osg::StateSet > stateSet)
Applies all the lights variables to the given StateSet.
Definition: OsgLight.cpp:206
std::shared_ptr< OsgGroup > m_group
The group for this light.
Definition: OsgLight.h:113
Definition: OsgLight.h:104
virtual std::string getLightGroupReference() override
Gets the name of the group this light should operate on.
Definition: OsgLight.cpp:228
double m_constantAttenuation
The actual constant attenuation value that was set.
Definition: OsgLight.h:121
UniformType
Internal for managing uniforms.
Definition: OsgLight.h:102
double m_quadraticAttenuation
The actual quadratic attenuation value that was set.
Definition: OsgLight.h:123
virtual SurgSim::Math::Vector4d getDiffuseColor() override
Gets diffuse color.
Definition: OsgLight.cpp:143
double m_linearAttenuation
The actual linear attenuation value that was set.
Definition: OsgLight.h:122
virtual double getLinearAttenuation() override
Gets linear attenuation.
Definition: OsgLight.cpp:181
osg::ref_ptr< osg::LightSource > m_lightSource
Definition: OsgLight.h:128
Definition: OsgLight.h:107
virtual void doUpdate(double dt) override
Definition: OsgLight.cpp:198
virtual double getConstantAttenuation() override
Gets constant attenuation.
Definition: OsgLight.cpp:169
virtual void setConstantAttenuation(double val) override
Sets constant attenuation.
Definition: OsgLight.cpp:162
Definition: OsgLight.h:33
virtual void setSpecularColor(const SurgSim::Math::Vector4d &color) override
Sets specular color of this light.
Definition: OsgLight.cpp:148
std::unordered_map< int, osg::ref_ptr< osg::Uniform > > m_uniforms
Map for managing all uniforms that this object owns.
Definition: OsgLight.h:116
OsgLight(const std::string &name)
Constructor.
Definition: OsgLight.cpp:48
Definition: OsgLight.h:108
virtual SurgSim::Math::Vector4d getSpecularColor() override
Gets specular color.
Definition: OsgLight.cpp:157
Eigen::Matrix< double, 4, 1 > Vector4d
A 4D vector of doubles.
Definition: Vector.h:60
Base OSG implementation of a graphics representation.
Definition: OsgRepresentation.h:42
virtual std::shared_ptr< SurgSim::Graphics::Group > getGroup() override
Gets the group that this light has been assigned to.
Definition: OsgLight.cpp:129
Definition: OsgLight.h:106
virtual void setLightGroupReference(const std::string &name) override
Sets the name of the group that this light should work on.
Definition: OsgLight.cpp:222
osg::ref_ptr< osg::Light > m_light
Definition: OsgLight.h:127
SurgSim::Math::Vector4d m_diffuseColor
The actual diffuse color that was set.
Definition: OsgLight.h:118
Definition: OsgLight.h:105