strange bug and playermodels
authorhgn <hgodden00@gmail.com>
Sat, 25 Nov 2023 20:52:31 +0000 (20:52 +0000)
committerhgn <hgodden00@gmail.com>
Sat, 25 Nov 2023 20:52:31 +0000 (20:52 +0000)
14 files changed:
blender_export.py
entity.h
model.h
models_src/ch_none.mdl
playermodels_src/skaterift_aaron/ch_aaron.mdl
playermodels_src/skaterift_chip/ch_chip.mdl
playermodels_src/skaterift_j/ch_j.mdl [new file with mode: 0644]
playermodels_src/skaterift_jordan/ch_jordan.mdl
playermodels_src/skaterift_new/ch_new.mdl
playermodels_src/skaterift_outlaw/ch_outlaw.mdl
shaders/model_board_view.h
shaders/model_character_view.fs
shaders/model_character_view.h
world_load.c

index b49bf48553a6886d58ab57dc7dc3876aba21d699..168f023d71f6c65c3009adec6edb046a62391603 100644 (file)
@@ -547,6 +547,8 @@ class ent_cubemap(Structure):#{
                ("placeholder",c_uint32*2)]
 #}
 
+print( sizeof(ent_cubemap) )
+
 class ent_miniworld(Structure):#{
    _fields_ = [("transform",mdl_transform),
                ("pstr_world",c_uint32),
index bd487090c7ca30eb631c44d685432756a07a5360..d96ddc997cd4b06630e3a6e9118426da0d389747 100644 (file)
--- a/entity.h
+++ b/entity.h
@@ -517,6 +517,7 @@ struct ent_challenge{
 
 struct ent_relay {
    u32 targets[4][2];
+   u32 targets_events[4];
 };
 
 struct ent_cubemap {
diff --git a/model.h b/model.h
index 34963be69e49ef7e5d67c4c20241c24e7ef6baa0..c054d18127e27e85113a7437cff74f3748ac465a 100644 (file)
--- a/model.h
+++ b/model.h
@@ -310,9 +310,10 @@ static void mdl_load_array_file_buffer( mdl_context *mdl, mdl_array *arr,
          if( l != 1 ) mdl_load_fatal_corrupt( mdl );
       }
       else {
-         assert( stride >= arr->item_size );
          vg_warn( "Applying alignment fixup to array @%p [%u -> %u] x %u\n", 
                   buffer, arr->item_size, stride, arr->item_count );
+         if( stride < arr->item_size )
+            vg_fatal_error( "not safe\n" );
 
          for( u32 i=0; i<arr->item_count; i++ ){
             u64 l = fread( buffer+i*stride, arr->item_size, 1, mdl->file );
@@ -325,7 +326,10 @@ static void mdl_load_array_file_buffer( mdl_context *mdl, mdl_array *arr,
 static void mdl_load_array_file( mdl_context *mdl, mdl_array_ptr *ptr, 
                                  mdl_array *arr, void *lin_alloc, u32 stride )
 {
-   assert( stride >= arr->item_size );
+   if( stride < arr->item_size ){
+      vg_error( "Structure max: %u. Got: %u\n", stride, arr->item_size );
+      vg_fatal_error( "not safe\n" );
+   }
 
    if( arr->item_count ){
       u32 size = stride*arr->item_count;
index f399b772a4ec6515c53b779ac12985f829194e68..fb3b9eaa3700251d89a674f34d793079f7ef636d 100644 (file)
Binary files a/models_src/ch_none.mdl and b/models_src/ch_none.mdl differ
index 70bc33091f1f5f86fcdc4bf86d3c4609e8be43fb..763a8c18b8b124c3707587b0dc781effd2ed3bf1 100644 (file)
Binary files a/playermodels_src/skaterift_aaron/ch_aaron.mdl and b/playermodels_src/skaterift_aaron/ch_aaron.mdl differ
index fec38962f08ad0ae4aad452efbeb3b0782faa14b..bc3d82dcaebe9189ef23b82e1174ff67fc92eaec 100644 (file)
Binary files a/playermodels_src/skaterift_chip/ch_chip.mdl and b/playermodels_src/skaterift_chip/ch_chip.mdl differ
diff --git a/playermodels_src/skaterift_j/ch_j.mdl b/playermodels_src/skaterift_j/ch_j.mdl
new file mode 100644 (file)
index 0000000..90809e5
Binary files /dev/null and b/playermodels_src/skaterift_j/ch_j.mdl differ
index 1113df02e3e44e66b509265b4c9d9c690055e5e0..cdd96f73efc1236110457a369c37091c3f2c46cb 100644 (file)
Binary files a/playermodels_src/skaterift_jordan/ch_jordan.mdl and b/playermodels_src/skaterift_jordan/ch_jordan.mdl differ
index 3e76b81458e988126dd0817320e61371dd1eae26..944eaf9694e6c70d3798447fa681205e9dd73b4a 100644 (file)
Binary files a/playermodels_src/skaterift_new/ch_new.mdl and b/playermodels_src/skaterift_new/ch_new.mdl differ
index 95ca0523cc96fd5d4a195ce8d21357fca5b34a64..902df62705d7c5cc875c3798bd19a3d577dbc447 100644 (file)
Binary files a/playermodels_src/skaterift_outlaw/ch_outlaw.mdl and b/playermodels_src/skaterift_outlaw/ch_outlaw.mdl differ
index e976fe2f70c102fb0c877640ce7e642b7c3a6fcd..1251f0b0d68f98e7f5ef3eb0ff901debc39f9ecd 100644 (file)
@@ -462,7 +462,7 @@ static struct vg_shader _shader_model_board_view = {
 "\n"
 "vec3 character_clearskies_lighting( vec3 normal, float shadow, vec3 halfview )\n"
 "{\n"
-"   float fresnel = step(0.5,1.0 - abs(dot(normal,halfview)));\n"
+"   float fresnel = 0.0*step(0.5,1.0 - abs(dot(normal,halfview)));\n"
 "\n"
 "   vec3  reflect_colour = mix( g_daysky_colour.rgb, g_sunset_colour.rgb, \n"
 "                               g_sunset_phase );\n"
index 49e615c6d6e0a07e72141494d074dfe31ab09ea6..09da174ee94b101ee2ff73dab3fd23df006dd221 100644 (file)
@@ -13,7 +13,7 @@ in vec3 aWorldCo;
 
 vec3 character_clearskies_lighting( vec3 normal, float shadow, vec3 halfview )
 {
-   float fresnel = step(0.5,1.0 - abs(dot(normal,halfview)));
+   float fresnel = 1.0 - abs(dot(normal,halfview));
 
    vec3  reflect_colour = mix( g_daysky_colour.rgb, g_sunset_colour.rgb, 
                                g_sunset_phase );
index 7be4184a5bfce8d7d4d9db01ac9f25ecf667e6ca..c59737feb10f8feb55c5f46c20cab12416b5a08a 100644 (file)
@@ -470,7 +470,7 @@ static struct vg_shader _shader_model_character_view = {
 "\n"
 "vec3 character_clearskies_lighting( vec3 normal, float shadow, vec3 halfview )\n"
 "{\n"
-"   float fresnel = step(0.5,1.0 - abs(dot(normal,halfview)));\n"
+"   float fresnel = 0.0*step(0.5,1.0 - abs(dot(normal,halfview)));\n"
 "\n"
 "   vec3  reflect_colour = mix( g_daysky_colour.rgb, g_sunset_colour.rgb, \n"
 "                               g_sunset_phase );\n"
index 586b804bdab166092747c428bbfd0c78ac3e331f..f196c269450959f960a07a0841ead06193925a40 100644 (file)
@@ -45,6 +45,8 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){
    mdl_load_animation_block( meta, world->heap );
    mdl_load_mesh_block( meta, world->heap );
 
+   vg_info( "%u\n", sizeof(ent_cubemap) );
+
    MDL_LOAD_ARRAY( meta, &world->ent_gate,      ent_gate,       heap );
    MDL_LOAD_ARRAY( meta, &world->ent_camera,    ent_camera,     heap );
    MDL_LOAD_ARRAY( meta, &world->ent_spawn,     ent_spawn,      heap );