103 lines
2.3 KiB
C++
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; }
|
|
}; |