nuclear@1: #ifndef OBJECT_H_ nuclear@1: #define OBJECT_H_ nuclear@1: nuclear@12: #include "vmath.h" nuclear@13: #include "snode.h" nuclear@17: #include "material.h" nuclear@12: nuclear@12: class Object : public SceneNode { nuclear@1: public: nuclear@17: Material mtl; nuclear@17: nuclear@1: Object(); nuclear@1: virtual ~Object(); nuclear@17: nuclear@17: virtual Vector3 hit_normal(const RayHit &hit) const; nuclear@1: }; nuclear@1: nuclear@6: class Sphere : public Object { nuclear@1: public: nuclear@1: Sphere(); nuclear@1: ~Sphere(); nuclear@1: nuclear@14: void draw(bool emph = false) const; nuclear@12: nuclear@17: bool intersect(const Ray &ray, RayHit *hit = 0) const; nuclear@17: Vector3 hit_normal(const RayHit &hit) const; nuclear@12: }; nuclear@12: nuclear@12: class Box : public Object { nuclear@12: public: nuclear@12: Box(); nuclear@12: ~Box(); nuclear@12: nuclear@14: void draw(bool emph = false) const; nuclear@12: nuclear@17: bool intersect(const Ray &ray, RayHit *hit = 0) const; nuclear@17: Vector3 hit_normal(const RayHit &hit) const; nuclear@1: }; nuclear@1: nuclear@1: #endif // OBJECT_H_