X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_gen.h;h=fac1fe7ebb602dbffac6088bb4101d2a3474e075;hb=5f01e7ab4aad052faad262b55404819dac3d25ce;hp=63cb1ef98f1e91c38799f1f9d2e78a7a65e81b69;hpb=0a33f65eecb5e75cddaefa08d3a5eb1a301d0479;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gen.h b/world_gen.h index 63cb1ef..fac1fe7 100644 --- a/world_gen.h +++ b/world_gen.h @@ -791,6 +791,44 @@ VG_STATIC void world_entities_init( world_instance *world ) world->water.enabled = 1; water_set_surface( world, water->transform.co[1] ); } + + /* volumes */ + for( u32 j=0; jent_volume); j++ ){ + ent_volume *volume = mdl_arritm( &world->ent_volume, j ); + mdl_transform_m4x3( &volume->transform, volume->to_world ); + m4x3_invert_affine( volume->to_world, volume->to_local ); + } + + /* audio packs */ + for( u32 j=0; jent_audio); j++ ){ + ent_audio *audio = mdl_arritm( &world->ent_audio, j ); + + for( u32 k=0; kclip_count; k++ ){ + ent_audio_clip *clip = mdl_arritm( &world->ent_audio_clip, + audio->clip_start+k ); + + if( clip->file.pack_size ){ + u32 size = clip->file.pack_size, + offset = clip->file.pack_offset; + + /* FIXME: Ditchable asset! */ + void *data = mdl_arritm(&world->meta.pack, clip->file.pack_offset); + + clip->clip.path = NULL; + clip->clip.flags = audio->flags; + clip->clip.data = data; + clip->clip.size = size; + } + else{ + clip->clip.path = mdl_pstr( &world->meta, clip->file.pstr_path ); + clip->clip.flags = audio->flags; + clip->clip.data = NULL; + clip->clip.size = 0; + } + + audio_clip_load( &clip->clip, world_global.generic_heap ); + } + } } VG_STATIC void world_load( world_instance *world, const char *path ) @@ -804,6 +842,8 @@ VG_STATIC void world_load( world_instance *world, const char *path ) mdl_load_metadata_block( &world->meta, world_global.generic_heap ); mdl_load_animation_block( &world->meta, world_global.generic_heap ); mdl_load_mesh_block( &world->meta, world_global.generic_heap ); + + /* TODO: This should get a seperate memory area */ mdl_load_pack_block( &world->meta, world_global.generic_heap ); mdl_load_array( &world->meta, &world->ent_gate, @@ -823,6 +863,12 @@ VG_STATIC void world_load( world_instance *world, const char *path ) "ent_route", world_global.generic_heap ); mdl_load_array( &world->meta, &world->ent_water, "ent_water", world_global.generic_heap ); + mdl_load_array( &world->meta, &world->ent_audio_clip, + "ent_audio_clip", world_global.generic_heap ); + mdl_load_array( &world->meta, &world->ent_audio, + "ent_audio", world_global.generic_heap ); + mdl_load_array( &world->meta, &world->ent_volume, + "ent_volume", world_global.generic_heap ); mdl_close( &world->meta ); @@ -838,6 +884,11 @@ VG_STATIC void world_load( world_instance *world, const char *path ) #endif world_routes_ent_init( world ); world_entities_init( world ); + world->volume_bh = bh_create( world_global.generic_heap, + &bh_system_volumes, + world, + mdl_arrcount( &world->ent_volume ), + 1 ); /* main bulk */ world_generate( world );