58 lines
1.3 KiB
C++
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
|