2025-03-18 00:38:43 +08:00
|
|
|
|
#pragma once
|
2019-05-21 21:28:33 +08:00
|
|
|
|
|
2020-10-21 11:43:18 +08:00
|
|
|
|
#include<hgl/graph/VK.h>
|
2024-08-31 00:10:57 +08:00
|
|
|
|
#include<hgl/graph/SceneMatrix.h>
|
2025-05-18 22:56:38 +08:00
|
|
|
|
namespace hgl::graph
|
2019-05-21 21:28:33 +08:00
|
|
|
|
{
|
2025-05-18 22:56:38 +08:00
|
|
|
|
/**
|
|
|
|
|
* 方向定位数据基类<br>
|
|
|
|
|
*/
|
|
|
|
|
class SceneOrient ///场景定位类
|
2019-05-21 21:28:33 +08:00
|
|
|
|
{
|
2025-05-18 22:56:38 +08:00
|
|
|
|
protected:
|
2024-08-27 01:27:53 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
SceneMatrix scene_matrix;
|
2024-08-27 01:27:53 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
public:
|
2024-08-27 01:27:53 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
SceneOrient()=default;
|
|
|
|
|
SceneOrient(const SceneOrient &);
|
|
|
|
|
SceneOrient(const Matrix4f &);
|
|
|
|
|
virtual ~SceneOrient()=default;
|
2019-05-21 21:28:33 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
virtual void Clear()
|
|
|
|
|
{
|
|
|
|
|
scene_matrix.Clear();
|
|
|
|
|
}
|
2024-08-29 13:37:13 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
void SetLocalNormal(const Vector3f &nor) {scene_matrix.SetLocalNormal(nor);} ///<设置本地法线
|
|
|
|
|
void SetLocalMatrix (const Matrix4f &mat){scene_matrix.SetLocalMatrix(mat);} ///<设置本地矩阵
|
|
|
|
|
void SetParentMatrix(const Matrix4f &mat){scene_matrix.SetParentMatrix(mat);} ///<设置上级到世界空间变换矩阵
|
2024-08-27 01:27:53 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
public:
|
2024-08-27 01:27:53 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
const uint32 GetLocalToWorldMatrixVersion()const {return scene_matrix.GetNewestVersion();} ///<取得版本号
|
2024-08-25 04:03:57 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
const Vector3f & GetWorldPosition() const {return scene_matrix.GetWorldPosition();} ///<取得世界坐标
|
|
|
|
|
const Matrix4f & GetLocalMatrix ()const {return scene_matrix.GetLocalMatrix();} ///<取得本地矩阵
|
2024-07-17 01:38:30 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
TransformManager & GetTransform () {return scene_matrix.GetTransform();} ///<取得变换管理器
|
2019-05-21 21:28:33 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
const Matrix4f & GetLocalToWorldMatrix () {return scene_matrix.GetLocalToWorldMatrix();} ///<取得本地到世界矩阵
|
|
|
|
|
const Matrix4f & GetInverseLocalToWorldMatrix () {return scene_matrix.GetInverseLocalToWorldMatrix();}
|
|
|
|
|
const Matrix4f & GetInverseTransposeLocalToWorldMatrix () {return scene_matrix.GetInverseTransposeLocalToWorldMatrix();}
|
2019-05-21 21:28:33 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
public:
|
2020-11-26 17:51:59 +08:00
|
|
|
|
|
2025-05-18 22:56:38 +08:00
|
|
|
|
virtual void RefreshMatrix();
|
|
|
|
|
};//class SceneOrient
|
|
|
|
|
}//namespace hgl::graph
|