ULRE/src/SceneGraph/SceneOrient.cpp

60 lines
1.5 KiB
C++
Raw Normal View History

2019-05-21 21:28:33 +08:00
#include<hgl/graph/SceneOrient.h>
namespace hgl
{
namespace graph
{
SceneOrient::SceneOrient()
{
Position=Vector3f(0.0f);
Direction=Vector3f(0.0f);
IdentityLocalMatrix=true;
LocalMatrix =Identity4f;
LocalToWorldMatrix =Identity4f;
InverseLocalMatrix =Identity4f;
InverseLocalToWorldMatrix =Identity4f;
2019-05-21 21:28:33 +08:00
}
SceneOrient::SceneOrient(const Matrix4f &mat)
{
SetLocalMatrix(mat);
LocalToWorldMatrix =Identity4f;
InverseLocalToWorldMatrix =Identity4f;
}
2019-05-21 21:28:33 +08:00
Matrix4f &SceneOrient::SetLocalMatrix(const Matrix4f &m)
{
LocalMatrix=m;
IdentityLocalMatrix=IsIdentity(m);
2019-05-21 21:28:33 +08:00
InverseLocalMatrix=inverse(LocalMatrix);
return LocalMatrix;
}
Matrix4f &SceneOrient::SetLocalToWorldMatrix(const Matrix4f &m)
{
LocalToWorldMatrix=m;
InverseLocalToWorldMatrix=inverse(LocalToWorldMatrix);
return LocalToWorldMatrix;
}
/**
*
* @param m local to world矩阵
*/
void SceneOrient::RefreshLocalToWorldMatrix(const Matrix4f *m)
{
if(IdentityLocalMatrix)
SetLocalToWorldMatrix(*m);
else
SetLocalToWorldMatrix(TransformMatrix(*m,LocalMatrix));
2019-05-21 21:28:33 +08:00
}
}//namespace graph
}//namespace hgl