erebus

annotate liberebus/src/object.h @ 26:c8a6fb04fefa

multithreadededit
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 01 Jun 2014 19:19:40 +0300
parents 93894c232d65
children bab25c0ce337
rev   line source
nuclear@2 1 #ifndef OBJECT_H_
nuclear@2 2 #define OBJECT_H_
nuclear@2 3
nuclear@2 4 #include <string>
nuclear@2 5 #include "vmath/ray.h"
nuclear@2 6
nuclear@2 7 class Object;
nuclear@17 8 class SceneNode;
nuclear@2 9
nuclear@17 10 class RayHit {
nuclear@17 11 public:
nuclear@2 12 float dist;
nuclear@4 13 Ray world_ray, local_ray;
nuclear@2 14
nuclear@17 15 const SceneNode *node;
nuclear@2 16 const Object *obj, *subobj;
nuclear@17 17
nuclear@17 18 RayHit();
nuclear@17 19
nuclear@17 20 Vector3 calc_normal() const;
nuclear@17 21 Vector3 calc_tangent() const;
nuclear@17 22 Vector2 calc_texcoords() const;
nuclear@2 23 };
nuclear@2 24
nuclear@2 25 enum class ObjType { null, geom, camera };
nuclear@2 26
nuclear@2 27 class Object {
nuclear@2 28 private:
nuclear@2 29 std::string name;
nuclear@2 30
nuclear@2 31 public:
nuclear@2 32 Object();
nuclear@2 33 virtual ~Object() = default;
nuclear@2 34
nuclear@2 35 virtual ObjType get_type() const;
nuclear@2 36
nuclear@2 37 virtual void set_name(const char *name);
nuclear@2 38 virtual const char *get_name() const;
nuclear@2 39
nuclear@2 40 virtual bool intersect(const Ray &ray, RayHit *hit = 0) const;
nuclear@2 41 };
nuclear@2 42
nuclear@2 43 #endif // OBJECT_H_