#include "common.h"
-#define MDL_VERSION_NR 100
+#define MDL_VERSION_NR 101
enum mdl_shader
{
k_material_flag_grow_grass = 0x00000004,
k_material_flag_grindable = 0x00000008,
k_material_flag_invisible = 0x00000010,
- k_material_flag_boundary = 0x00000020
+ k_material_flag_boundary = 0x00000020,
+ k_material_flag_preview_visibile = 0x00000040
};
#pragma pack(push,1)
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 );
}
}
if( l != 1 )
mdl_load_fatal_corrupt( mdl );
- if( mdl->info.version != MDL_VERSION_NR ){
+ if( mdl->info.version < MDL_VERSION_NR ){
vg_warn( "For model: %s\n", path );
vg_warn( " version: %u (current: %u)\n", mdl->info.version,
MDL_VERSION_NR );
VG_STATIC const char *mdl_pstr( mdl_context *mdl, u32 pstr )
{
- return mdl_arritm( &mdl->strings, pstr );
+ return ((char *)mdl_arritm( &mdl->strings, pstr )) + 4;
}
+
+VG_STATIC int
+mdl_pstreq( mdl_context *mdl, u32 pstr, const char *str, u32 djb2 )
+{
+ u32 hash = *((u32 *)mdl_arritm( &mdl->strings, pstr ));
+ if( hash == djb2 ){
+ if( !strcmp( str, mdl_pstr( mdl, pstr ))) return 1;
+ else return 0;
+ }
+ else return 0;
+}
+
+#define MDL_CONST_PSTREQ( MDL, Q, CONSTSTR )\
+ mdl_pstreq( MDL, Q, CONSTSTR, vg_strdjb2( CONSTSTR ) )
+
/*
* Simple mesh interface for OpenGL
* ----------------------------------------------------------------------------