[WIP] refresh scene orient

This commit is contained in:
2024-08-24 03:08:14 +08:00
parent 8880df8862
commit f4e16276ff
3 changed files with 41 additions and 44 deletions

View File

@@ -15,44 +15,36 @@ namespace hgl
{
protected:
Vector3f Position; ///<坐标
Vector3f Direction; ///<方向
TransformManager transform_manager;
Transform LocalTransform; ///<当前变换(指相对上一级的变换)
Transform WorldTransform; ///<当前到世界变换
Matrix4f ParentMatrix; ///<上级矩阵
protected:
Matrix4f LocalMatrix; ///<本地到上一级矩阵
Matrix4f LocalToWorldMatrix; ///<本地到世界矩阵
Matrix4f InverseLocalToWorldMatrix; ///<世界到本地矩阵
Matrix4f InverseTransposeLocalToWorldMatrix; ///<世界到本地矩阵的转置矩阵
void SetWorldTransform (const Transform &); ///<设定当前节点到世界矩阵
virtual void SetWorldMatrix(const Matrix4f &);
public:
SceneOrient();
SceneOrient(const SceneOrient &);
SceneOrient(const Transform &);
SceneOrient(const Matrix4f &);
virtual ~SceneOrient()=default;
void SetPosition (const Vector3f &pos){Position=pos;}
void SetDirection (const Vector3f &dir){Direction=dir;}
const Vector3f & GetLocalPosition ()const {return Position;}
const Vector3f & GetLocalDirection ()const {return Direction;}
const Vector3f GetWorldPosition () {return WorldTransform.TransformPosition(Position);}
const Vector3f GetWorldDirection () {return WorldTransform.TransformDirection(Direction);}
public:
void SetLocalTransform (const Transform &); ///<设定当前节点矩阵
TransformManager * GetTransform (){return &transform_manager;} ///<取得变换管理器
const Transform & GetLocalTransform ()const {return LocalTransform;} ///<取得当前节点矩阵
const Transform & GetWorldTransform ()const {return WorldTransform;} ///<取得当前节点到世界矩阵
Transform & GetLocalTransform () {LocalTransform.UpdateMatrix();return LocalTransform;} ///<取得当前节点矩阵
Transform & GetWorldTransform () {WorldTransform.UpdateMatrix();return WorldTransform;} ///<取得当前节点到世界矩阵
const Matrix4f & GetLocalMatrix ()const{return LocalMatrix;}
const Matrix4f & GetLocalToWorldMatrix ()const{return LocalToWorldMatrix;}
const Matrix4f & GetInverseLocalToWorldMatrix ()const{return InverseLocalToWorldMatrix;}
const Matrix4f & GetInverseTransposeLocalToWorldMatrix ()const{return InverseTransposeLocalToWorldMatrix;}
public:
virtual bool RefreshTransform (const Transform &); ///<刷新到世界空间变换
virtual bool RefreshMatrix (const Matrix4f &); ///<刷新到世界空间变换
};//class SceneOrient
}//namespace graph
}//namespace hgl