and again

This commit is contained in:
2025-07-18 18:56:49 +02:00
parent 6d0e56eb46
commit 090ea962d3
19 changed files with 115 additions and 186 deletions

View File

@@ -10,7 +10,8 @@ namespace render {
class BasicRenderer {
public:
virtual void Render() = 0;
virtual void Render(float a_Lerp) = 0;
virtual ~BasicRenderer() {}
void Render(const GL::VertexArray& a_Vao);
};
@@ -24,6 +25,11 @@ class Renderer : public BasicRenderer {
public:
Renderer(Camera& a_Camera);
virtual ~Renderer() {}
template <typename T>
float Lerp(const T& a_Mob, float a_LerpFactor, const std::function<float(const T&)>& a_MemberGetter) {
return static_cast<float>(maths::Lerp(a_MemberGetter(a_Mob), a_MemberGetter(*a_Mob.m_Next), a_LerpFactor));
}
};
class RenderPipeline {
@@ -32,7 +38,7 @@ class RenderPipeline {
public:
RenderPipeline();
~RenderPipeline() = default;
virtual ~RenderPipeline() {}
template <typename T, typename... Args>
void AddRenderer(Args&&... args) {
@@ -43,9 +49,9 @@ class RenderPipeline {
m_Renderers.clear();
}
void Render() {
void Render(float a_Lerp) {
for (auto& renderer : m_Renderers) {
renderer->Render();
renderer->Render(a_Lerp);
}
}
};

View File

@@ -16,7 +16,7 @@ class EntityRenderer : public Renderer<shader::EntityShader> {
EntityRenderer(Camera& a_Camera, const game::World& a_World);
virtual ~EntityRenderer();
virtual void Render() override;
virtual void Render(float a_Lerp) override;
};
} // namespace render

View File

@@ -10,14 +10,13 @@ namespace render {
class WorldRenderer : public Renderer<shader::WorldShader> {
private:
const game::World& m_World;
std::unique_ptr<GL::VertexArray> m_WorldVao;
public:
WorldRenderer(Camera& a_Camera, const game::World& a_World);
virtual ~WorldRenderer();
virtual void Render() override;
virtual void Render(float a_Lerp) override;
};
} // namespace render