foot alignment
[carveJwlIkooP6JGAAIwe30JlM.git] / model.h
diff --git a/model.h b/model.h
index 2aaf48358517283fa72d6c40a1e0b1d6194e28a7..467ad989bffab99637ea0e1e00db7a4ed7aa7bce 100644 (file)
--- a/model.h
+++ b/model.h
@@ -1,10 +1,12 @@
+#ifndef MODEL_H
+#define MODEL_H
+
 #include "vg/vg.h"
 
 typedef struct model model;
 typedef struct glmesh glmesh;
 typedef struct submodel submodel;
 typedef struct model_vert model_vert;
-typedef struct scene scene;
 typedef struct sdf_primative sdf_primative;
 typedef enum esdf_type esdf_type;
 
@@ -36,6 +38,7 @@ struct submodel
        vertex_count;
    
    boxf bbx;
+   v3f pivot;
    sdf_primative sdf;
 
    enum esdf_type
@@ -65,6 +68,12 @@ struct glmesh
    u32 indice_count;
 };
 
+#define VERTEX_STANDARD_ATTRIBUTES                    \
+       "layout (location=0) in vec3 a_co;"                \
+   "layout (location=1) in vec3 a_norm;"              \
+   "layout (location=2) in vec4 a_colour;"            \
+   "layout (location=3) in vec2 a_uv;"
+
 static void mesh_upload( glmesh *mesh,
       model_vert *verts, u32 vert_count,
       u32 *indices, u32 indice_count )
@@ -183,3 +192,12 @@ static void model_unpack( model *model, glmesh *mesh )
    mesh_upload( mesh, model_vertex_base( model ), model->vertex_count,
                        model_indice_base( model ), model->indice_count );
 }
+
+static void mesh_free( glmesh *mesh )
+{
+   glDeleteVertexArrays( 1, &mesh->vao );
+   glDeleteBuffers( 1, &mesh->ebo );
+   glDeleteBuffers( 1, &mesh->vbo );
+}
+
+#endif