2014-10-22 22:13:09 +00:00
|
|
|
#include "object.hh"
|
|
|
|
|
2014-11-08 00:17:23 +00:00
|
|
|
Object::Object(Model model, Material material, glm::vec3 position, glm::vec3 rotation,
|
2014-11-08 01:45:32 +00:00
|
|
|
glm::vec3 velocity, glm::vec3 angularVelocity, ACGL::OpenGL::SharedShaderProgram shader) :
|
2014-10-22 22:53:00 +00:00
|
|
|
Entity(position, rotation) {
|
2014-11-13 00:22:33 +00:00
|
|
|
this->model = model;
|
2014-11-08 00:17:23 +00:00
|
|
|
this->material = material;
|
2014-10-22 22:13:09 +00:00
|
|
|
this->velocity = velocity;
|
|
|
|
this->angularVelocity = angularVelocity;
|
2014-11-08 01:45:32 +00:00
|
|
|
this->shader = shader;
|
2014-10-22 22:13:09 +00:00
|
|
|
}
|
|
|
|
|
2014-10-24 08:48:45 +00:00
|
|
|
Object::Object() {
|
|
|
|
}
|
|
|
|
|
2014-10-22 22:13:09 +00:00
|
|
|
Object::~Object() {
|
|
|
|
}
|
|
|
|
|
|
|
|
void Object::render() {
|
2014-11-13 00:22:33 +00:00
|
|
|
// set lightning parameters for this object
|
2014-11-08 00:44:24 +00:00
|
|
|
shader->setUniform("ambientFactor", material.getAmbientFactor());
|
|
|
|
shader->setUniform("diffuseFactor", material.getDiffuseFactor());
|
|
|
|
shader->setUniform("specularFactor", material.getSpecularFactor());
|
|
|
|
shader->setUniform("shininess", material.getShininess());
|
2014-11-08 00:17:23 +00:00
|
|
|
shader->setTexture("uTexture", material.getReference(), 0);
|
2014-11-13 00:22:33 +00:00
|
|
|
// set model matrix
|
|
|
|
glm::mat4 rotationMatrix = glm::rotate<float>(this->getRotation()[0], glm::vec3(1.0f, 0.0f, 0.0f)) *
|
|
|
|
glm::rotate<float>(this->getRotation()[1], glm::vec3(0.0f, 1.0f, 0.0f)) * glm::rotate<float>(this->getRotation()[2], glm::vec3(0.0f, 0.0f, 1.0f));
|
|
|
|
glm::mat4 modelMatrix = glm::translate(this->getPosition()) * rotationMatrix * glm::scale<float>(glm::vec3(model.getScale()));
|
|
|
|
shader->setUniform( "modelMatrix", modelMatrix);
|
|
|
|
// draw
|
|
|
|
model.getReference()->render();
|
2014-10-22 22:13:09 +00:00
|
|
|
}
|