-
Notifications
You must be signed in to change notification settings - Fork 1
/
object.h
35 lines (31 loc) · 711 Bytes
/
object.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//object.h
#ifndef _OBJECT_H_
#define _OBJECT_H_
#include "ray.h"
#include "vector3D.h"
#include "color.h"
#include "material.h"
#include "lightsource.h"
class Object
{
protected:
Material *material;
bool isSolid;
LightSource* lightSource;
public:
Object(Material *mat): material(mat) {
lightSource = nullptr;
}
virtual bool intersect(Ray& ray) const = 0;
virtual Color shade(const Ray& ray) const
{
return material->shade(ray, isSolid);
}
void setLightSource(LightSource *ls){ lightSource = ls; }
bool isLightSource() const { return lightSource!=nullptr; };
const LightSource* getLightSource() const { return lightSource; };
Material *getMaterial() const {
return material;
}
};
#endif