Fixed SpotLight bounding volume computation
Former-commit-id: 72c87aa9cdb8f0e98ff2e82522d85643896884df
This commit is contained in:
parent
c2579bcf10
commit
054cde1c8b
|
|
@ -315,12 +315,11 @@ void NzLight::UpdateBoundingVolume() const
|
||||||
NzBoxf box(NzVector3f::Zero());
|
NzBoxf box(NzVector3f::Zero());
|
||||||
|
|
||||||
// On calcule le reste des points
|
// On calcule le reste des points
|
||||||
float height = m_radius;
|
NzVector3f base(NzVector3f::Forward()*m_radius);
|
||||||
NzVector3f base(NzVector3f::Forward()*height);
|
|
||||||
|
|
||||||
// Il nous faut maintenant le rayon du cercle projeté à cette distance
|
// Il nous faut maintenant le rayon du cercle projeté à cette distance
|
||||||
// Tangente = Opposé/Adjaçent <=> Opposé = Adjaçent*Tangente
|
// Tangente = Opposé/Adjaçent <=> Opposé = Adjaçent*Tangente
|
||||||
float radius = height*std::tan(NzDegreeToRadian(m_outerAngle));
|
float radius = m_radius*std::tan(NzDegreeToRadian(m_outerAngle));
|
||||||
NzVector3f lExtend = NzVector3f::Left()*radius;
|
NzVector3f lExtend = NzVector3f::Left()*radius;
|
||||||
NzVector3f uExtend = NzVector3f::Up()*radius;
|
NzVector3f uExtend = NzVector3f::Up()*radius;
|
||||||
|
|
||||||
|
|
@ -349,10 +348,10 @@ void NzLight::UpdateBoundingVolume() const
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case nzLightType_Spot:
|
case nzLightType_Spot:
|
||||||
if (!m_transformMatrixUpdated)
|
if (!m_derivedUpdated)
|
||||||
UpdateTransformMatrix();
|
UpdateDerived();
|
||||||
|
|
||||||
m_boundingVolume.Update(m_transformMatrix);
|
m_boundingVolume.Update(NzMatrix4f::Transform(m_derivedPosition, m_derivedRotation));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue