goat3d

annotate src/mesh.h @ 40:a5c5cec3cb88

- added mesh attribute and face append functions - added Int4 constructor - continued the blender exporter - fixed a bug in clean_filename which made it produce unterminated strings - renamed clean_filename to goat3d_clean_filename and made it extern - added call to goat3d_clean_filename in the mesh XML export code to cleanup ctm filenames
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 13 Oct 2013 10:14:19 +0300
parents b35427826b60
children 498ca7ac7047
rev   line source
nuclear@0 1 #ifndef MESH_H_
nuclear@0 2 #define MESH_H_
nuclear@0 3
nuclear@1 4 #include <vector>
nuclear@8 5 #include "object.h"
nuclear@8 6 #include "material.h"
nuclear@1 7
nuclear@8 8 class Node;
nuclear@1 9
nuclear@8 10 struct Face {
nuclear@8 11 int v[3];
nuclear@0 12 };
nuclear@0 13
nuclear@8 14 struct Int4 {
nuclear@8 15 int x, y, z, w;
nuclear@40 16
nuclear@40 17 Int4();
nuclear@40 18 Int4(int x, int y, int z, int w);
nuclear@1 19 };
nuclear@1 20
nuclear@8 21 class Mesh : public Object {
nuclear@8 22 public:
nuclear@8 23 Material *material;
nuclear@1 24
nuclear@8 25 std::vector<Vector3> vertices;
nuclear@8 26 std::vector<Vector3> normals;
nuclear@8 27 std::vector<Vector3> tangents;
nuclear@15 28 std::vector<Vector2> texcoords;
nuclear@8 29 std::vector<Vector4> skin_weights;
nuclear@8 30 std::vector<Int4> skin_matrices;
nuclear@8 31 std::vector<Vector4> colors;
nuclear@8 32 std::vector<Face> faces;
nuclear@1 33
nuclear@15 34 std::vector<Node*> bones;
nuclear@15 35
nuclear@8 36 Mesh();
nuclear@1 37
nuclear@19 38 bool load(const char *fname);
nuclear@19 39 bool save(const char *fname) const;
nuclear@19 40
nuclear@15 41 void set_material(Material *mat);
nuclear@15 42 Material *get_material();
nuclear@15 43 const Material *get_material() const;
nuclear@1 44 };
nuclear@1 45
nuclear@0 46 #endif // MESH_H_