refactor: Camera 位姿统一到 TransformComponent(单一事实源)
- Camera 删除内部 position/yaw/pitch 状态:Update 把鼠标旋转与 WASD 移动直接写回实体 Transform(rotation.y=yaw / rotation.x=pitch, 移动基向量由实体旋转推导,有变更才 Compose) - GetView(transform) = 实体世界矩阵的逆——相机即实体,视图矩阵无 第二来源;Scene::GetPrimaryCamera 可选带出实体 Transform - 默认朝向约定变化:rotation.y=0 = 看向 -Z(与旧 yaw=-90 等价) - 消除 CameraComponent 位置与 Transform 脱节的遗留债
This commit is contained in:
+9
-5
@@ -63,14 +63,16 @@ protected:
|
||||
.Compose();
|
||||
m_Ground.AddComponent<MeshRendererComponent>(MeshRendererComponent{ground});
|
||||
|
||||
// 相机实体(primary = 当前渲染视角)
|
||||
// 相机实体(primary = 当前渲染视角;位姿存实体 Transform)
|
||||
m_Camera = scene.CreateEntity("MainCamera");
|
||||
auto& camera = m_Camera.AddComponent<CameraComponent>();
|
||||
camera.primary = true;
|
||||
camera.camera.SetPosition(glm::vec3(0.0f, 0.0f, 7.0f));
|
||||
m_Camera.GetComponent<TransformComponent>()
|
||||
.SetPosition(glm::vec3(0.0f, 0.0f, 7.0f))
|
||||
.Compose();
|
||||
|
||||
// 神庙实体 × 1( FBX 单位较大,缩放到场景尺度)
|
||||
if (0){
|
||||
{
|
||||
auto e = scene.CreateEntity("SunTemple");
|
||||
e.GetComponent<TransformComponent>()
|
||||
.SetScale(glm::vec3(0.05f))
|
||||
@@ -103,9 +105,11 @@ protected:
|
||||
m_Time += deltaTime;
|
||||
}
|
||||
|
||||
// 相机(WASD/Space/Shift 移动)
|
||||
// 相机(WASD/Space/Shift 移动;位姿读写实体 Transform)
|
||||
m_Camera.GetComponent<CameraComponent>()
|
||||
.camera.Update(GetWindow(), deltaTime);
|
||||
.camera.Update(GetWindow(),
|
||||
m_Camera.GetComponent<TransformComponent>(),
|
||||
deltaTime);
|
||||
|
||||
// 旋转动画:编辑 Transform 分量后 Compose 重算 world
|
||||
for (size_t i = 0; i < m_Spinners.size(); ++i)
|
||||
|
||||
Reference in New Issue
Block a user