change WorldRenderer to class
This commit is contained in:
@@ -9,29 +9,18 @@
|
||||
namespace td {
|
||||
namespace render {
|
||||
|
||||
namespace WorldRenderer{
|
||||
|
||||
static std::unique_ptr<GL::VAO> worldVAO;
|
||||
static const game::World* worldPtr = nullptr;
|
||||
|
||||
static glm::vec2 camPos{13.5, 13.5};//{60, -10};
|
||||
static float zoom = 1;
|
||||
|
||||
static const float camSensibility = 1;
|
||||
|
||||
static std::unique_ptr<GL::VAO> mobVAO;
|
||||
|
||||
void init(const game::World* world){
|
||||
void WorldRenderer::loadModels(){
|
||||
std::cout << "World Created !\n";
|
||||
worldVAO = std::make_unique<GL::VAO>(std::move(WorldLoader::loadWorldModel(world)));
|
||||
mobVAO = std::make_unique<GL::VAO>(std::move(WorldLoader::loadMobModel()));
|
||||
std::cout << "Vertex Count : " << worldVAO->getVertexCount() << std::endl;
|
||||
Renderer::setCamPos(camPos);
|
||||
worldPtr = world;
|
||||
m_WorldVao = std::make_unique<GL::VAO>(std::move(WorldLoader::loadWorldModel(m_World)));
|
||||
m_MobVao = std::make_unique<GL::VAO>(std::move(WorldLoader::loadMobModel()));
|
||||
std::cout << "Vertex Count : " << m_WorldVao->getVertexCount() << std::endl;
|
||||
}
|
||||
|
||||
void update(){
|
||||
if(worldVAO == nullptr)
|
||||
WorldRenderer::WorldRenderer(game::World* world) : m_World(world){
|
||||
}
|
||||
|
||||
void WorldRenderer::update(){
|
||||
if(m_WorldVao == nullptr)
|
||||
return;
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
if(io.MouseDown[0] && !ImGui::IsAnyItemActive()){
|
||||
@@ -45,68 +34,66 @@ void update(){
|
||||
}
|
||||
}
|
||||
|
||||
void renderWorld(){
|
||||
Renderer::renderVAO(*worldVAO);
|
||||
void WorldRenderer::renderWorld() const{
|
||||
Renderer::renderVAO(*m_WorldVao);
|
||||
}
|
||||
|
||||
void renderMobs(){
|
||||
for(game::MobPtr mob : worldPtr->getMobList()){
|
||||
void WorldRenderer::renderMobs() const{
|
||||
for(game::MobPtr mob : m_World->getMobList()){
|
||||
Renderer::Model model;
|
||||
model.vao = mobVAO.get();
|
||||
model.vao = m_MobVao.get();
|
||||
model.positon = {mob->getX(), mob->getY()};
|
||||
Renderer::renderModel(model);
|
||||
}
|
||||
}
|
||||
|
||||
void renderTowers(){
|
||||
void WorldRenderer::renderTowers() const{
|
||||
|
||||
}
|
||||
|
||||
void render(){
|
||||
if(worldVAO == nullptr)
|
||||
void WorldRenderer::render() const{
|
||||
if(m_WorldVao == nullptr)
|
||||
return;
|
||||
renderWorld();
|
||||
renderMobs();
|
||||
renderTowers();
|
||||
}
|
||||
|
||||
void destroy(){
|
||||
if(worldVAO == nullptr)
|
||||
return;
|
||||
worldVAO.reset();
|
||||
worldPtr = nullptr;
|
||||
WorldRenderer::~WorldRenderer(){
|
||||
|
||||
}
|
||||
|
||||
void moveCam(float relativeX, float relativeY, float aspectRatio){
|
||||
if(worldVAO == nullptr)
|
||||
void WorldRenderer::moveCam(float relativeX, float relativeY, float aspectRatio){
|
||||
if(m_WorldVao == nullptr)
|
||||
return;
|
||||
float movementX = -relativeX / zoom * aspectRatio;
|
||||
float movementY = relativeY / zoom;
|
||||
float movementX = -relativeX / m_Zoom * aspectRatio;
|
||||
float movementY = relativeY / m_Zoom;
|
||||
Renderer::setCamMovement({movementX, movementY});
|
||||
}
|
||||
|
||||
void changeZoom(float zoomStep){
|
||||
if(worldVAO == nullptr)
|
||||
void WorldRenderer::changeZoom(float zoomStep){
|
||||
if(m_WorldVao == nullptr)
|
||||
return;
|
||||
static float sensibility = 1.5f;
|
||||
if (zoomStep < 0){
|
||||
zoom /= -zoomStep * sensibility;
|
||||
m_Zoom /= -zoomStep * sensibility;
|
||||
}
|
||||
else{
|
||||
zoom *= zoomStep * sensibility;
|
||||
m_Zoom *= zoomStep * sensibility;
|
||||
}
|
||||
Renderer::setZoom(zoom);
|
||||
Renderer::setZoom(m_Zoom);
|
||||
Renderer::setCamMovement({});
|
||||
}
|
||||
|
||||
void click(int mouseX, int mouseY){
|
||||
if(worldVAO == nullptr)
|
||||
void WorldRenderer::click(int mouseX, int mouseY){
|
||||
if(m_WorldVao == nullptr)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
} // namespace WorldRenderer
|
||||
|
||||
void WorldRenderer::setCamPos(float camX, float camY){
|
||||
m_CamPos = {camX, camY};
|
||||
Renderer::setCamPos(m_CamPos);
|
||||
}
|
||||
|
||||
} // namespace render
|
||||
} // namespace td
|
||||
|
||||
@@ -301,6 +301,7 @@ void tick(){
|
||||
|
||||
void render(){
|
||||
tick();
|
||||
client.render();
|
||||
beginFrame();
|
||||
if (client.isConnected())
|
||||
renderGame();
|
||||
|
||||
Reference in New Issue
Block a user