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:
parent
31a04abcaa
commit
49f37e17ae
|
|
@ -483,7 +483,7 @@ int main()
|
||||||
NzDebugDrawer::Draw(hellknight.GetAABB());
|
NzDebugDrawer::Draw(hellknight.GetAABB());
|
||||||
|
|
||||||
NzAxisAlignedBox aabb(drfreak.GetMesh()->GetAABB());
|
NzAxisAlignedBox aabb(drfreak.GetMesh()->GetAABB());
|
||||||
aabb.Transform(drfreak.GetTransformMatrix());
|
aabb.Transform(drfreak.GetTransformMatrix(), false);
|
||||||
|
|
||||||
NzRenderer::SetMatrix(nzMatrixType_World, NzMatrix4f::Translate(drfreak.GetDerivedTranslation()));
|
NzRenderer::SetMatrix(nzMatrixType_World, NzMatrix4f::Translate(drfreak.GetDerivedTranslation()));
|
||||||
NzDebugDrawer::SetPrimaryColor(NzColor::Red);
|
NzDebugDrawer::SetPrimaryColor(NzColor::Red);
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ class NAZARA_API NzAxisAlignedBox
|
||||||
|
|
||||||
NzString ToString() const;
|
NzString ToString() const;
|
||||||
|
|
||||||
void Transform(const NzMatrix4f& matrix);
|
void Transform(const NzMatrix4f& matrix, bool applyTranslation = true);
|
||||||
|
|
||||||
operator NzString() const;
|
operator NzString() const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -206,19 +206,18 @@ NzString NzAxisAlignedBox::ToString() const
|
||||||
return "NzAxisAlignedBox(ERROR)";
|
return "NzAxisAlignedBox(ERROR)";
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix)
|
void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix, bool applyTranslation)
|
||||||
{
|
{
|
||||||
if (m_extend != nzExtend_Finite)
|
if (m_extend != nzExtend_Finite)
|
||||||
return;
|
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;
|
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,
|
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,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);
|
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);
|
m_cube.Set(center - halfSize, center + halfSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue