tavli
annotate src/object.h @ 14:283eb6e9f0a3
scenery
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 28 Jun 2015 07:44:23 +0300 |
parents | a8e26f163f99 |
children | b1a195c3ee16 |
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@14 | 13 |
nuclear@14 | 14 Material(); |
nuclear@14 | 15 }; |
nuclear@14 | 16 |
nuclear@14 | 17 struct RenderOps { |
nuclear@14 | 18 bool zwrite; |
nuclear@14 | 19 |
nuclear@14 | 20 RenderOps(); |
nuclear@14 | 21 void setup() const; |
nuclear@6 | 22 }; |
nuclear@1 | 23 |
nuclear@1 | 24 class Object { |
nuclear@1 | 25 private: |
nuclear@1 | 26 Mesh *mesh; |
nuclear@1 | 27 Matrix4x4 matrix; |
nuclear@4 | 28 unsigned int tex; |
nuclear@6 | 29 Matrix4x4 tex_matrix; |
nuclear@1 | 30 |
nuclear@1 | 31 public: |
nuclear@6 | 32 Material mtl; |
nuclear@14 | 33 RenderOps rop; |
nuclear@6 | 34 |
nuclear@1 | 35 Object(); |
nuclear@1 | 36 ~Object(); |
nuclear@1 | 37 |
nuclear@1 | 38 Matrix4x4 &xform(); |
nuclear@1 | 39 const Matrix4x4 &xform() const; |
nuclear@1 | 40 |
nuclear@6 | 41 Matrix4x4 &tex_xform(); |
nuclear@6 | 42 const Matrix4x4 &tex_xform() const; |
nuclear@6 | 43 |
nuclear@1 | 44 void set_mesh(Mesh *m); |
nuclear@1 | 45 Mesh *get_mesh() const; |
nuclear@1 | 46 |
nuclear@4 | 47 void set_texture(unsigned int tex); |
nuclear@4 | 48 |
nuclear@1 | 49 void draw() const; |
nuclear@11 | 50 void draw_wire(const Vector4 &col = Vector4(1, 1, 1, 1)) const; |
nuclear@11 | 51 void draw_vertices(const Vector4 &col = Vector4(1, 0.3, 0.2, 1)) const; |
nuclear@11 | 52 void draw_normals(float len = 1.0, const Vector4 &col = Vector4(0.1, 0.2, 1.0, 1)) const; |
nuclear@11 | 53 void draw_tangents(float len = 1.0, const Vector4 &col = Vector4(0.1, 1.0, 0.2, 1)) const; |
nuclear@3 | 54 |
nuclear@3 | 55 bool intersect(const Ray &ray, HitPoint *hit) const; |
nuclear@1 | 56 }; |
nuclear@1 | 57 |
nuclear@1 | 58 #endif // OBJECT_H_ |