+ | Material system

This commit is contained in:
TheRedShip
2024-12-24 12:02:52 +01:00
parent 216e9a684a
commit 2f217b50e9
5 changed files with 18 additions and 16 deletions

View File

@ -25,15 +25,15 @@ typedef struct s_Material
class Object
{
protected:
glm::vec3 _position;
Material _material;
glm::vec3 _position;
const Material *_material;
public:
Object(const glm::vec3& position, const Material& material) : _position(position), _material(material) {}
Object(const glm::vec3& position, const Material *material) : _position(position), _material(material) {}
virtual ~Object() = default;
const glm::vec3& getPosition() const { return (_position); }
const Material& getMaterial() const { return (_material); }
const glm::vec3 &getPosition() const { return (_position); }
const Material *getMaterial() const { return (_material); }
enum class Type {
SPHERE,

View File

@ -37,13 +37,13 @@ class Scene
~Scene();
Camera *getCamera(void) const;
void addObject(std::unique_ptr<Object> object);
void addObject(Object *object);
void updateGPUData();
const std::vector<GPUObject>& getGPUData() const;
private:
std::vector<std::unique_ptr<Object>> _objects;
std::vector<Object *> _objects;
std::vector<GPUObject> _gpuObjects;
Camera *_camera;

View File

@ -18,7 +18,7 @@
class Sphere : public Object
{
public:
Sphere(const glm::vec3& position, float radius, const Material& material)
Sphere(const glm::vec3& position, float radius, const Material *material)
: Object(position, material), _radius(radius) {}
float getRadius() const { return (_radius); }