Skip to content
Snippets Groups Projects
Entity.hpp 1.15 KiB
Newer Older
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>

#include <overkill/Config.hpp>

namespace overkill 
{

class Entity
{
protected:
    C::Tag m_tag;
    glm::vec3 m_position;
    glm::vec3 m_rotation;
    glm::vec3 m_velocity;
    glm::vec3 m_angularVelocity;

public:
    Entity(C::Tag tag, glm::vec3 pos, glm::vec3 rot, glm::vec3 vel, glm::vec3 angVel);
    glm::vec3 getPosition();
    glm::vec3 getRotation();
    glm::vec3 getVelocity();
    glm::vec3 getAngularVelocity();
    void setPosition(glm::vec3 pos);
    void setRotation(glm::vec3 rot);
    void setVelocity(glm::vec3 vel);
    void setAngularVelocity(glm::vec3 angVel); 

	const glm::vec3 right{ 1.0f,0.0f,0.0f };
	const glm::vec3 up{ 0.0f,1.0f,0.0f };
	const glm::vec3 forward{ 0.0f,0.0f,1.0f };
	const glm::vec3 one{ 1.0f, 1.0f, 1.0f };
	const glm::vec3 zero{ 0.0f ,0.0f ,0.0f };

	glm::vec3 m_position = zero;
	glm::vec3 m_rotation = zero;
	glm::vec3 m_scale    = one;

	auto modelToWorld()->glm::mat4;
};


struct Light : public Transform
{
	glm::vec3 intensities = one; //a.k.a the color of the light
};