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_
|