tavli
annotate src/object.h @ 24:0aadb519b5ee
correct highlighting
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 08 Jul 2015 15:11:58 +0300 |
parents | 283eb6e9f0a3 |
children |
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@15 | 30 unsigned int sdr; |
nuclear@1 | 31 |
nuclear@1 | 32 public: |
nuclear@6 | 33 Material mtl; |
nuclear@14 | 34 RenderOps rop; |
nuclear@6 | 35 |
nuclear@1 | 36 Object(); |
nuclear@1 | 37 ~Object(); |
nuclear@1 | 38 |
nuclear@1 | 39 Matrix4x4 &xform(); |
nuclear@1 | 40 const Matrix4x4 &xform() const; |
nuclear@1 | 41 |
nuclear@6 | 42 Matrix4x4 &tex_xform(); |
nuclear@6 | 43 const Matrix4x4 &tex_xform() const; |
nuclear@6 | 44 |
nuclear@1 | 45 void set_mesh(Mesh *m); |
nuclear@1 | 46 Mesh *get_mesh() const; |
nuclear@1 | 47 |
nuclear@4 | 48 void set_texture(unsigned int tex); |
nuclear@15 | 49 void set_shader(unsigned int sdr); |
nuclear@4 | 50 |
nuclear@1 | 51 void draw() const; |
nuclear@11 | 52 void draw_wire(const Vector4 &col = Vector4(1, 1, 1, 1)) const; |
nuclear@11 | 53 void draw_vertices(const Vector4 &col = Vector4(1, 0.3, 0.2, 1)) const; |
nuclear@11 | 54 void draw_normals(float len = 1.0, const Vector4 &col = Vector4(0.1, 0.2, 1.0, 1)) const; |
nuclear@11 | 55 void draw_tangents(float len = 1.0, const Vector4 &col = Vector4(0.1, 1.0, 0.2, 1)) const; |
nuclear@3 | 56 |
nuclear@3 | 57 bool intersect(const Ray &ray, HitPoint *hit) const; |
nuclear@1 | 58 }; |
nuclear@1 | 59 |
nuclear@1 | 60 #endif // OBJECT_H_ |