add basic camera controls
This commit is contained in:
@@ -35,6 +35,7 @@ class Camera {
|
|||||||
void UpdatePerspective(float a_AspectRatio);
|
void UpdatePerspective(float a_AspectRatio);
|
||||||
|
|
||||||
void SetCamPos(const Vec3f& a_NewPos);
|
void SetCamPos(const Vec3f& a_NewPos);
|
||||||
|
const Vec3f& GetCamPos() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace render
|
} // namespace render
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ class WorldRenderer : public Renderer<shader::WorldShader> {
|
|||||||
virtual ~WorldRenderer();
|
virtual ~WorldRenderer();
|
||||||
|
|
||||||
virtual void Render(float a_Lerp) override;
|
virtual void Render(float a_Lerp) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void UpdateControls();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace render
|
} // namespace render
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#include "td/Maths.h"
|
||||||
#include <td/render/Camera.h>
|
#include <td/render/Camera.h>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@@ -24,5 +25,9 @@ void Camera::SetCamPos(const Vec3f& a_NewPos) {
|
|||||||
OnViewChange();
|
OnViewChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Vec3f& Camera::GetCamPos() const {
|
||||||
|
return m_CamPos;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace render
|
} // namespace render
|
||||||
} // namespace td
|
} // namespace td
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#include <td/Maths.h>
|
||||||
#include <td/render/renderer/WorldRenderer.h>
|
#include <td/render/renderer/WorldRenderer.h>
|
||||||
|
|
||||||
#include <td/render/loader/WorldLoader.h>
|
#include <td/render/loader/WorldLoader.h>
|
||||||
@@ -13,7 +14,17 @@ WorldRenderer::WorldRenderer(Camera& a_Camera, const game::WorldPtr& a_World) :
|
|||||||
|
|
||||||
WorldRenderer::~WorldRenderer() {}
|
WorldRenderer::~WorldRenderer() {}
|
||||||
|
|
||||||
|
void WorldRenderer::UpdateControls() {
|
||||||
|
if (ImGui::IsMouseDown(ImGuiMouseButton_Left)) {
|
||||||
|
constexpr float sensitivity = 1.0f;
|
||||||
|
float delta = ImGui::GetIO().DeltaTime;
|
||||||
|
auto mouseDelta = ImGui::GetIO().MouseDelta;
|
||||||
|
m_Camera.SetCamPos(m_Camera.GetCamPos() + Vec3f{-mouseDelta.x * delta * sensitivity, 0, -mouseDelta.y * delta * sensitivity});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void WorldRenderer::Render(float a_Lerp) {
|
void WorldRenderer::Render(float a_Lerp) {
|
||||||
|
UpdateControls();
|
||||||
m_Shader->Start();
|
m_Shader->Start();
|
||||||
Renderer::Render(*m_WorldVao);
|
Renderer::Render(*m_WorldVao);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user