tavli

annotate src/object.h @ 11:a8e26f163f99

poulia
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 27 Jun 2015 08:01:51 +0300
parents a0d30f6f20d4
children 283eb6e9f0a3
rev   line source
nuclear@1 1 #ifndef OBJECT_H_
nuclear@1 2 #define OBJECT_H_
nuclear@1 3
nuclear@1 4 #include "mesh.h"
nuclear@3 5 #include "geom.h"
nuclear@6 6 #include "vmath/vmath.h"
nuclear@6 7
nuclear@6 8 struct Material {
nuclear@6 9 Vector3 diffuse;
nuclear@6 10 Vector3 specular;
nuclear@6 11 float shininess;
nuclear@6 12 float alpha;
nuclear@6 13 };
nuclear@1 14
nuclear@1 15 class Object {
nuclear@1 16 private:
nuclear@1 17 Mesh *mesh;
nuclear@1 18 Matrix4x4 matrix;
nuclear@4 19 unsigned int tex;
nuclear@6 20 Matrix4x4 tex_matrix;
nuclear@1 21
nuclear@1 22 public:
nuclear@6 23 Material mtl;
nuclear@6 24
nuclear@1 25 Object();
nuclear@1 26 ~Object();
nuclear@1 27
nuclear@1 28 Matrix4x4 &xform();
nuclear@1 29 const Matrix4x4 &xform() const;
nuclear@1 30
nuclear@6 31 Matrix4x4 &tex_xform();
nuclear@6 32 const Matrix4x4 &tex_xform() const;
nuclear@6 33
nuclear@1 34 void set_mesh(Mesh *m);
nuclear@1 35 Mesh *get_mesh() const;
nuclear@1 36
nuclear@4 37 void set_texture(unsigned int tex);
nuclear@4 38
nuclear@1 39 void draw() const;
nuclear@11 40 void draw_wire(const Vector4 &col = Vector4(1, 1, 1, 1)) const;
nuclear@11 41 void draw_vertices(const Vector4 &col = Vector4(1, 0.3, 0.2, 1)) const;
nuclear@11 42 void draw_normals(float len = 1.0, const Vector4 &col = Vector4(0.1, 0.2, 1.0, 1)) const;
nuclear@11 43 void draw_tangents(float len = 1.0, const Vector4 &col = Vector4(0.1, 1.0, 0.2, 1)) const;
nuclear@3 44
nuclear@3 45 bool intersect(const Ray &ray, HitPoint *hit) const;
nuclear@1 46 };
nuclear@1 47
nuclear@1 48 #endif // OBJECT_H_