v4f q;
};
+static void transform_identity( mdl_transform *transform )
+{
+ v3_zero( transform->co );
+ q_identity( transform->q );
+ v3_fill( transform->s, 1.0f );
+}
+
+static void mdl_transform_vector( mdl_transform *transform, v3f vec, v3f dest )
+{
+ v3_mul( transform->s, vec, dest );
+ q_mulv( transform->q, dest, dest );
+}
+
+static void mdl_transform_point( mdl_transform *transform, v3f co, v3f dest )
+{
+ mdl_transform_vector( transform, co, dest );
+ v3_add( transform->co, dest, dest );
+}
+
+static void mdl_transform_mul( mdl_transform *a, mdl_transform *b,
+ mdl_transform *d )
+{
+ mdl_transform_point( a, b->co, d->co );
+ q_mul( a->q, b->q, d->q );
+ q_normalize( d->q );
+ v3_mul( a->s, b->s, d->s );
+}
+
struct mdl_material
{
u32 pstr_name,
u32 size = arr->item_size*arr->item_count;
return vg_align8(size);
}
- else
- return 0;
+ else return 0;
}
VG_STATIC const char *mdl_pstr( mdl_context *mdl, u32 pstr );
fseek( mdl->file, mdl->pack_base_offset+info->pack_offset, SEEK_SET );
u64 l = fread( dst, info->pack_size, 1, mdl->file );
- if( l != 1 )
- mdl_load_fatal_corrupt( mdl );
+ if( l != 1 ) mdl_load_fatal_corrupt( mdl );
}
/* TODO: Rename these */
-VG_STATIC
-void mdl_load_array_file_buffer( mdl_context *mdl, mdl_array *arr,
- void *buffer )
+VG_STATIC void mdl_load_array_file_buffer( mdl_context *mdl, mdl_array *arr,
+ void *buffer )
{
if( arr->item_count ){
fseek( mdl->file, arr->file_offset, SEEK_SET );
u64 l = fread( buffer, arr->item_size*arr->item_count, 1, mdl->file );
- if( l != 1 )
- mdl_load_fatal_corrupt( mdl );
+ if( l != 1 ) mdl_load_fatal_corrupt( mdl );
}
}