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_