marker_count;
};
-struct sdf_primative
-{
- v4f origin; /* xyz, yaw */
- /* Cone:
- x base scale
- y height
- */
- v4f info;
-};
-
struct submodel
{
u32 indice_start,
vertex_count;
boxf bbx;
- v3f pivot;
- sdf_primative sdf;
-
- enum esdf_type
- {
- k_sdf_none = 0,
- k_sdf_cone,
- k_sdf_sphere,
- k_sdf_box
- }
- sdf_type;
-
+ v3f pivot; /* same as co? */
+ v4f q;
char name[32];
+ char material[32];
+};
+
+struct classtype_gate
+{
+ u32 target;
};
struct model_marker
v3f co;
v4f q;
v3f s;
+ u32 classtype;
+ u32 offset;
char name[32];
};
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 )
return model_indice_base(mdl) + sub->indice_start;
}
+static void *get_entdata_raw( model *mdl, model_marker *marker )
+{
+ return ((void *)(model_indice_base(mdl) + mdl->indice_count)) +
+ marker->offset;
+}
+
static submodel *submodel_get( model *mdl, const char *name )
{
for( int i=0; i<mdl->layer_count; i++ )
mesh_drawn( sm->indice_start, sm->indice_count );
}
+static void model_unpack_submodel( model *model, glmesh *mesh, submodel *sm )
+{
+ mesh_upload( mesh,
+ model_vertex_base( model ) + sm->vertex_start, sm->vertex_count,
+ model_indice_base( model ) + sm->indice_start, sm->indice_count );
+}
+
static void model_unpack( model *model, glmesh *mesh )
{
u32 offset = model_get_submodel( model, 0 )->vertex_count;