#include "glm.hpp" #include "ext.hpp" #include "./Spaceship.h" #include "./GameObject.h" #pragma once class Sun : public GameObject { public: glm::vec3 sunPos; glm::vec3 sunDir; glm::vec3 sunColor; double scale; GLuint program; Core::RenderContext sphereContext; glm::mat4 positionMatrix; Sun(GLuint program, Core::RenderContext sphereContext, glm::vec3 pos, glm::vec3 dir, glm::vec3 color, double scale) { this->program = program; this->sphereContext = sphereContext; this->sunPos = pos; this->sunDir = dir; this->sunColor = color; this->scale = scale; } Sun(){} void draw() { glUseProgram(program); glm::mat4 viewProjectionMatrix = Core::createPerspectiveMatrix() * Spaceship::getInstance()->createCameraMatrix(); positionMatrix = glm::translate(sunPos); glm::mat4 transformation = viewProjectionMatrix * positionMatrix * glm::scale(glm::vec3(scale)); glUniformMatrix4fv(glGetUniformLocation(program, "transformation"), 1, GL_FALSE, (float*)&transformation); glUniform3f(glGetUniformLocation(program, "color"), sunColor.x / 2, sunColor.y / 2, sunColor.z / 2); glUniform1f(glGetUniformLocation(program, "exposition"), 1.f); Core::DrawContext(sphereContext); } glm::vec3 getPosition() { return sunPos; } glm::vec3 getColor() { return sunColor; } glm::mat4 getPositionMatrix() override { return positionMatrix; } };