167void QQuick3DSpotLight::setConstantFade(
float constantFade)
169 if (qFuzzyCompare(m_constantFade, constantFade))
172 m_constantFade = constantFade;
173 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
174 emit constantFadeChanged();
178void QQuick3DSpotLight::setLinearFade(
float linearFade)
180 if (qFuzzyCompare(m_linearFade, linearFade))
183 m_linearFade = linearFade;
184 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
185 emit linearFadeChanged();
189void QQuick3DSpotLight::setQuadraticFade(
float quadraticFade)
191 if (qFuzzyCompare(m_quadraticFade, quadraticFade))
194 m_quadraticFade = quadraticFade;
195 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
196 emit quadraticFadeChanged();
216void QQuick3DSpotLight::setInnerConeAngle(
float innerConeAngle)
218 if (innerConeAngle < 0.f)
219 innerConeAngle = 0.f;
220 else if (innerConeAngle > 180.f)
221 innerConeAngle = 180.f;
223 if (qFuzzyCompare(m_innerConeAngle, innerConeAngle))
226 m_innerConeAngle = innerConeAngle;
227 m_dirtyFlags.setFlag(DirtyFlag::AreaDirty);
228 emit innerConeAngleChanged();
232QSSGRenderGraphObject *QQuick3DSpotLight::updateSpatialNode(QSSGRenderGraphObject *node)
236 node =
new QSSGRenderLight(QSSGRenderLight::Type::SpotLight);
239 QQuick3DAbstractLight::updateSpatialNode(node);
241 QSSGRenderLight *light =
static_cast<QSSGRenderLight *>(node);
243 if (m_dirtyFlags.testFlag(DirtyFlag::FadeDirty)) {
244 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty,
false);
245 light->m_constantFade = m_constantFade;
246 light->m_linearFade = m_linearFade;
247 light->m_quadraticFade = m_quadraticFade;
250 if (m_dirtyFlags.testFlag(DirtyFlag::AreaDirty)) {
251 m_dirtyFlags.setFlag(DirtyFlag::AreaDirty,
false);
252 light->m_coneAngle = qBound(0.0f, m_coneAngle * 0.5, 90.0f);
253 light->m_innerConeAngle = qBound(0.0f, m_innerConeAngle * 0.5, 90.0f);