ULRE/inc/hgl/graph/SceneOrient.h

60 lines
3.0 KiB
C
Raw Normal View History

2019-05-21 21:28:33 +08:00
#ifndef HGL_GRAPH_SCENE_ORIENT_INCLUDE
#define HGL_GRAPH_SCENE_ORIENT_INCLUDE
//#include<hgl/type/List.h>
#include<hgl/math/Math.h>
#include<hgl/graph/VK.h>
2019-05-21 21:28:33 +08:00
namespace hgl
{
namespace graph
{
/**
*
*/
class SceneOrient ///场景定位类
2019-05-21 21:28:33 +08:00
{
protected:
Vector3f Position; ///<坐标
Vector3f Direction; ///<方向
2019-05-21 21:28:33 +08:00
Transform LocalTransform; ///<当前变换(指相对上一级的变换)
Transform WorldTransform; ///<当前到世界变换
protected:
2019-05-21 21:28:33 +08:00
2024-08-07 01:12:58 +08:00
void SetWorldTransform (const Transform &); ///<设定当前节点到世界矩阵
2019-05-21 21:28:33 +08:00
public:
SceneOrient();
2024-07-31 00:11:04 +08:00
SceneOrient(const SceneOrient &);
SceneOrient(const Transform &);
2019-05-21 21:28:33 +08:00
virtual ~SceneOrient()=default;
2024-08-07 01:12:58 +08:00
void SetPosition (const Vector3f &pos){Position=pos;}
void SetDirection (const Vector3f &dir){Direction=dir;}
2024-08-07 01:12:58 +08:00
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:
2024-08-07 01:12:58 +08:00
void SetLocalTransform (const Transform &); ///<设定当前节点矩阵
2019-05-21 21:28:33 +08:00
2024-08-07 01:12:58 +08:00
const Transform & GetLocalTransform ()const {return LocalTransform;} ///<取得当前节点矩阵
const Transform & GetWorldTransform ()const {return WorldTransform;} ///<取得当前节点到世界矩阵
2024-08-07 01:12:58 +08:00
Transform & GetLocalTransform () {LocalTransform.UpdateMatrix();return LocalTransform;} ///<取得当前节点矩阵
Transform & GetWorldTransform () {WorldTransform.UpdateMatrix();return WorldTransform;} ///<取得当前节点到世界矩阵
2019-05-21 21:28:33 +08:00
public:
2024-08-07 01:12:58 +08:00
virtual bool RefreshTransform (const Transform &); ///<刷新到世界空间变换
2019-05-21 21:28:33 +08:00
};//class SceneOrient
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_SCENE_ORIENT_INCLUDE