AxisAlignedBox::Transform now apply translation

Added an optionnal argument to prevent translation from being applied
Updated demo


Former-commit-id: c56cb04733379eb6dda98b150931fb0e496ef889
This commit is contained in:
Lynix
2012-12-28 22:57:40 +01:00
parent 31a04abcaa
commit 49f37e17ae
3 changed files with 4 additions and 5 deletions

View File

@@ -206,19 +206,18 @@ NzString NzAxisAlignedBox::ToString() const
return "NzAxisAlignedBox(ERROR)";
}
void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix)
void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix, bool applyTranslation)
{
if (m_extend != nzExtend_Finite)
return;
NzVector3f center = matrix.Transform(m_cube.GetCenter(), 0.f); // 0.f pour annuler la translation
NzVector3f center = matrix.Transform(m_cube.GetCenter(), (applyTranslation) ? 1.f : 0.f); // Valeur multipliant la translation
NzVector3f halfSize = m_cube.GetSize() * 0.5f;
halfSize.Set(std::fabs(matrix(0,0))*halfSize.x + std::fabs(matrix(1,0))*halfSize.y + std::fabs(matrix(2,0))*halfSize.z,
std::fabs(matrix(0,1))*halfSize.x + std::fabs(matrix(1,1))*halfSize.y + std::fabs(matrix(2,1))*halfSize.z,
std::fabs(matrix(0,2))*halfSize.x + std::fabs(matrix(1,2))*halfSize.y + std::fabs(matrix(2,2))*halfSize.z);
m_cube.Set(center - halfSize, center + halfSize);
}