Dont look master
authorhgn <hgodden00@gmail.com>
Sun, 29 Jun 2025 13:01:06 +0000 (14:01 +0100)
committerhgn <hgodden00@gmail.com>
Sun, 29 Jun 2025 13:01:06 +0000 (14:01 +0100)
build.c
src/metascene.c
src/world_gen.c

diff --git a/build.c b/build.c
index 6982e7820617c2cdf6d07ff95779a61cb17157d4..d110b588329b37ec6df92703293578dfe8d2fe1c 100644 (file)
--- a/build.c
+++ b/build.c
@@ -464,11 +464,52 @@ void s_dbtest_build(void)
    vg_compiler_run( &test_proj, &vg_test_env, &conf, sources.buffer, "dbtest", k_obj_type_exe );
 }
 
+#include "vg/vg_kv.h"
+#include "vg/vg_kv.c"
+
 int main( int argc, const char *argv[] )
 {
    vg_log_init();
    _vg_opt_init( argc, argv );
 
+   vg_stack_allocator stacky;
+   vg_stack_init( &stacky, NULL, 0, "Stacky" );
+   vg_stack_set_flags( &stacky, VG_STACK_ALLOCATOR_METADATA|VG_STACK_ALLOCATOR_DOUBLE_IF_FULL );
+   u32 size;
+   const char *src = vg_file_read( &stacky, "/home/harry/Documents/vg_res/test.kv", &size, 1 );
+
+   if( src )
+   {
+      vg_kvs kvs;
+      vg_kv_parse( &kvs, src, &stacky );
+      vg_kv_print_info( &kvs );
+      vg_kv_print_tree( &kvs, 0, 0 );
+
+      u32 db = vg_kv_find( &kvs, 0, "skaterift_database" );
+      if( db )
+      {
+         vg_success( "Found db\n" );
+
+         u32 users = vg_kv_find( &kvs, db, "users" );
+         if( users )
+         {
+            vg_success( "Found users\n" );
+
+            u32 vt = vg_kv_find( &kvs, users, "value_type" );
+            if( vt )
+            {
+               u32 val_length;
+               const char *val = vg_kv_value( &kvs, vt, &val_length );
+
+               if( val )
+                  vg_success( "-> %.*s\n", val_length, val );
+            }
+         }
+      }
+   }
+
+   return 0;
+
    const char *arg;
 
    if( (arg = vg_long_opt_arg( "glsl-dir", "Specify output directory for preprocessed GLSL" )) )
index 2d956ad058224a0ed96a51b4d7e2e8967e8ec29c..6a6b5c866f5acef42870b02baf53bf4f9e285c64 100644 (file)
@@ -178,7 +178,7 @@ static void cutscene_load_thread( vg_async_task *task )
 
       if( !ref )
       {
-         vg_stack_extend_last( _cutscene.stack, sizeof(struct model_ref) );
+         _cutscene.refs = vg_stack_extend_last( _cutscene.stack, sizeof(struct model_ref) );
          ref_id = _cutscene.unique_refs;
          ref = &_cutscene.refs[ ref_id ];
          ref->name = name;
@@ -213,9 +213,7 @@ static void cutscene_load_thread( vg_async_task *task )
       u32 skeleton_count = ref->mdl.armature_count;
       if( skeleton_count )
       {
-         ref->skeletons = vg_stack_allocate( _cutscene.stack, sizeof(struct cs_skeleton) * skeleton_count,
-                                             8, "Skeletons" );
-
+         ref->skeletons = vg_stack_allocate( _cutscene.stack, sizeof(struct cs_skeleton) * skeleton_count, 8, "Skeletons" );
          ref->total_skinning_bones = 0;
          for( u32 j=0; j<skeleton_count; j ++ )
          {
index 81cadf2a1fba7b9f6fee253981c848746e156023..5ba4b68f0293c2e0a1bdcc2286bbbc12777b1890 100644 (file)
@@ -255,7 +255,7 @@ void world_gen_generate_meshes( world_instance *world )
 
    world->scene_geo.max_indices = world->scene_geo.indice_count;
    world->scene_geo.max_vertices = world->scene_geo.vertex_count;
-   vg_stack_resize_last( world->stack, scene_mem_required( &world->scene_geo ) );
+   buffer = vg_stack_resize_last( world->stack, scene_mem_required( &world->scene_geo ) );
 
    world->scene_geo.arrvertices = (scene_vert *)(buffer);
    world->scene_geo.arrindices = (u32 *)(buffer + new_vert_size);