169void QQuick3DSpotLight::setConstantFade(
float constantFade)
171 if (qFuzzyCompare(m_constantFade, constantFade))
174 m_constantFade = constantFade;
175 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
176 emit constantFadeChanged();
180void QQuick3DSpotLight::setLinearFade(
float linearFade)
182 if (qFuzzyCompare(m_linearFade, linearFade))
185 m_linearFade = linearFade;
186 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
187 emit linearFadeChanged();
191void QQuick3DSpotLight::setQuadraticFade(
float quadraticFade)
193 if (qFuzzyCompare(m_quadraticFade, quadraticFade))
196 m_quadraticFade = quadraticFade;
197 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty);
198 emit quadraticFadeChanged();
218void QQuick3DSpotLight::setInnerConeAngle(
float innerConeAngle)
220 if (innerConeAngle < 0.f)
221 innerConeAngle = 0.f;
222 else if (innerConeAngle > 180.f)
223 innerConeAngle = 180.f;
225 if (qFuzzyCompare(m_innerConeAngle, innerConeAngle))
228 m_innerConeAngle = innerConeAngle;
229 m_dirtyFlags.setFlag(DirtyFlag::AreaDirty);
230 emit innerConeAngleChanged();
234QSSGRenderGraphObject *QQuick3DSpotLight::updateSpatialNode(QSSGRenderGraphObject *node)
238 node =
new QSSGRenderLight(QSSGRenderLight::Type::SpotLight);
241 QQuick3DAbstractLight::updateSpatialNode(node);
243 QSSGRenderLight *light =
static_cast<QSSGRenderLight *>(node);
245 if (m_dirtyFlags.testFlag(DirtyFlag::FadeDirty)) {
246 m_dirtyFlags.setFlag(DirtyFlag::FadeDirty,
false);
247 light->m_constantFade = m_constantFade;
248 light->m_linearFade = m_linearFade;
249 light->m_quadraticFade = m_quadraticFade;
252 if (m_dirtyFlags.testFlag(DirtyFlag::AreaDirty)) {
253 m_dirtyFlags.setFlag(DirtyFlag::AreaDirty,
false);
254 light->m_coneAngle = qBound(0.0f, m_coneAngle * 0.5, 90.0f);
255 light->m_innerConeAngle = qBound(0.0f, m_innerConeAngle * 0.5, 90.0f);