51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#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;
|
|
}
|
|
}; |