parade/include/Primitive.h

103 lines
2.3 KiB
C++

#pragma once
#include <glm/glm.hpp>
using namespace glm;
struct Primitive
{
private:
vec3 m_ambientColor;
vec3 m_diffuseColor;
vec3 m_specularColor;
vec3 m_position;
public:
vec3& ambientColor() { return m_ambientColor; }
const vec3& ambientColor() const { return m_ambientColor; }
vec3& diffuseColor() { return m_diffuseColor; }
const vec3& diffuseColor() const { return m_diffuseColor; }
vec3& specularColor() { return m_specularColor; }
const vec3& specularColor() const { return m_specularColor; }
vec3& position() { return m_position; }
const vec3& position() const { return m_position; }
};
struct Sphere : Primitive
{
private:
float m_radius;
public:
float& radius() { return m_radius; }
const float& radius() const { return m_radius; }
};
struct Torus : Primitive
{
private:
float m_outerRadius;
float m_innerRadius;
public:
float& outerRadius() { return m_outerRadius; }
const float& outerRadius() const { return m_outerRadius; }
float& innerRadius() { return m_innerRadius; }
const float& innerRadius() const { return m_innerRadius; }
};
struct Cube : Primitive
{
private:
float m_size;
public:
float& size() { return m_size; }
const float& size() const { return m_size; }
};
struct RoundedCube : Primitive
{
private:
float m_size;
float m_radius;
public:
float& size() { return m_size; }
const float& size() const { return m_size; }
float& radius() { return m_radius; }
const float& radius() const { return m_radius; }
};
struct Cylinder : Primitive
{
private:
float m_height;
float m_radius;
public:
float& height() { return m_height; }
const float& height() const { return m_height; }
float& radius() { return m_radius; }
const float& radius() const { return m_radius; }
};
struct Cone : Primitive
{
private:
float m_height;
float m_radius;
public:
float& height() { return m_height; }
const float& height() const { return m_height; }
float& radius() { return m_radius; }
const float& radius() const { return m_radius; }
};