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_