diff --git a/include/Nazara/Graphics/SpotLight.hpp b/include/Nazara/Graphics/SpotLight.hpp index 1cf86d632..670dbc598 100644 --- a/include/Nazara/Graphics/SpotLight.hpp +++ b/include/Nazara/Graphics/SpotLight.hpp @@ -46,6 +46,7 @@ namespace Nz std::unique_ptr InstanciateShadowData(FramePipeline& pipeline, ElementRendererRegistry& elementRegistry) const override; inline void UpdateAmbientFactor(float factor); + inline void UpdateAngles(RadianAnglef innerAngle, RadianAnglef outerAngle); inline void UpdateColor(Color color); inline void UpdateDiffuseFactor(float factor); inline void UpdateDirection(const Vector3f& direction); diff --git a/include/Nazara/Graphics/SpotLight.inl b/include/Nazara/Graphics/SpotLight.inl index b4ef1cd64..c623b4c59 100644 --- a/include/Nazara/Graphics/SpotLight.inl +++ b/include/Nazara/Graphics/SpotLight.inl @@ -15,8 +15,7 @@ namespace Nz m_ambientFactor(0.2f), m_diffuseFactor(1.f) { - UpdateInnerAngle(DegreeAnglef(30.f)); - UpdateOuterAngle(DegreeAnglef(45.f)); + UpdateAngles(DegreeAnglef(30.f), DegreeAnglef(45.f)); UpdateRadius(5.f); UpdateRotation(Quaternionf::Identity()); } @@ -98,6 +97,19 @@ namespace Nz OnLightDataInvalided(this); } + inline void SpotLight::UpdateAngles(RadianAnglef innerAngle, RadianAnglef outerAngle) + { + m_innerAngle = innerAngle; + m_innerAngleCos = m_innerAngle.GetCos(); + m_outerAngle = outerAngle; + m_outerAngleCos = m_outerAngle.GetCos(); + m_outerAngleTan = m_outerAngle.GetTan(); + + UpdateBoundingVolume(); + UpdateViewProjMatrix(); + OnLightDataInvalided(this); + } + inline void SpotLight::UpdateColor(Color color) { m_color = color; @@ -121,6 +133,8 @@ namespace Nz { m_innerAngle = innerAngle; m_innerAngleCos = m_innerAngle.GetCos(); + + OnLightDataInvalided(this); } inline void SpotLight::UpdateOuterAngle(RadianAnglef outerAngle) @@ -131,6 +145,7 @@ namespace Nz UpdateBoundingVolume(); UpdateViewProjMatrix(); + OnLightDataInvalided(this); } inline void SpotLight::UpdatePosition(const Vector3f& position)