Files
Blitz/include/client/render/MainRenderer.h
2024-01-28 18:30:16 +01:00

58 lines
1.3 KiB
C++

#pragma once
#include "client/Client.h"
#include "client/display/PlayerController.h"
#include "client/render/Camera.h"
#include "client/render/loader/GLLoader.h"
#include "client/render/loader/ModelLoader.h"
namespace blitz {
namespace shader {
class EntityShader;
class WorldShader;
class GunShader;
} // namespace shader
namespace render {
class MainRenderer : public GuiListener, public input::PlayerListener {
private:
Client* m_Client;
ModelLoader::Model m_PlayerModel;
ModelLoader::Model m_WorldModel;
ModelLoader::Model m_GunModel;
std::unique_ptr<shader::EntityShader> m_EntityShader;
std::unique_ptr<shader::WorldShader> m_WorldShader;
std::unique_ptr<shader::GunShader> m_GunShader;
input::PlayerController m_PlayerController;
unsigned int m_Texture;
float m_ShootTime;
Camera m_Camera;
public:
MainRenderer(Client* client);
~MainRenderer();
virtual void OnSpectatorChange(const game::PlayerID player) override;
virtual void OnPlayerShoot() override;
void Update();
void Render();
void RenderEntity(const GL::VertexArray& vao, const Vec3f& position, float yaw);
void RenderWorld(const GL::VertexArray& vao);
void RenderGun();
private:
void LoadModels();
void RenderPlayers();
void RenderWorld();
};
} // namespace render
} // namespace blitz