From 025e9eb2a493d2da7c38cbb9fb1345f6c8c66f17 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 19 Sep 2024 21:02:21 +0100 Subject: [PATCH] Metascene compiler & load in-game for player. (BREAKS NPC ANIMATIONS) --- build.c | 2 + content_skaterift/metascenes/skater.ms | Bin 0 -> 1018752 bytes scene_desc.md.html | 32 ++ skaterift_blender/__init__.py | 2 + skaterift_blender/sr_bin.py | 150 +++++++ skaterift_blender/sr_main.py | 575 ++++++++++++------------- skaterift_blender/sr_mat.py | 4 +- skaterift_blender/sr_metascene.py | 433 +++++++++++++++++++ src/array_file.c | 123 ++++++ src/array_file.h | 41 ++ src/build_control_overlay.c | 6 +- src/control_overlay.c | 6 +- src/ent_challenge.c | 12 +- src/ent_glider.c | 2 +- src/ent_miniworld.c | 20 +- src/ent_npc.c | 33 +- src/ent_objective.c | 4 +- src/ent_region.c | 30 +- src/ent_relay.c | 2 +- src/ent_route.c | 4 +- src/ent_skateshop.c | 32 +- src/ent_tornado.c | 24 +- src/ent_traffic.c | 10 +- src/entity.c | 8 +- src/entity.h | 2 +- src/font.h | 42 +- src/gui.h | 6 +- src/menu.c | 30 +- src/metascene.c | 45 ++ src/metascene.h | 76 ++++ src/model.c | 211 ++------- src/model.h | 68 +-- src/player.c | 2 +- src/player.h | 2 + src/player_api.h | 3 +- src/player_dead.c | 2 +- src/player_dead.h | 2 +- src/player_drive.c | 4 +- src/player_drive.h | 2 +- src/player_glide.c | 26 +- src/player_glide.h | 2 +- src/player_ragdoll.c | 6 +- src/player_render.c | 74 +++- src/player_render.h | 5 +- src/player_skate.c | 65 +-- src/player_skate.h | 12 +- src/player_walk.c | 94 ++-- src/player_walk.h | 6 +- src/scene.c | 4 +- src/skaterift.c | 3 + src/skeleton.h | 196 ++++----- src/workshop.c | 15 +- src/world.h | 2 +- src/world_entity.c | 190 ++++---- src/world_gate.c | 28 +- src/world_gen.c | 58 +-- src/world_load.c | 75 ++-- src/world_map.c | 28 +- src/world_render.c | 58 +-- src/world_routes.c | 169 ++++---- src/world_routes_ui.c | 10 +- src/world_sfd.c | 20 +- src/world_volumes.c | 4 +- 63 files changed, 1990 insertions(+), 1212 deletions(-) create mode 100644 content_skaterift/metascenes/skater.ms create mode 100644 scene_desc.md.html create mode 100644 skaterift_blender/sr_bin.py create mode 100644 skaterift_blender/sr_metascene.py create mode 100644 src/array_file.c create mode 100644 src/array_file.h create mode 100644 src/metascene.c create mode 100644 src/metascene.h diff --git a/build.c b/build.c index 692e941..dea267c 100644 --- a/build.c +++ b/build.c @@ -10,6 +10,7 @@ #include "vg/vg_m.h" #include "src/model.h" #include "src/model.c" +#include "src/array_file.c" /* * Addon metadata utilities @@ -143,6 +144,7 @@ void build_game_content( struct vg_project *proj ) vg_symlink( proj, "content_skaterift/maps", "maps" ); vg_symlink( proj, "content_skaterift/sound", "sound" ); vg_symlink( proj, "content_skaterift/playermodels", "playermodels" ); + vg_symlink( proj, "content_skaterift/metascenes", "metascenes" ); vg_syscall( "mkdir -p bin/%s/cfg", proj->uid.buffer ); vg_syscall( "mkdir -p bin/%s/savedata", proj->uid.buffer ); vg_syscall( "mkdir -p bin/%s/tools", proj->uid.buffer ); diff --git a/content_skaterift/metascenes/skater.ms b/content_skaterift/metascenes/skater.ms new file mode 100644 index 0000000000000000000000000000000000000000..d14e95623f7cca38b981ff1f8d586ffd644c9fdb GIT binary patch literal 1018752 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

MQXYxoE!DHWc48?2M4{^W`xCcx_|9h2(UgOoc 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 literal 0 HcmV?d00001 diff --git a/scene_desc.md.html b/scene_desc.md.html new file mode 100644 index 0000000..2d2b07e --- /dev/null +++ b/scene_desc.md.html @@ -0,0 +1,32 @@ +**VG Scene setup** + +******************************************************************************** +* Source .blend tree ┊ Output Directory +*------------------------------------------------------------------------------- +* ┊ +* ┊ models/ +* characters.blend -----------------------------------+----> ch_Marc.mdl +* | ┊ '----> ch_Jeff.mdl +* +--Marc-----. ┊ +* '--Jeff | scenes.blend --------+----> mp_Home.mdl +* | | ┊ '----> mp_River.mdl +* | +--Home ┊ +* | '--River----. ┊ +* | | ┊ metascenes/ +* | cutscene.001.blend ------)------------> cutscene.001.ms +* | | | ┊ +* |'--> +--<->Marc | ┊ +* | '--<->River <----------' ┊ +* | ┊ +* | skaterift_anims.blend ----------------> skaterift_anims.ms +* | | ┊ +* '--> +--<->Marc ┊ +* ┊ +******************************************************************************** + +- Metascenes export all the animations for every object in the blend file +- The only things that are *in* metascene files are references to other files, + cameras, and animation data. +- Geometry is exported using the regular Skate-Rift Exporter + + diff --git a/skaterift_blender/__init__.py b/skaterift_blender/__init__.py index 3285732..3017a73 100644 --- a/skaterift_blender/__init__.py +++ b/skaterift_blender/__init__.py @@ -25,10 +25,12 @@ def _include( file ): src.close() #} +_include( "sr_bin.py" ) _include( "sr_main.py" ) _include( "sr_so.py" ) _include( "sr_shader.py" ) _include( "sr_mat.py" ) +_include( "sr_metascene.py" ) out.close() diff --git a/skaterift_blender/sr_bin.py b/skaterift_blender/sr_bin.py new file mode 100644 index 0000000..cd91873 --- /dev/null +++ b/skaterift_blender/sr_bin.py @@ -0,0 +1,150 @@ +from ctypes import * + +print( "sr_bin" ) + +class bin_string_cache: +#{ + def __init__(_, alignment): + #{ + _.table = {} + _.buffer = bytearray() + _.alignment = alignment + #} +#} + +def int_align_to( v, align ): +#{ + while(v%align)!=0: v += 1 + return v +#} + +def bytearray_align_to( buffer, align, w=b'\xaa' ): +#{ + while (len(buffer) % align) != 0: buffer.extend(w) +#} + +def fp_align( fp, align, w=b'\xaa' ): +#{ + while (fp.tell() % align) != 0: fp.write(w) +#} + +def bytearray_print_hex( s, w=16 ): +#{ + for r in range((len(s)+(w-1))//w):#{ + i0=(r+0)*w + i1=min((r+1)*w,len(s)) + print( F'{r*w:06x}| \x1B[31m', end='') + print( F"{' '.join('{:02x}'.format(x) for x in s[i0:i1]):<48}",end='' ) + print( "\x1B[0m", end='') + print( ''.join(chr(x) if (x>=33 and x<=126) else '.' for x in s[i0:i1] ) ) + #} +#} + +def pack_string( cache, s ): +#{ + if s in cache.table: return cache.table[s] + + index = len( cache.buffer ) + cache.table[s] = index + cache.buffer.extend( c_uint32(hash_djb2(s)) ) + cache.buffer.extend( s.encode('utf-8') ) + cache.buffer.extend( b'\0' ) + + bytearray_align_to( cache.buffer, cache.alignment ) + return index +#} + +def vg_str_bin( s ): +#{ + decoded = bytearray() + for i in range(len(s)//2):#{ + c = (ord(s[i*2+0])-0x41) + c |= (ord(s[i*2+1])-0x41)<<4 + decoded.extend(bytearray(c_uint8(c))) #?? + #} + return decoded +#} + +# +# Array file type. +# ----------------------------------------------- +# + +class array_file_meta(Structure): +#{ + _fields_ = [("file_offset",c_uint32), + ("item_count",c_uint32), + ("item_size",c_uint32), + ("name",c_byte*16)] +#} + +def str_into_buf( str, buf ): +#{ + for i in range(len(str)): + buf[i] = ord(str[i]) +#} + +# +# header must have the attribute 'index' which is an array_file_meta() +# arrays must be a dictionary with entries of bytearray or ctypes struct arrays +# +def array_file_write( path, header, arrays, padding=8 ): +#{ + num_arrays = len(arrays) + header_size = int_align_to( sizeof(header), padding ) + index_size = int_align_to( sizeof(array_file_meta)*num_arrays, padding ) + + fp = open( path, "wb" ) + + # Header & index ptr + # + header.index.file_offset = header_size + header.index.item_count = len(arrays) + header.index.item_size = sizeof(array_file_meta) + str_into_buf( 'index', header.index.name ) + fp.write( header ) + fp_align( fp, padding ) + + # Create index + # + file_offset = header_size + index_size + for name, arr in arrays.items(): + #{ + meta = array_file_meta() + str_into_buf( name, meta.name ) + meta.file_offset = file_offset + meta.item_count = len(arr) + + if type(arr) is bytearray: + meta.item_size = 1 + else: + meta.item_size = sizeof(arr[0]) if len(arr) else 0 + + print( F'[AF] {name:>16}| {meta.item_count: 8} 0x{file_offset:02x}' ) + file_offset += int_align_to( meta.item_size*meta.item_count, padding ) + + fp.write( meta ) + #} + fp_align( fp, padding ) + + # Write actual arrays + # + for name, arr in arrays.items(): + #{ + if type(arr) is bytearray: + #{ + fp.write( arr ) + #} + else: + #{ + for item in arr: + #{ + fp.write( bytearray(item) ) + #} + #} + + fp_align( fp, padding ) + #} + + fp.close() +#} diff --git a/skaterift_blender/sr_main.py b/skaterift_blender/sr_main.py index e35e675..1ec554f 100644 --- a/skaterift_blender/sr_main.py +++ b/skaterift_blender/sr_main.py @@ -39,7 +39,7 @@ sr_entity_list = [ ('ent_npc', 'npc', '', 27 ) ] -MDL_VERSION_NR = 106 +MDL_VERSION_NR = 107 SR_TRIGGERABLE = [ 'ent_audio', 'ent_ccmd', 'ent_gate', 'ent_challenge', \ 'ent_relay', 'ent_skateshop', 'ent_objective', 'ent_route',\ 'ent_miniworld', 'ent_region', 'ent_glider', 'ent_list',\ @@ -143,8 +143,10 @@ class mdl_armature(Structure): _fields_ = [("transform",mdl_transform), ("bone_start",c_uint32), ("bone_count",c_uint32), - ("anim_start",c_uint32), - ("anim_count",c_uint32)] + ("anim_start",c_uint32), # obsolete 107+ + ("anim_count",c_uint32), # . + # v107+ + ("pstr_name",c_uint32)] #} class mdl_animation(Structure): @@ -171,18 +173,10 @@ class mdl_texture(Structure): ("glname",c_uint32)] #} -class mdl_array(Structure): -#{ - _fields_ = [("file_offset",c_uint32), - ("item_count",c_uint32), - ("item_size",c_uint32), - ("name",c_byte*16)] -#} - class mdl_header(Structure): #{ _fields_ = [("version",c_uint32), - ("arrays",mdl_array)] + ("index",array_file_meta)] #} class ent_spawn(Structure): @@ -682,87 +676,28 @@ def compile_obj_transform( obj, transform ): transform.s[2] = s[1] #} -def int_align_to( v, align ): -#{ - while(v%align)!=0: v += 1 - return v -#} - -def bytearray_align_to( buffer, align, w=b'\xaa' ): -#{ - while (len(buffer) % align) != 0: buffer.extend(w) - return buffer -#} - -def bytearray_print_hex( s, w=16 ): -#{ - for r in range((len(s)+(w-1))//w):#{ - i0=(r+0)*w - i1=min((r+1)*w,len(s)) - print( F'{r*w:06x}| \x1B[31m', end='') - print( F"{' '.join('{:02x}'.format(x) for x in s[i0:i1]):<48}",end='' ) - print( "\x1B[0m", end='') - print( ''.join(chr(x) if (x>=33 and x<=126) else '.' for x in s[i0:i1] ) ) - #} -#} - -def sr_compile_string( s ): -#{ - if s in sr_compile.string_cache: return sr_compile.string_cache[s] - - index = len( sr_compile.string_data ) - sr_compile.string_cache[s] = index - sr_compile.string_data.extend( c_uint32(hash_djb2(s)) ) - sr_compile.string_data.extend( s.encode('utf-8') ) - sr_compile.string_data.extend( b'\0' ) - - bytearray_align_to( sr_compile.string_data, 4 ) - return index -#} - -def vg_str_bin( s ): -#{ - decoded = bytearray() - for i in range(len(s)//2):#{ - c = (ord(s[i*2+0])-0x41) - c |= (ord(s[i*2+1])-0x41)<<4 - decoded.extend(bytearray(c_uint8(c))) #?? - #} - return decoded -#} - -def sr_pack_file( file, path, data ): -#{ - file.path = sr_compile_string( path ) - file.pack_offset = len( sr_compile.pack_data ) - file.pack_size = len( data ) - - sr_compile.pack_data.extend( data ) - bytearray_align_to( sr_compile.pack_data, 16 ) -#} - def sr_compile_texture( img ): #{ if img == None: return 0 name = os.path.splitext( img.name )[0] - if name in sr_compile.texture_cache: return sr_compile.texture_cache[name] - texture_index = (len(sr_compile.texture_data)//sizeof(mdl_texture)) +1 + texture_index = len(sr_compile.textures) +1 tex = mdl_texture() tex.glname = 0 - if sr_compile.pack_textures:#{ + if sr_compile.pack_textures: + #{ filedata = qoi_encode( img ) sr_pack_file( tex.file, name, filedata ) #} sr_compile.texture_cache[name] = texture_index - sr_compile.texture_data.extend( bytearray(tex) ) + sr_compile.textures.append( tex ) return texture_index #} @@ -828,13 +763,15 @@ def sr_compile_mesh_internal( obj ): # Compile a whole new mesh # - submesh_start = len(sr_compile.submesh_data)//sizeof(mdl_submesh) + submesh_start = len( sr_compile.submeshes ) submesh_count = 0 dgraph = bpy.context.evaluated_depsgraph_get() data = obj.evaluated_get(dgraph).data data.calc_loop_triangles() - data.calc_normals_split() + + if bpy.app.version < (4,1,0): + data.calc_normals_split() # Mesh is split into submeshes based on their material # @@ -843,8 +780,8 @@ def sr_compile_mesh_internal( obj ): mref = {} sm = mdl_submesh() - sm.indice_start = len(sr_compile.indice_data)//sizeof(c_uint32) - sm.vertex_start = len(sr_compile.vertex_data)//sizeof(mdl_vert) + sm.indice_start = len( sr_compile.indices ) + sm.vertex_start = len( sr_compile.vertices ) sm.vertex_count = 0 sm.indice_count = 0 sm.material_id = sr_compile_material( mat ) @@ -964,7 +901,7 @@ def sr_compile_mesh_internal( obj ): if key in vertex_reference: index = vertex_reference[key] else:#{ - index = bytearray(c_uint32(sm.vertex_count)) + index = c_uint32(sm.vertex_count) sm.vertex_count+=1 vertex_reference[key] = index @@ -995,11 +932,11 @@ def sr_compile_mesh_internal( obj ): sm.bbx[1][i] = max( sm.bbx[1][i], v.co[i] ) #} - sr_compile.vertex_data.extend(bytearray(v)) + sr_compile.vertices.append(v) #} sm.indice_count += 1 - sr_compile.indice_data.extend( index ) + sr_compile.indices.append( index ) #} #} @@ -1012,7 +949,7 @@ def sr_compile_mesh_internal( obj ): # Add submesh to encoder # - sr_compile.submesh_data.extend( bytearray(sm) ) + sr_compile.submeshes.append( sm ) submesh_count += 1 #} @@ -1044,7 +981,7 @@ def sr_compile_mesh( obj ): node.submesh_start, node.submesh_count, node.armature_id = \ sr_compile_mesh_internal( obj ) - sr_compile.mesh_data.extend(bytearray(node)) + sr_compile.meshes.append( node ) #} def sr_compile_fonts( collection ): @@ -1103,7 +1040,7 @@ def sr_compile_fonts( collection ): for j in range(glyph_range):#{ data_glyph = data.glyphs[j] glyph = ent_glyph() - glyph.indice_start = len(sr_compile.indice_data)//sizeof(c_uint32) + glyph.indice_start = len( sr_compile.indices ) glyph.indice_count = 0 glyph.size[0] = data_glyph.bounds[2] glyph.size[1] = data_glyph.bounds[3] @@ -1148,8 +1085,8 @@ def sr_compile_fonts( collection ): if key in vertex_reference: index = vertex_reference[key] else:#{ - vindex = len(sr_compile.vertex_data)//sizeof(mdl_vert) - index = bytearray(c_uint32(vindex)) + vindex = len( sr_compile.vertices ) + index = c_uint32(vindex) vertex_reference[key] = index v = mdl_vert() v.co[0] = co[0] @@ -1161,11 +1098,11 @@ def sr_compile_fonts( collection ): v.uv[0] = uv[0] v.uv[1] = uv[1] - sr_compile.vertex_data.extend(bytearray(v)) + sr_compile.vertices.append( v ) #} glyph.indice_count += 1 - sr_compile.indice_data.extend( index ) + sr_compile.indices.append( index ) #} #} #} @@ -1259,22 +1196,25 @@ def sr_compile_menus( collection ): def sr_compile_armature( obj ): #{ node = mdl_armature() - node.bone_start = len(sr_compile.bone_data)//sizeof(mdl_bone) + node.pstr_name = sr_compile_string( obj.name ) + node.bone_start = len( sr_compile.bones ) node.bone_count = 0 - node.anim_start = len(sr_compile.anim_data)//sizeof(mdl_animation) - node.anim_count = 0 + # node.anim_start = len(sr_compile.anim_data)//sizeof(mdl_animation) + # node.anim_count = 0 bones = [_ for _ in sr_armature_bones(obj)] bones_names = [None]+[_.name for _ in bones] - for b in bones:#{ + for b in bones: + #{ bone = mdl_bone() if b.use_deform: bone.flags = 0x1 if b.parent: bone.parent = bones_names.index(b.parent.name) bone.collider = int(b.SR_data.collider) - if bone.collider>0:#{ + if bone.collider>0: + #{ bone.hitbox[0][0] = b.SR_data.collider_min[0] bone.hitbox[0][1] = b.SR_data.collider_min[2] bone.hitbox[0][2] = -b.SR_data.collider_max[1] @@ -1283,7 +1223,8 @@ def sr_compile_armature( obj ): bone.hitbox[1][2] = -b.SR_data.collider_min[1] #} - if b.SR_data.cone_constraint:#{ + if b.SR_data.cone_constraint: + #{ bone.flags |= 0x4 bone.conevx[0] = b.SR_data.conevx[0] bone.conevx[1] = b.SR_data.conevx[2] @@ -1305,8 +1246,10 @@ def sr_compile_armature( obj ): bone.end[2] = -b.tail_local[1] - bone.co[2] bone.pstr_name = sr_compile_string( b.name ) - for c in obj.pose.bones[b.name].constraints:#{ - if c.type == 'IK':#{ + for c in obj.pose.bones[b.name].constraints: + #{ + if c.type == 'IK': + #{ bone.flags |= 0x2 bone.ik_target = bones_names.index(c.subtarget) bone.ik_pole = bones_names.index(c.pole_subtarget) @@ -1314,139 +1257,125 @@ def sr_compile_armature( obj ): #} node.bone_count += 1 - sr_compile.bone_data.extend(bytearray(bone)) - #} - - # Compile anims - # - if obj.animation_data and sr_compile.pack_animations: #{ - # So we can restore later - # - previous_frame = bpy.context.scene.frame_current - previous_action = obj.animation_data.action - POSE_OR_REST_CACHE = obj.data.pose_position - obj.data.pose_position = 'POSE' - - for NLALayer in obj.animation_data.nla_tracks:#{ - for NLAStrip in NLALayer.strips:#{ - # set active - # - for a in bpy.data.actions:#{ - if a.name == NLAStrip.name:#{ - obj.animation_data.action = a - break - #} - #} - - # Clip to NLA settings - # - anim_start = int(NLAStrip.action_frame_start) - anim_end = int(NLAStrip.action_frame_end) - - # Export strips - # - anim = mdl_animation() - anim.pstr_name = sr_compile_string( NLAStrip.action.name ) - anim.rate = 30.0 - anim.keyframe_start = len(sr_compile.keyframe_data)//\ - sizeof(mdl_transform) - anim.length = anim_end-anim_start - - i = 0 - # Export the keyframes - for frame in range(anim_start,anim_end):#{ - bpy.context.scene.frame_set(frame) - - for rb in bones:#{ - pb = obj.pose.bones[rb.name] - - # relative bone matrix - if rb.parent is not None:#{ - offset_mtx = rb.parent.matrix_local - offset_mtx = offset_mtx.inverted_safe() @ \ - rb.matrix_local - - inv_parent = pb.parent.matrix @ offset_mtx - inv_parent.invert_safe() - fpm = inv_parent @ pb.matrix - #} - else:#{ - bone_mtx = rb.matrix.to_4x4() - local_inv = rb.matrix_local.inverted_safe() - fpm = bone_mtx @ local_inv @ pb.matrix - #} - - loc, rot, sca = fpm.decompose() - - # rotation - lc_m = pb.matrix_channel.to_3x3() - if pb.parent is not None:#{ - smtx = pb.parent.matrix_channel.to_3x3() - lc_m = smtx.inverted() @ lc_m - #} - rq = lc_m.to_quaternion() - q_normalize( rq ) - - kf = mdl_transform() - kf.co[0] = loc[0] - kf.co[1] = loc[2] - kf.co[2] = -loc[1] - kf.q[0] = rq[1] - kf.q[1] = rq[3] - kf.q[2] = -rq[2] - kf.q[3] = rq[0] - kf.s[0] = sca[0] - kf.s[1] = sca[1] - kf.s[2] = sca[2] - sr_compile.keyframe_data.extend(bytearray(kf)) - - i+=1 - #} - #} - - # Add to animation buffer - # - sr_compile.anim_data.extend(bytearray(anim)) - node.anim_count += 1 - - # Report progress - # - print( F"[SR] | anim( {NLAStrip.action.name} )" ) - #} - #} - - # Restore context to how it was before - # - bpy.context.scene.frame_set( previous_frame ) - obj.animation_data.action = previous_action - obj.data.pose_position = POSE_OR_REST_CACHE + sr_compile.bones.append( bone ) #} - sr_compile.armature_data.extend(bytearray(node)) + ### # Compile anims + ### # + ### if obj.animation_data and sr_compile.pack_animations: #{ + ### # So we can restore later + ### # + ### previous_frame = bpy.context.scene.frame_current + ### previous_action = obj.animation_data.action + ### POSE_OR_REST_CACHE = obj.data.pose_position + ### obj.data.pose_position = 'POSE' + + ### for NLALayer in obj.animation_data.nla_tracks:#{ + ### for NLAStrip in NLALayer.strips:#{ + ### # set active + ### # + ### for a in bpy.data.actions:#{ + ### if a.name == NLAStrip.name:#{ + ### obj.animation_data.action = a + ### break + ### #} + ### #} + ### + ### # Clip to NLA settings + ### # + ### anim_start = int(NLAStrip.action_frame_start) + ### anim_end = int(NLAStrip.action_frame_end) + + ### # Export strips + ### # + ### anim = mdl_animation() + ### anim.pstr_name = sr_compile_string( NLAStrip.action.name ) + ### anim.rate = 30.0 + ### anim.keyframe_start = len(sr_compile.keyframe_data)//\ + ### sizeof(mdl_transform) + ### anim.length = anim_end-anim_start + ### + ### i = 0 + ### # Export the keyframes + ### for frame in range(anim_start,anim_end):#{ + ### bpy.context.scene.frame_set(frame) + ### + ### for rb in bones:#{ + ### pb = obj.pose.bones[rb.name] + ### + ### # relative bone matrix + ### if rb.parent is not None:#{ + ### offset_mtx = rb.parent.matrix_local + ### offset_mtx = offset_mtx.inverted_safe() @ \ + ### rb.matrix_local + + ### inv_parent = pb.parent.matrix @ offset_mtx + ### inv_parent.invert_safe() + ### fpm = inv_parent @ pb.matrix + ### #} + ### else:#{ + ### bone_mtx = rb.matrix.to_4x4() + ### local_inv = rb.matrix_local.inverted_safe() + ### fpm = bone_mtx @ local_inv @ pb.matrix + ### #} + + ### loc, rot, sca = fpm.decompose() + ### + ### # rotation + ### lc_m = pb.matrix_channel.to_3x3() + ### if pb.parent is not None:#{ + ### smtx = pb.parent.matrix_channel.to_3x3() + ### lc_m = smtx.inverted() @ lc_m + ### #} + ### rq = lc_m.to_quaternion() + ### q_normalize( rq ) + + ### kf = mdl_transform() + ### kf.co[0] = loc[0] + ### kf.co[1] = loc[2] + ### kf.co[2] = -loc[1] + ### kf.q[0] = rq[1] + ### kf.q[1] = rq[3] + ### kf.q[2] = -rq[2] + ### kf.q[3] = rq[0] + ### kf.s[0] = sca[0] + ### kf.s[1] = sca[1] + ### kf.s[2] = sca[2] + ### sr_compile.keyframes.append(kf) + ### + ### i+=1 + ### #} + ### #} + ### + ### # Add to animation buffer + ### # + ### sr_compile.anim_data.extend(bytearray(anim)) + ### node.anim_count += 1 + + ### # Report progress + ### # + ### print( F"[SR] | anim( {NLAStrip.action.name} )" ) + ### #} + ### #} + ### + ### # Restore context to how it was before + ### # + ### bpy.context.scene.frame_set( previous_frame ) + ### obj.animation_data.action = previous_action + ### obj.data.pose_position = POSE_OR_REST_CACHE + ### #} + + sr_compile.armatures.append( node ) #} def sr_ent_push( struct ): #{ clase = type(struct).__name__ - if clase not in sr_compile.entity_data:#{ - sr_compile.entity_data[ clase ] = bytearray() - sr_compile.entity_info[ clase ] = { 'size': sizeof(struct) } - #} - - index = len(sr_compile.entity_data[ clase ])//sizeof(struct) - sr_compile.entity_data[ clase ].extend( bytearray(struct) ) - return index -#} - -def sr_array_title( arr, name, count, size, offset ): -#{ - for i in range(len(name)):#{ - arr.name[i] = ord(name[i]) - #} - arr.file_offset = offset - arr.item_count = count - arr.item_size = size + if clase not in sr_compile.entity_data: + sr_compile.entity_data[ clase ] = [ struct ] + else: + sr_compile.entity_data[ clase ].append( struct ) #} def hash_djb2(s): @@ -1458,6 +1387,22 @@ def hash_djb2(s): return picadillo #} +def sr_pack_file( file, path, data ): +#{ + file.path = sr_compile_string( path ) + file.pack_offset = len( sr_compile.pack_data ) + file.pack_size = len( data ) + + sr_compile.pack_data.extend( data ) + bytearray_align_to( sr_compile.pack_data, 16 ) +#} + +# Smol wrapper so we don't have to edit everything +def sr_compile_string( string ): +#{ + return pack_string( sr_compile.string_cache, string ) +#} + def sr_compile( collection ): #{ print( F"[SR] compiler begin ({collection.name}.mdl)" ) @@ -1468,26 +1413,25 @@ def sr_compile( collection ): sr_compile.pack_animations = collection.SR_data.animations # caches - sr_compile.string_cache = {} + sr_compile.string_cache = bin_string_cache(alignment=4) sr_compile.mesh_cache = {} sr_compile.material_cache = {} sr_compile.texture_cache = {} # compiled data - sr_compile.mesh_data = bytearray() - sr_compile.submesh_data = bytearray() - sr_compile.vertex_data = bytearray() - sr_compile.indice_data = bytearray() - sr_compile.bone_data = bytearray() - sr_compile.material_data = bytearray() + sr_compile.meshes = [] + sr_compile.submeshes = [] + sr_compile.vertices = [] + sr_compile.indices = [] + sr_compile.bones = [] + sr_compile.materials = [] sr_compile.shader_data = bytearray() - sr_compile.armature_data = bytearray() - sr_compile.anim_data = bytearray() - sr_compile.keyframe_data = bytearray() - sr_compile.texture_data = bytearray() + sr_compile.armatures = [] + #sr_compile.anim_data = bytearray() + #sr_compile.keyframe_data = bytearray() + sr_compile.textures = [] # just bytes not structures - sr_compile.string_data = bytearray() sr_compile.pack_data = bytearray() # variable @@ -1519,8 +1463,10 @@ def sr_compile( collection ): print( F"[SR] Compiling geometry" ) i=0 - for obj in collection.all_objects:#{ - if obj.type == 'MESH':#{ + for obj in collection.all_objects: + #{ + if obj.type == 'MESH': + #{ i+=1 ent_type = obj_ent_type( obj ) @@ -1536,7 +1482,8 @@ def sr_compile( collection ): if ent_type == 'ent_region': continue #TODO: This is messy. - if ent_type == 'ent_gate':#{ + if ent_type == 'ent_gate': + #{ obj_data = obj.SR_data.ent_gate[0] if obj_data.custom: continue #} @@ -2058,74 +2005,35 @@ def sr_compile( collection ): print( F"[SR] Writing file" ) - file_array_instructions = {} - file_offset = 0 - - def _write_array( name, item_size, data ):#{ - nonlocal file_array_instructions, file_offset - - count = len(data)//item_size - file_array_instructions[name] = {'count':count, 'size':item_size,\ - 'data':data, 'offset': file_offset} - file_offset += len(data) - file_offset = int_align_to( file_offset, 8 ) - #} - - _write_array( 'strings', 1, sr_compile.string_data ) - _write_array( 'mdl_mesh', sizeof(mdl_mesh), sr_compile.mesh_data ) - _write_array( 'mdl_submesh', sizeof(mdl_submesh), sr_compile.submesh_data ) - _write_array( 'mdl_material', sizeof(mdl_material), sr_compile.material_data) - _write_array( 'mdl_texture', sizeof(mdl_texture), sr_compile.texture_data) - _write_array( 'mdl_armature', sizeof(mdl_armature), sr_compile.armature_data) - _write_array( 'mdl_bone', sizeof(mdl_bone), sr_compile.bone_data ) - - for name, buffer in sr_compile.entity_data.items():#{ - _write_array( name, sr_compile.entity_info[name]['size'], buffer ) + arrays = { + 'strings': sr_compile.string_cache.buffer, + 'mdl_mesh': sr_compile.meshes, + 'mdl_submesh': sr_compile.submeshes, + 'mdl_material': sr_compile.materials, + 'mdl_texture': sr_compile.textures, + 'mdl_armature': sr_compile.armatures, + 'mdl_bone': sr_compile.bones + } + + for name, buf in sr_compile.entity_data.items(): + #{ + arrays[name] = buf #} - _write_array( 'mdl_animation', sizeof(mdl_animation), sr_compile.anim_data) - _write_array( 'mdl_keyframe', sizeof(mdl_transform),sr_compile.keyframe_data) - _write_array( 'mdl_vert', sizeof(mdl_vert), sr_compile.vertex_data ) - _write_array( 'mdl_indice', sizeof(c_uint32), sr_compile.indice_data ) - _write_array( 'pack', 1, sr_compile.pack_data ) - _write_array( 'shader_data', 1, sr_compile.shader_data ) - - header_size = int_align_to( sizeof(mdl_header), 8 ) - index_size = int_align_to( sizeof(mdl_array)*len(file_array_instructions),8 ) + arrays[ 'mdl_vert' ] = sr_compile.vertices + arrays[ 'mdl_indice' ] = sr_compile.indices + arrays[ 'pack' ] = sr_compile.pack_data + arrays[ 'shader_data' ] = sr_compile.shader_data folder = bpy.path.abspath(bpy.context.scene.SR_data.export_dir) path = F"{folder}{collection.name}.mdl" print( path ) os.makedirs(os.path.dirname(path),exist_ok=True) - fp = open( path, "wb" ) + header = mdl_header() header.version = MDL_VERSION_NR - sr_array_title( header.arrays, \ - 'index', len(file_array_instructions), \ - sizeof(mdl_array), header_size ) - - fp.write( bytearray_align_to( bytearray(header), 8 ) ) - - print( F'[SR] {"name":>16}| count | offset' ) - index = bytearray() - for name,info in file_array_instructions.items():#{ - arr = mdl_array() - offset = info['offset'] + header_size + index_size - sr_array_title( arr, name, info['count'], info['size'], offset ) - index.extend( bytearray(arr) ) - - print( F'[SR] {name:>16}| {info["count"]: 8} '+\ - F' 0x{info["offset"]:02x}' ) - #} - fp.write( bytearray_align_to( index, 8 ) ) - #bytearray_print_hex( index ) - - for name,info in file_array_instructions.items():#{ - fp.write( bytearray_align_to( info['data'], 8 ) ) - #} - - fp.close() + array_file_write( path, header, arrays ) print( '[SR] done' ) #} @@ -2134,14 +2042,16 @@ class SR_SCENE_SETTINGS(bpy.types.PropertyGroup): #{ use_hidden: bpy.props.BoolProperty( name="use hidden", default=False ) export_dir: bpy.props.StringProperty( name="Export Dir", subtype='DIR_PATH' ) + file_name: bpy.props.StringProperty( name="File Name", default='untitled') gizmos: bpy.props.BoolProperty( name="Draw Gizmos", default=False ) panel: bpy.props.EnumProperty( name='Panel', description='', items=[ - ('EXPORT', 'Export', '', 'MOD_BUILD',0), ('ENTITY', 'Entity', '', 'MONKEY',1), + ('EXPORT', 'Export', '', 'MOD_BUILD',0), + ('META', 'Meta', '', 'NORMALIZE_FCURVES', 3), ('SETTINGS', 'Settings', 'Settings', 'PREFERENCES',2), ], ) @@ -2218,10 +2128,12 @@ class SR_COMPILE(bpy.types.Operator): def execute(_,context): #{ - view_layer = bpy.context.view_layer - for col in view_layer.layer_collection.children["export"].children: - if not col.hide_viewport or bpy.context.scene.SR_data.use_hidden: - sr_compile( bpy.data.collections[col.name] ) + export_col = _get_export_collection() + + if export_col: + for col in export_col.children: + if not col.hide_viewport or bpy.context.scene.SR_data.use_hidden: + sr_compile( bpy.data.collections[col.name] ) return {'FINISHED'} #} @@ -2241,6 +2153,32 @@ class SR_COMPILE_THIS(bpy.types.Operator): #} #} +class SR_COMPILE_METASCENE(bpy.types.Operator): +#{ + bl_idname="skaterift.compile_metascene" + bl_label="Compile whole blend as meta-scene" + + def execute(_,context): + #{ + folder = bpy.path.abspath(bpy.context.scene.SR_data.export_dir) + file = bpy.context.scene.SR_data.file_name + path = F"{folder}{file}.ms" + + os.makedirs(os.path.dirname(path),exist_ok=True) + _sr_export_metascene( path ) + + return {'FINISHED'} + #} +#} + +def _get_export_collection(): +#{ + view_layer = bpy.context.view_layer + lcc = view_layer.layer_collection.children + if 'export' in lcc: return lcc['export'] + else: return None +#} + class SR_INTERFACE(bpy.types.Panel): #{ bl_idname = "VIEW3D_PT_skate_rift" @@ -2260,19 +2198,32 @@ class SR_INTERFACE(bpy.types.Panel): if context.scene.SR_data.panel == 'SETTINGS': #{ _.layout.prop( context.scene.SR_data, 'gizmos' ) #} + elif context.scene.SR_data.panel == 'META': + #{ + _.layout.prop( context.scene.SR_data, "export_dir" ) + _.layout.prop( context.scene.SR_data, "file_name" ) + row = _.layout.row() + row.operator( "skaterift.compile_metascene" ) + _.layout.row().label( text=F'Status: {_ms_compiler.status}' ) + #} elif context.scene.SR_data.panel == 'EXPORT': #{ _.layout.prop( context.scene.SR_data, "export_dir" ) col = bpy.context.collection found_in_export = False export_count = 0 - view_layer = bpy.context.view_layer - for c1 in view_layer.layer_collection.children["export"].children: #{ - if not c1.hide_viewport or bpy.context.scene.SR_data.use_hidden: - export_count += 1 - if c1.name == col.name: #{ - found_in_export = True + export_col = _get_export_collection() + + if export_col: + #{ + for c1 in export_col.children: #{ + if not c1.hide_viewport or bpy.context.scene.SR_data.use_hidden: + export_count += 1 + + if c1.name == col.name: #{ + found_in_export = True + #} #} #} @@ -2284,7 +2235,7 @@ class SR_INTERFACE(bpy.types.Panel): if found_in_export: #{ row.label( text=col.name + ".mdl" ) box.prop( col.SR_data, "pack_textures" ) - box.prop( col.SR_data, "animations" ) + # box.prop( col.SR_data, "animations" ) box.operator( "skaterift.compile_this" ) #} else: #{ @@ -2295,12 +2246,16 @@ class SR_INTERFACE(bpy.types.Panel): row.enabled=False row.alignment = 'CENTER' row.scale_y = 1.5 - row.label( text="This collection is not in the export group" ) + + if export_col: + row.label( text="This collection is not a child of the export collection" ) + else: + row.label( text="There is no master collection named 'export'" ) #} box = _.layout.box() - row = box.row() + row = box.row() split = row.split( factor=0.3, align=True ) split.prop( context.scene.SR_data, "use_hidden", text="hidden" ) @@ -4753,7 +4708,7 @@ def cv_draw_pixel():#{ classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\ SR_COLLECTION_SETTINGS, SR_SCENE_SETTINGS, \ - SR_COMPILE, SR_COMPILE_THIS, SR_MIRROR_BONE_X,\ + SR_COMPILE, SR_COMPILE_THIS,SR_COMPILE_METASCENE, SR_MIRROR_BONE_X,\ \ SR_OBJECT_ENT_GATE, SR_MESH_ENT_GATE, SR_OBJECT_ENT_SPAWN, \ SR_OBJECT_ENT_ROUTE_ENTRY, SR_UL_ROUTE_NODE_LIST, \ diff --git a/skaterift_blender/sr_mat.py b/skaterift_blender/sr_mat.py index c599936..8859ecf 100644 --- a/skaterift_blender/sr_mat.py +++ b/skaterift_blender/sr_mat.py @@ -141,7 +141,7 @@ def sr_compile_material( mat ): print( F'[SR] Compiling material {mat.name}' ) - index = (len(sr_compile.material_data)//sizeof(mdl_material))+1 + index = len( sr_compile.materials ) +1 sr_compile.material_cache[mat.name] = index m = mdl_material() @@ -239,7 +239,7 @@ def sr_compile_material( mat ): m.props.kvs.size = msg.cur.co sr_compile.shader_data.extend( bytearray(buf[:msg.cur.co]) ) - sr_compile.material_data.extend( bytearray(m) ) + sr_compile.materials.append( m ) return index #} diff --git a/skaterift_blender/sr_metascene.py b/skaterift_blender/sr_metascene.py new file mode 100644 index 0000000..73d3b91 --- /dev/null +++ b/skaterift_blender/sr_metascene.py @@ -0,0 +1,433 @@ +print( "sr_metascene" ) + +# +# As the playhead walks through the strip list (which is sorted by start frame), +# it will activate/deactivate tracks into the sampler list. Samplers can be of +# float or integer type. +# +# On the animation update, we evaluate all samplers at once. As the playhead +# moves across keyframe sections, it caches the curve handles into the sampler +# to reduce memory pressure. +# +# No samplers exist by default in the streamer, and you build up the samplers at +# construction time. One it starts playing the samplers are locked in. The +# samplers can be name-matching (against the data path), or semantic integer +# matching. +# +# All curves for all objects of all properties will be compiled. The semantics +# list is built up on the client side. +# +# The animation mode of the file will either be keyframe blocks, or will be +# curves. This is a per-file choice. +# + +class _ms_compiler: + status = "None" + +def _ms_compiler_init(): +#{ + _ms_compiler.strings = bin_string_cache(alignment=4) + + _ms_compiler.action_cache = {} # actions point to (our) strips + _ms_compiler.strips = [] + _ms_compiler.tracks = [] + _ms_compiler.keyframes = [] + _ms_compiler.curve_keyframes = [] + _ms_compiler.instances = [] + _ms_compiler.overrides = [] +#} + +class ms_header(Structure): +#{ + _fields_ = [("version",c_uint32), + ("framerate",c_float), + ("index",array_file_meta)] +#} + +class ms_curve_keyframe(Structure): +#{ + _fields_ = [("co",c_float*2), + ("l", c_float*2), + ("r", c_float*2)] +#} + +class ms_keyframe(Structure): +#{ + _fields_ = [("co",c_float*3), + ("s", c_float*3), + ("q", c_float*4)] +#} + +class ms_track(Structure): +#{ + _fields_ = [("keyframe_start",c_uint32), + ("keyframe_count",c_uint32), + ("pstr_datapath",c_uint32), + ("semantic_type",c_uint32)] # runtime +#} + +class ms_strip(Structure): +#{ + _fields_ = [("data_start",c_uint32), # keyframes in block mode, or tracks in + # curves mode. + ("data_count",c_uint32), # tracks in curves, bone count in kfs + ("data_mode",c_uint32), + ("offset",c_uint32), + ("length",c_uint32), + ("pstr_name",c_uint32), #AKA Blender NLAStrip name + ("pstr_internal_name",c_uint32), #AKA Blender action name + ("instance_id",c_uint32),# 0 ... 0xfffffffe, or 0xffffffff + ("object_id",c_uint32) ] # First class: SR entity ID, + # Second class: instance override index +#} + +class ms_instance(Structure): +#{ + _fields_ = [("pstr_name",c_uint32), + ("override_start",c_uint32), + ("override_count",c_uint32)] +#} + +class ms_override(Structure): +#{ + _fields_ = [("pstr_name",c_uint32), + ("transform",mdl_transform)] +#} + +def _metascene_action_cache( out_strip, action ): +#{ + if action.name in _ms_compiler.action_cache: + #{ + print( " Using cached action data" ) + ref = _ms_compiler.action_cache[ action.name ] + out_strip.data_start = ref.data_start + out_strip.data_count = ref.data_count + out_strip.data_mode = ref.data_mode + out_strip.pstr_internal_name = ref.pstr_internal_name + return True + #} + else: return False +#} + +def _metascene_armature_anims( obj, instance_id, override_id ): +#{ + bones = [_ for _ in sr_armature_bones(obj)] + bones_names = [None]+[_.name for _ in bones] + + # So we can restore later + # + previous_frame = bpy.context.scene.frame_current + previous_action = obj.animation_data.action + previous_pose_position = obj.data.pose_position + obj.data.pose_position = 'POSE' + + for NLALayer in obj.animation_data.nla_tracks: + #{ + for NLAStrip in NLALayer.strips: + #{ + # set active + # + action = NLAStrip.action + obj.animation_data.action = action + + out_strip = ms_strip() + out_strip.offset = math.floor( NLAStrip.frame_start ) + out_strip.length = math.ceil( NLAStrip.frame_end - out_strip.offset ) + out_strip.pstr_name = \ + pack_string( _ms_compiler.strings, NLAStrip.name ) + out_strip.instance_id = instance_id + out_strip.object_id = override_id + + if _metascene_action_cache( out_strip, action ): continue + + out_strip.data_mode = 0 + out_strip.data_start = len( _ms_compiler.keyframes ) + out_strip.data_count = len( bones ) + out_strip.pstr_internal_name = \ + pack_string( _ms_compiler.strings, action.name ) + + # Clip to NLA settings + # + anim_start = int(NLAStrip.action_frame_start) + anim_end = int(NLAStrip.action_frame_end) + + i = 0 + # Export the keyframes + for frame in range(anim_start,anim_end): + #{ + bpy.context.scene.frame_set(frame) + + for rb in bones: + #{ + pb = obj.pose.bones[rb.name] + + # relative bone matrix + if rb.parent is not None: + #{ + offset_mtx = rb.parent.matrix_local + offset_mtx = offset_mtx.inverted_safe() @ rb.matrix_local + inv_parent = pb.parent.matrix @ offset_mtx + inv_parent.invert_safe() + fpm = inv_parent @ pb.matrix + #} + else: + #{ + bone_mtx = rb.matrix.to_4x4() + local_inv = rb.matrix_local.inverted_safe() + fpm = bone_mtx @ local_inv @ pb.matrix + #} + + loc, rot, sca = fpm.decompose() + + # rotation + lc_m = pb.matrix_channel.to_3x3() + if pb.parent is not None: + #{ + smtx = pb.parent.matrix_channel.to_3x3() + lc_m = smtx.inverted() @ lc_m + #} + rq = lc_m.to_quaternion() + q_normalize( rq ) + + kf = mdl_transform() + kf.co[0] = loc[0] + kf.co[1] = loc[2] + kf.co[2] = -loc[1] + kf.q[0] = rq[1] + kf.q[1] = rq[3] + kf.q[2] = -rq[2] + kf.q[3] = rq[0] + kf.s[0] = sca[0] + kf.s[1] = sca[1] + kf.s[2] = sca[2] + + _ms_compiler.keyframes.append(kf) + #} + #} + + # Add to animation buffer + # + _ms_compiler.strips.append( out_strip ) + print( F"[MS] | anim( {NLAStrip.action.name} )" ) + #} + #} + + # Restore context to how it was before + # + bpy.context.scene.frame_set( previous_frame ) + obj.animation_data.action = previous_action + obj.data.pose_position = previous_pose_position +#} + +def _metascene_compile_action_curves( out_strip, action ): +#{ + if _metascene_action_cache( out_strip, action ): return + + out_strip.data_mode = 1 + out_strip.data_start = len(_ms_compiler.tracks) + out_strip.data_count = len(action.fcurves) + out_strip.pstr_internal_name = \ + pack_string( _ms_compiler.strings, action.name ) + + for fcurve in action.fcurves: + #{ + id = F"{fcurve.data_path}:{fcurve.array_index}" + print( F" Appending curve '{id}'" ) + + out_track = ms_track() + out_track.keyframe_start = len( _ms_compiler.curve_keyframes ) + out_track.keyframe_count = 0 + out_track.pstr_datapath = pack_string( _ms_compiler.strings, id ) + out_track.semantic_type = 0 + + for kf in fcurve.keyframe_points: + #{ + out_keyframe = ms_curve_keyframe() + out_keyframe.co[0] = kf.co[0] + out_keyframe.co[1] = kf.co[1] + out_keyframe.l[0] = kf.handle_left[0] #TODO: clipping. + out_keyframe.l[1] = kf.handle_left[1] + out_keyframe.r[0] = kf.handle_right[0] + out_keyframe.r[1] = kf.handle_right[1] + + _ms_compiler.curve_keyframes.append(out_keyframe) + out_track.keyframe_count += 1 + #} + + _ms_compiler.tracks.append( out_track ) + #} + + _ms_compiler.action_cache[ action.name ] = out_strip +#} + +# +# Camera animation: +# co: xyz, fov +# +def _metascene_camera_anims( obj, entity_id ): +#{ + if obj.animation_data == None: return + + for NLALayer in obj.animation_data.nla_tracks: + #{ + print( F" looking into {NLALayer.name}" ) + for NLAStrip in NLALayer.strips: + #{ + print( F" have strip {NLAStrip.name}" ) + + out_strip = ms_strip() + _metascene_compile_action_curves( out_strip, NLAStrip.action ) + out_strip.offset = math.floor( NLAStrip.frame_start ) + out_strip.length = math.ceil( NLAStrip.frame_end - out_strip.offset ) + out_strip.pstr_name = \ + pack_string( _ms_compiler.strings, NLAStrip.name ) + + _ms_compiler.strips.append( out_strip ) + #} + #} + + for NLALayer in obj.data.animation_data.nla_tracks: + #{ + print( F" looking into {NLALayer.name}" ) + for NLAStrip in NLALayer.strips: + #{ + print( F" have strip {NLAStrip.name}" ) + #} + #} +#} + +def obj_realname( obj ): +#{ + if obj.override_library: + return obj.override_library.reference.name + else: + return obj.name +#} + +def _sr_export_metascene( path ): +#{ + print( "\nCompiling meta-scene\n----------------------------------------" ) + _ms_compiler_init() + + def descend( col, depth=0, instance=None, instance_id=-1 ): + #{ + created_instance = False + col_name = obj_realname(col) + + if col.override_library and not col.override_library.is_system_override: + #{ + if not instance: + #{ + instance_id = len( _ms_compiler.instances ) + instance = ms_instance() + instance.pstr_name = pack_string( _ms_compiler.strings, col_name ) + instance.override_start = len( _ms_compiler.overrides ) + instance.override_count = 0 + created_instance = True + #} + #} + + print( " "*depth + F"col '{col_name}' ms_instance: {created_instance}" ) + depth += 1 + + for o in col.objects: + #{ + data_mode = 'regular' + if o.override_library: + #{ + if o.override_library.is_system_override: + data_mode = 'system_override' + else: + data_mode = 'override' + #} + + obj_name = obj_realname(o) + print( " "*depth + F"{obj_name} ('{o.type}') {data_mode}" ) + + if data_mode == 'override': + #{ + key = col_name + ':' + obj_name + print( " "*depth + F" key: {key}" ) + + co = o.location + print( " "*depth + F" co: {co.x:.2} {co.y:.2} {co.z:.2}" ) + + override_id = instance.override_count + init = ms_override() + init.pstr_name = pack_string( _ms_compiler.strings, obj_name ) + compile_obj_transform( o, init.transform ) + + if o.type == 'ARMATURE': + #{ + _metascene_armature_anims( o, instance_id, override_id ) + #} + + _ms_compiler.overrides.append(init) + instance.override_count += 1 + #} + + if o.type == 'CAMERA' and not instance: + #{ + if o.rotation_mode != 'ZXY': + #{ + print( F" Camera '{o.name}' needs to be 'ZXY' rotation mode" ) + return False + #} + + if abs(o.delta_rotation_euler[0] - math.pi/2.0) > 0.001 or \ + abs(o.delta_rotation_euler[1] - 0.0) > 0.001 or \ + abs(o.delta_rotation_euler[2] - 0.0) > 0.001: + #{ + print( F" Camera '{o.name}' needs this delta rotation: 90,0,0" ) + return False + #} + + _metascene_camera_anims( o ) + #} + #} + + for c in col.children: + #{ + if not descend( c, depth, instance ): + return False + #} + + if created_instance: + #{ + _ms_compiler.instances.append(instance) + #} + + return True + #} + + if not descend( bpy.context.scene.collection ): + #{ + print( "Compilation Failed" ) + _ms_compiler.status = "Compilation failed (check console)" + return False + #} + + for marker in bpy.context.scene.timeline_markers: + #{ + print( F"Marker {marker.name}: {marker.camera}" ) + #} + + arrays = { + 'strings': _ms_compiler.strings.buffer, + 'ms_strip': _ms_compiler.strips, + 'ms_track': _ms_compiler.tracks, + 'ms_keyframe': _ms_compiler.keyframes, + 'ms_curves': _ms_compiler.curve_keyframes, + 'ms_instance': _ms_compiler.instances, + 'ms_override': _ms_compiler.overrides + } + + header = ms_header() + header.version = 1 + header.framerate = bpy.context.scene.render.fps + array_file_write( path, header, arrays ) + + _ms_compiler.status = F"Written to {path}" + + return True +#} diff --git a/src/array_file.c b/src/array_file.c new file mode 100644 index 0000000..080b85c --- /dev/null +++ b/src/array_file.c @@ -0,0 +1,123 @@ +#include "array_file.h" + +const char *ps_get( array_file_ptr *strings, u32 pstr ) +{ + return ((char *)af_arritm( strings, pstr )) + 4; +} + +bool ps_consteq( array_file_ptr *strings, u32 pstr, const char *str, u32 djb2 ) +{ + u32 hash = *((u32 *)af_arritm( strings, pstr )); + if( hash == djb2 ) + { + if( !strcmp( str, ps_get( strings, pstr ))) return 1; + else return 0; + } + else return 0; +} + +static void af_load_array_file_buffer( FILE *fp, array_file_meta *arr, + void *buffer, u32 stride ) +{ + if( arr->item_count ) + { + fseek( fp, arr->file_offset, SEEK_SET ); + + if( stride == arr->item_size ) + { + u64 l = fread( buffer, arr->item_size*arr->item_count, 1, fp ); + if( l != 1 ) + { + vg_file_error_info( fp ); + fclose( fp ); + vg_fatal_exit(); + } + } + else + { + 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 ) + memset( buffer, 0, stride*arr->item_count ); + + u32 read_size = VG_MIN( stride, arr->item_size ); + + for( u32 i=0; iitem_count; i++ ) + { + u64 l = fread( buffer+i*stride, read_size, 1, fp ); + if( stride < arr->item_size ) + fseek( fp, arr->item_size - stride, SEEK_CUR ); + + if( l != 1 ) + { + vg_file_error_info( fp ); + fclose( fp ); + vg_fatal_exit(); + } + } + } + } +} + +void af_load_array_file( FILE *fp, array_file_ptr *ptr, + array_file_meta *arr, void *lin_alloc, + u32 stride ) +{ + if( arr->item_count ) + { + u32 size = stride*arr->item_count; + ptr->data = lin_alloc? vg_linear_alloc( lin_alloc, vg_align8(size) ): + malloc( size ); + af_load_array_file_buffer( fp, arr, ptr->data, stride ); + } + else + { + ptr->data = NULL; + } + + ptr->stride = stride; + ptr->count = arr->item_count; +} + +void *af_arritm( array_file_ptr *arr, u32 index ) +{ + return ((u8 *)arr->data) + index*arr->stride; +} + +u32 af_arrcount( array_file_ptr *arr ) +{ + return arr->count; +} + +array_file_meta *af_find_array( array_file_ptr *index, const char *name ) +{ + for( u32 i=0; iname,name,16) ) + return arr; + } + + return NULL; +} + +int af_load_array( FILE *fp, array_file_ptr *index, array_file_ptr *ptr, + const char *name, void *lin_alloc, u32 stride ) +{ + array_file_meta *arr = af_find_array( index, name ); + + if( arr ) + { + af_load_array_file( fp, ptr, arr, lin_alloc, stride ); + return 1; + } + else + { + ptr->data = NULL; + ptr->count = 0; + ptr->stride = 0; + return 0; + } +} diff --git a/src/array_file.h b/src/array_file.h new file mode 100644 index 0000000..1678541 --- /dev/null +++ b/src/array_file.h @@ -0,0 +1,41 @@ +#pragma once + +typedef struct array_file_ptr array_file_ptr; +typedef struct array_file_meta array_file_meta; + +struct array_file_ptr +{ + void *data; + u32 count, stride; +}; + +struct array_file_meta +{ + u32 file_offset, + item_count, + item_size; + + char name[16]; +}; + +/* array loading */ +array_file_meta *af_find_array( array_file_ptr *index, const char *name ); +void af_load_array_file( FILE *fp, array_file_ptr *ptr, + array_file_meta *arr, void *lin_alloc, + u32 stride ); +int af_load_array( FILE *fp, array_file_ptr *index, array_file_ptr *ptr, + const char *name, void *lin_alloc, u32 stride ); + +#define AF_LOAD_ARRAY_STRUCT( FP, INDEX, PTR, STRUCT, ALLOCATOR ) \ + af_load_array( FP, INDEX, PTR, #STRUCT, ALLOCATOR, sizeof(STRUCT) ) + +/* array access */ +void *af_arritm( array_file_ptr *arr, u32 index ); +u32 af_arrcount( array_file_ptr *arr ); + +/* packed string buffer access (with djb2 hash prefix) */ +const char *ps_get( array_file_ptr *strings, u32 pstr ); +bool ps_consteq( array_file_ptr *strings, u32 pstr, const char *str, u32 djb2 ); + +#define PS_EQ( STRINGS, PSTR, CONSTR ) \ + ps_consteq( STRINGS, PSTR, CONSTR, vg_strdjb2( CONSTR ) ) diff --git a/src/build_control_overlay.c b/src/build_control_overlay.c index 3205955..86106b3 100644 --- a/src/build_control_overlay.c +++ b/src/build_control_overlay.c @@ -10,11 +10,11 @@ void build_control_overlay(void) mdl_load_metadata_block( &ctx, NULL ); mdl_close( &ctx ); - for( u32 i=0; ipstr_name ), mesh->submesh_start ); + ps_get( &ctx.strings,mesh->pstr_name ), mesh->submesh_start ); } fclose( hdr ); diff --git a/src/control_overlay.c b/src/control_overlay.c index a39d77b..f0df413 100644 --- a/src/control_overlay.c +++ b/src/control_overlay.c @@ -13,7 +13,7 @@ struct control_overlay control_overlay = { .enabled = 1 }; static void render_overlay_mesh( enum control_overlay_mesh index ) { - mdl_draw_submesh( mdl_arritm( &control_overlay.mdl.submeshs, index ) ); + mdl_draw_submesh( af_arritm( &control_overlay.mdl.submeshs, index ) ); } void control_overlay_init(void) @@ -28,9 +28,9 @@ void control_overlay_init(void) vg_async_stall(); - if( mdl_arrcount( &mdl->textures ) ) + if( af_arrcount( &mdl->textures ) ) { - mdl_texture *tex = mdl_arritm( &mdl->textures, 0 ); + mdl_texture *tex = af_arritm( &mdl->textures, 0 ); control_overlay.tex = tex->glname; } else diff --git a/src/ent_challenge.c b/src/ent_challenge.c index d30a5dc..a04066c 100644 --- a/src/ent_challenge.c +++ b/src/ent_challenge.c @@ -7,14 +7,14 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); if( call->function == 0 ) /* unlock() */ { if( !challenge->status ) { vg_info( "challenge( '%s' )\n", - mdl_pstr( &world->meta, challenge->pstr_alias) ); + ps_get( &world->meta.strings, challenge->pstr_alias) ); ent_call call; call.data = NULL; call.function = challenge->target_event; @@ -49,7 +49,7 @@ entity_call_result ent_challenge_call( world_instance *world, ent_call *call ) void ent_challenge_preupdate( ent_focus_context *ctx ) { world_instance *world = ctx->world; - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, ctx->index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, ctx->index ); /* maximum distance from active challenge */ if( !ctx->active ) @@ -61,7 +61,7 @@ void ent_challenge_preupdate( ent_focus_context *ctx ) u32 next = challenge->first; while( mdl_entity_id_type(next) == k_ent_objective ){ u32 index = mdl_entity_id_id( next ); - ent_objective *objective = mdl_arritm(&world->ent_objective,index); + ent_objective *objective = af_arritm(&world->ent_objective,index); next = objective->id_next; f32 d2 = v3_dist2( localplayer.rb.co, objective->transform.co ); @@ -88,7 +88,7 @@ void ent_challenge_preupdate( ent_focus_context *ctx ) if( mdl_entity_id_type( challenge->first ) == k_ent_objective ){ if( button_down( k_srbind_maccept ) ){ u32 index = mdl_entity_id_id( challenge->first ); - world_static.challenge_target = mdl_arritm( &world->ent_objective, + world_static.challenge_target = af_arritm( &world->ent_objective, index ); world_static.challenge_timer = 0.0f; world_entity_exit_modal(); @@ -97,7 +97,7 @@ void ent_challenge_preupdate( ent_focus_context *ctx ) u32 next = challenge->first; while( mdl_entity_id_type(next) == k_ent_objective ){ u32 index = mdl_entity_id_id( next ); - ent_objective *objective = mdl_arritm(&world->ent_objective,index); + ent_objective *objective = af_arritm(&world->ent_objective,index); objective->flags &= ~k_ent_objective_passed; next = objective->id_next; v3_fill( objective->transform.s, 1.0f ); diff --git a/src/ent_glider.c b/src/ent_glider.c index 12b0575..2148b3d 100644 --- a/src/ent_glider.c +++ b/src/ent_glider.c @@ -5,7 +5,7 @@ entity_call_result ent_glider_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_glider *glider = mdl_arritm( &world->ent_glider, index ); + ent_glider *glider = af_arritm( &world->ent_glider, index ); if( call->function == 0 ) { diff --git a/src/ent_miniworld.c b/src/ent_miniworld.c index 19c88d0..7a13408 100644 --- a/src/ent_miniworld.c +++ b/src/ent_miniworld.c @@ -11,14 +11,14 @@ struct global_miniworld global_miniworld; entity_call_result ent_miniworld_call( world_instance *world, ent_call *call ) { - ent_miniworld *miniworld = mdl_arritm( &world->ent_miniworld, + ent_miniworld *miniworld = af_arritm( &world->ent_miniworld, mdl_entity_id_id(call->id) ); int world_id = world - world_static.instances; if( call->function == 0 ) /* zone() */ { - const char *uid = mdl_pstr( &world->meta, miniworld->pstr_world ); + const char *uid = ps_get( &world->meta.strings, miniworld->pstr_world ); skaterift_load_world_command( 1, (const char *[]){ uid } ); mdl_transform_m4x3( &miniworld->transform, global_miniworld.mmdl ); @@ -39,7 +39,7 @@ entity_call_result ent_miniworld_call( world_instance *world, ent_call *call ) if( miniworld->proxy ) { - ent_prop *prop = mdl_arritm( &world->ent_prop, + ent_prop *prop = af_arritm( &world->ent_prop, mdl_entity_id_id(miniworld->proxy) ); prop->flags &= ~0x1; } @@ -91,7 +91,7 @@ void ent_miniworld_render( world_instance *host_world, vg_camera *cam ) rendering = 0; if( miniworld->proxy ){ - ent_prop *prop = mdl_arritm( &host_world->ent_prop, + ent_prop *prop = af_arritm( &host_world->ent_prop, mdl_entity_id_id(miniworld->proxy) ); if( !rendering ) prop->flags &= ~0x1; @@ -121,8 +121,8 @@ void ent_miniworld_render( world_instance *host_world, vg_camera *cam ) miniworld_icon( cam, k_gui_icon_player, dest_world->player_co, 1.0f + sinf(vg.time)*0.2f ); - for( u32 i=0; ient_challenge); i++ ){ - ent_challenge *challenge = mdl_arritm( &dest_world->ent_challenge, i ); + for( u32 i=0; ient_challenge); i++ ){ + ent_challenge *challenge = af_arritm( &dest_world->ent_challenge, i ); enum gui_icon icon = k_gui_icon_exclaim; if( challenge->status ) @@ -131,8 +131,8 @@ void ent_miniworld_render( world_instance *host_world, vg_camera *cam ) miniworld_icon( cam, icon, challenge->transform.co, 1.0f ); } - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &dest_world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &dest_world->ent_route, i ); if( route->flags & k_ent_route_flag_achieve_gold ){ miniworld_icon( cam, k_gui_icon_rift_run_gold, @@ -144,8 +144,8 @@ void ent_miniworld_render( world_instance *host_world, vg_camera *cam ) } } - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &dest_world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &dest_world->ent_route, i ); v4f colour; v4_copy( route->colour, colour ); diff --git a/src/ent_npc.c b/src/ent_npc.c index 7a4b484..ce0ac3d 100644 --- a/src/ent_npc.c +++ b/src/ent_npc.c @@ -6,9 +6,9 @@ #include "gui.h" struct npc npc_gumpa, npc_slowmo, npc_volc_flight; -static struct skeleton_anim *gumpa_idle; -static struct skeleton_anim *slowmo_momentum, *slowmo_slide, *slowmo_rewind, - *anim_tutorial_cam; +static struct skeleton_anim gumpa_idle; +static struct skeleton_anim slowmo_momentum, slowmo_slide, slowmo_rewind, + anim_tutorial_cam; static float slowmo_opacity = 0.0f; static f64 volc_start_preview = 0.0; @@ -19,7 +19,6 @@ void npc_load_model( struct npc *npc, const char *path ) mdl_context *meta = &npc->meta; mdl_open( meta, path, vg_mem.rtmemory ); mdl_load_metadata_block( meta, vg_mem.rtmemory ); - mdl_load_animation_block( meta, vg_mem.rtmemory ); struct skeleton *sk = &npc->skeleton; skeleton_setup( sk, vg_mem.rtmemory, meta ); @@ -27,9 +26,9 @@ void npc_load_model( struct npc *npc, const char *path ) u32 mtx_size = sizeof(m4x3f)*sk->bone_count; npc->final_mtx = vg_linear_alloc( vg_mem.rtmemory, mtx_size ); - if( mdl_arrcount( &meta->textures ) ) + if( af_arrcount( &meta->textures ) ) { - mdl_texture *tex0 = mdl_arritm( &meta->textures, 0 ); + mdl_texture *tex0 = af_arritm( &meta->textures, 0 ); void *data = vg_linear_alloc( vg_mem.scratch, tex0->file.pack_size ); mdl_fread_pack_file( meta, &tex0->file, data ); @@ -48,6 +47,7 @@ void npc_load_model( struct npc *npc, const char *path ) void npc_init(void) { +#if 0 npc_load_model( &npc_gumpa, "models/gumpa.mdl" ); gumpa_idle = skeleton_get_anim( &npc_gumpa.skeleton, "gumpa_idle" ); @@ -60,6 +60,7 @@ void npc_init(void) npc_load_model( &npc_volc_flight, "models/volc_flight.mdl" ); anim_tutorial_cam = skeleton_get_anim( &npc_volc_flight.skeleton, "tutorial" ); +#endif } static struct npc *npc_resolve( u32 id ) @@ -111,7 +112,7 @@ static entity_call_result npc_slowmo_call( ent_npc *npc, ent_call *call ) entity_call_result ent_npc_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_npc *npc = mdl_arritm( &world->ent_npc, index ); + ent_npc *npc = af_arritm( &world->ent_npc, index ); if( npc->id == 2 ) { @@ -180,7 +181,7 @@ entity_call_result ent_npc_call( world_instance *world, ent_call *call ) void ent_npc_preupdate( ent_focus_context *ctx ) { world_instance *world = ctx->world; - ent_npc *ent = mdl_arritm( &world->ent_npc, ctx->index ); + ent_npc *ent = af_arritm( &world->ent_npc, ctx->index ); if( !ctx->active ) { @@ -204,9 +205,9 @@ void ent_npc_preupdate( ent_focus_context *ctx ) struct skeleton *sk = &npc_volc_flight.skeleton; f64 t = (vg.time - volc_start_preview) * 0.5; - skeleton_sample_anim_clamped( sk, anim_tutorial_cam, t, pose.keyframes ); + skeleton_sample_anim_clamped( sk, &anim_tutorial_cam, t, pose.keyframes ); - ent_camera *cam = mdl_arritm( &world->ent_camera, + ent_camera *cam = af_arritm( &world->ent_camera, mdl_entity_id_id(ent->camera) ); v3_copy( pose.keyframes[0].co, cam->transform.co ); @@ -243,20 +244,20 @@ void npc_update( ent_npc *ent ) if( ent->id == 1 ) { - skeleton_sample_anim( sk, gumpa_idle, vg.time, pose.keyframes ); + skeleton_sample_anim( sk, &gumpa_idle, vg.time, pose.keyframes ); } else if( ent->id == 2 ) { struct skeleton_anim *anim = NULL; - if( ent->context == 1 ) anim = slowmo_momentum; - else if( ent->context == 2 ) anim = slowmo_slide; - else if( ent->context == 3 ) anim = slowmo_rewind; + if( ent->context == 1 ) anim = &slowmo_momentum; + else if( ent->context == 2 ) anim = &slowmo_slide; + else if( ent->context == 3 ) anim = &slowmo_rewind; VG_ASSERT( anim ); f32 t = vg.time*0.5f, - animtime = fmodf( t*anim->rate, anim->length ), - lt = animtime / (f32)anim->length; + animtime = fmodf( t*anim->framerate, anim->strip->length ), + lt = animtime / (f32)anim->strip->length; skeleton_sample_anim( sk, anim, t, pose.keyframes ); slowmo_opacity = vg_clampf(fabsf(lt-0.5f)*9.0f-3.0f,0,1); } diff --git a/src/ent_objective.c b/src/ent_objective.c index 6a8bbe5..1e43e87 100644 --- a/src/ent_objective.c +++ b/src/ent_objective.c @@ -13,7 +13,7 @@ static void ent_objective_pass( world_instance *world, world_static.challenge_timer += objective->filter; u32 index = mdl_entity_id_id( objective->id_next ); - ent_objective *next = mdl_arritm( &world->ent_objective, index ); + ent_objective *next = af_arritm( &world->ent_objective, index ); world_static.challenge_target = next; objective->flags |= k_ent_objective_passed; @@ -84,7 +84,7 @@ static int ent_objective_check_filter( ent_objective *objective ){ entity_call_result ent_objective_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_objective *objective = mdl_arritm( &world->ent_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); if( call->function == 0 ) { diff --git a/src/ent_region.c b/src/ent_region.c index 5e0ec03..91fd1aa 100644 --- a/src/ent_region.c +++ b/src/ent_region.c @@ -18,19 +18,19 @@ u32 region_spark_colour( u32 flags ) entity_call_result ent_region_call( world_instance *world, ent_call *call ) { ent_region *region = - mdl_arritm( &world->ent_region, mdl_entity_id_id(call->id) ); + af_arritm( &world->ent_region, mdl_entity_id_id(call->id) ); if( !region->zone_volume ) return k_entity_call_result_invalid; ent_volume *volume = - mdl_arritm( &world->ent_volume, mdl_entity_id_id(region->zone_volume) ); + af_arritm( &world->ent_volume, mdl_entity_id_id(region->zone_volume) ); if( call->function == 0 ) /* enter */ { - for( u32 i=0; ient_route); i ++ ) + for( u32 i=0; ient_route); i ++ ) { - ent_route *route = mdl_arritm( &world->ent_route, i ); + ent_route *route = af_arritm( &world->ent_route, i ); v3f local; m4x3_mulv( volume->to_local, route->board_transform[3], local ); @@ -47,9 +47,9 @@ entity_call_result ent_region_call( world_instance *world, ent_call *call ) } gui_location_print_ccmd( 1, (const char *[]){ - mdl_pstr(&world->meta,region->pstr_title)} ); + ps_get( &world->meta.strings, region->pstr_title)} ); - vg_strncpy( mdl_pstr(&world->meta,region->pstr_title), + vg_strncpy( ps_get( &world->meta.strings, region->pstr_title ), global_ent_region.location, NETWORK_REGION_MAX, k_strncpy_always_add_null ); global_ent_region.flags = region->flags; @@ -60,9 +60,9 @@ entity_call_result ent_region_call( world_instance *world, ent_call *call ) } else if( call->function == 1 ) /* leave */ { - for( u32 i=0; ient_route); i ++ ) + for( u32 i=0; ient_route); i ++ ) { - ent_route *route = mdl_arritm( &world->ent_route, i ); + ent_route *route = af_arritm( &world->ent_route, i ); route->flags |= k_ent_route_flag_out_of_zone; } localplayer.effect_data.spark.colour = 0x00; @@ -80,20 +80,20 @@ void ent_region_re_eval( world_instance *world ) u32 world_total = k_ent_route_flag_achieve_gold | k_ent_route_flag_achieve_silver; - for( u32 i=0; ient_region); i ++ ){ - ent_region *region = mdl_arritm(&world->ent_region, i); + for( u32 i=0; ient_region); i ++ ){ + ent_region *region = af_arritm(&world->ent_region, i); if( !region->zone_volume ) continue; - ent_volume *volume = mdl_arritm(&world->ent_volume, + ent_volume *volume = af_arritm(&world->ent_volume, mdl_entity_id_id(region->zone_volume)); u32 combined = k_ent_route_flag_achieve_gold | k_ent_route_flag_achieve_silver; - for( u32 j=0; jent_route); j ++ ){ - ent_route *route = mdl_arritm(&world->ent_route, j ); + for( u32 j=0; jent_route); j ++ ){ + ent_route *route = af_arritm(&world->ent_route, j ); v3f local; m4x3_mulv( volume->to_local, route->board_transform[3], local ); @@ -106,8 +106,8 @@ void ent_region_re_eval( world_instance *world ) combined &= route->flags; } - for( u32 j=0; jent_challenge); j ++ ){ - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, j ); + for( u32 j=0; jent_challenge); j ++ ){ + ent_challenge *challenge = af_arritm( &world->ent_challenge, j ); v3f local; m4x3_mulv( volume->to_local, challenge->transform.co, local ); diff --git a/src/ent_relay.c b/src/ent_relay.c index b22b0b5..e770ad5 100644 --- a/src/ent_relay.c +++ b/src/ent_relay.c @@ -3,7 +3,7 @@ entity_call_result ent_relay_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_relay *relay = mdl_arritm( &world->ent_relay, index ); + ent_relay *relay = af_arritm( &world->ent_relay, index ); if( call->function == 0 ) { diff --git a/src/ent_route.c b/src/ent_route.c index 8564eed..5cf4846 100644 --- a/src/ent_route.c +++ b/src/ent_route.c @@ -7,7 +7,7 @@ struct global_ent_route global_ent_route; entity_call_result ent_route_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_route *route = mdl_arritm( &world->ent_route, index ); + ent_route *route = af_arritm( &world->ent_route, index ); if( call->function == 0 ) { /* view() */ @@ -43,7 +43,7 @@ void ent_route_preupdate( ent_focus_context *ctx ) return; world_instance *world = ctx->world; - ent_route *route = mdl_arritm( &world->ent_route, ctx->index ); + ent_route *route = af_arritm( &world->ent_route, ctx->index ); u32 cam_id = 0; diff --git a/src/ent_skateshop.c b/src/ent_skateshop.c index ded707c..19ec518 100644 --- a/src/ent_skateshop.c +++ b/src/ent_skateshop.c @@ -215,10 +215,10 @@ void ent_skateshop_preupdate( ent_focus_context *ctx ) return; world_instance *world = ctx->world; - ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, ctx->index ); + ent_skateshop *shop = af_arritm( &world->ent_skateshop, ctx->index ); /* camera positioning */ - ent_camera *ref = mdl_arritm( &world->ent_camera, + ent_camera *ref = af_arritm( &world->ent_camera, mdl_entity_id_id(shop->id_camera) ); v3f dir = {0.0f,-1.0f,0.0f}; @@ -228,7 +228,7 @@ void ent_skateshop_preupdate( ent_focus_context *ctx ) v3f lookat; if( shop->type == k_skateshop_type_boardshop || shop->type == k_skateshop_type_worldshop ){ - ent_marker *display = mdl_arritm( &world->ent_marker, + ent_marker *display = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_display) ); v3_sub( display->transform.co, localplayer.rb.co, lookat ); } @@ -236,7 +236,7 @@ void ent_skateshop_preupdate( ent_focus_context *ctx ) v3_sub( ref->transform.co, localplayer.rb.co, lookat ); } else if( shop->type == k_skateshop_type_server ){ - ent_prop *prop = mdl_arritm( &world->ent_prop, + ent_prop *prop = af_arritm( &world->ent_prop, mdl_entity_id_id(shop->server.id_lever) ); v3_sub( prop->transform.co, localplayer.rb.co, lookat ); } @@ -425,8 +425,8 @@ void ent_skateshop_preupdate( ent_focus_context *ctx ) void skateshop_world_preupdate( world_instance *world ) { - for( u32 i=0; ient_skateshop); i++ ){ - ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, i ); + for( u32 i=0; ient_skateshop); i++ ){ + ent_skateshop *shop = af_arritm( &world->ent_skateshop, i ); if( shop->type == k_skateshop_type_server ){ f32 a = network_client.user_intent; @@ -434,7 +434,7 @@ void skateshop_world_preupdate( world_instance *world ) vg_slewf( &network_client.fintent, a, vg.time_frame_delta ); a = (vg_smoothstepf( network_client.fintent ) - 0.5f) * (VG_PIf/2.0f); - ent_prop *lever = mdl_arritm( &world->ent_prop, + ent_prop *lever = af_arritm( &world->ent_prop, mdl_entity_id_id(shop->server.id_lever) ); /* we need parent transforms now? */ @@ -447,9 +447,9 @@ static void skateshop_render_boardshop( ent_skateshop *shop ){ world_instance *world = world_current_instance(); u32 slot_count = VG_ARRAY_LEN(global_skateshop.shop_view_slots); - ent_marker *mark_rack = mdl_arritm( &world->ent_marker, + ent_marker *mark_rack = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_rack)), - *mark_display = mdl_arritm( &world->ent_marker, + *mark_display = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_display)); SDL_AtomicLock( &addon_system.sl_cache_using_resources ); @@ -498,7 +498,7 @@ fade_out:; slot->view_blend = vg_lerpf( slot->view_blend, selected, rate ); } - ent_marker *mark_info = mdl_arritm( &world->ent_marker, + ent_marker *mark_info = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_info)); m4x3f mtext, mrack; mdl_transform_m4x3( &mark_info->transform, mtext ); @@ -601,9 +601,9 @@ static void skateshop_render_charshop( ent_skateshop *shop ){ static void skateshop_render_worldshop( ent_skateshop *shop ){ world_instance *world = world_current_instance(); - ent_marker *mark_display = mdl_arritm( &world->ent_marker, + ent_marker *mark_display = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->worlds.id_display)), - *mark_info = mdl_arritm( &world->ent_marker, + *mark_info = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_info)); if( global_skateshop.render.world_reg != global_skateshop.selected_world_id){ @@ -717,9 +717,9 @@ void skateshop_render( ent_skateshop *shop ) void skateshop_render_nonfocused( world_instance *world, vg_camera *cam ) { - for( u32 j=0; jent_skateshop ); j ++ ) + for( u32 j=0; jent_skateshop ); j ++ ) { - ent_skateshop *shop = mdl_arritm(&world->ent_skateshop, j ); + ent_skateshop *shop = af_arritm(&world->ent_skateshop, j ); if( shop->type != k_skateshop_type_boardshop ) continue; @@ -727,7 +727,7 @@ void skateshop_render_nonfocused( world_instance *world, vg_camera *cam ) maxdist = 50.0f; if( dist2 > maxdist*maxdist ) continue; - ent_marker *mark_rack = mdl_arritm( &world->ent_marker, + ent_marker *mark_rack = af_arritm( &world->ent_marker, mdl_entity_id_id(shop->boards.id_rack)); if( !mark_rack ) @@ -801,7 +801,7 @@ static void world_scan_thread( void *_args ) entity_call_result ent_skateshop_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, index ); + ent_skateshop *shop = af_arritm( &world->ent_skateshop, index ); vg_info( "skateshop_call\n" ); if( (skaterift.activity != k_skaterift_default) || diff --git a/src/ent_tornado.c b/src/ent_tornado.c index f9fca03..b86f61e 100644 --- a/src/ent_tornado.c +++ b/src/ent_tornado.c @@ -18,10 +18,12 @@ void ent_tornado_init(void) void ent_tornado_debug(void) { world_instance *world = world_current_instance(); - for( u32 i=0; ient_marker); i ++ ){ - ent_marker *marker = mdl_arritm( &world->ent_marker, i ); + for( u32 i=0; ient_marker); i ++ ) + { + ent_marker *marker = af_arritm( &world->ent_marker, i ); - if( MDL_CONST_PSTREQ( &world->meta, marker->pstr_alias, "tornado" ) ){ + if( PS_EQ( &world->meta.strings, marker->pstr_alias, "tornado" ) ) + { v3f p1; v3_add( marker->transform.co, (v3f){0,20,0}, p1 ); vg_line( marker->transform.co, p1, VG__RED ); @@ -39,10 +41,12 @@ void ent_tornado_forces( v3f co, v3f cv, v3f out_a ) world_instance *world = world_current_instance(); v3_zero( out_a ); - for( u32 i=0; ient_marker); i ++ ){ - ent_marker *marker = mdl_arritm( &world->ent_marker, i ); + for( u32 i=0; ient_marker); i ++ ) + { + ent_marker *marker = af_arritm( &world->ent_marker, i ); - if( MDL_CONST_PSTREQ( &world->meta, marker->pstr_alias, "tornado" ) ){ + if( PS_EQ( &world->meta.strings, marker->pstr_alias, "tornado" ) ) + { v3f d, dir; v3_sub( co, marker->transform.co, d ); d[1] = 0.0f; @@ -67,10 +71,12 @@ void ent_tornado_forces( v3f co, v3f cv, v3f out_a ) void ent_tornado_pre_update(void) { world_instance *world = world_current_instance(); - for( u32 i=0; ient_marker); i ++ ){ - ent_marker *marker = mdl_arritm( &world->ent_marker, i ); + for( u32 i=0; ient_marker); i ++ ) + { + ent_marker *marker = af_arritm( &world->ent_marker, i ); - if( MDL_CONST_PSTREQ( &world->meta, marker->pstr_alias, "tornado" ) ){ + if( PS_EQ( &world->meta.strings, marker->pstr_alias, "tornado" ) ) + { v3f co; vg_rand_sphere( &vg.rand, co ); diff --git a/src/ent_traffic.c b/src/ent_traffic.c index 8bb19b9..a14f62f 100644 --- a/src/ent_traffic.c +++ b/src/ent_traffic.c @@ -2,8 +2,8 @@ void ent_traffic_update( world_instance *world, v3f pos ) { - for( u32 i=0; ient_traffic ); i++ ){ - ent_traffic *traffic = mdl_arritm( &world->ent_traffic, i ); + for( u32 i=0; ient_traffic ); i++ ){ + ent_traffic *traffic = af_arritm( &world->ent_traffic, i ); u32 i1 = traffic->index, i0, @@ -20,9 +20,9 @@ void ent_traffic_update( world_instance *world, v3f pos ) v3f h[3]; - ent_route_node *rn0 = mdl_arritm( &world->ent_route_node, i0 ), - *rn1 = mdl_arritm( &world->ent_route_node, i1 ), - *rn2 = mdl_arritm( &world->ent_route_node, i2 ); + ent_route_node *rn0 = af_arritm( &world->ent_route_node, i0 ), + *rn1 = af_arritm( &world->ent_route_node, i1 ), + *rn2 = af_arritm( &world->ent_route_node, i2 ); v3_copy( rn1->co, h[1] ); v3_lerp( rn0->co, rn1->co, 0.5f, h[0] ); diff --git a/src/entity.c b/src/entity.c index 797e29d..dcae738 100644 --- a/src/entity.c +++ b/src/entity.c @@ -59,14 +59,14 @@ void entity_call( world_instance *world, ent_call *call ) } } -ent_marker *ent_find_marker( mdl_context *mdl, mdl_array_ptr *arr, +ent_marker *ent_find_marker( mdl_context *mdl, array_file_ptr *arr, const char *alias ) { - for( u32 i=0; ipstr_alias ), alias ) ) + if( !strcmp( ps_get( &mdl->strings, marker->pstr_alias ), alias ) ) { return marker; } diff --git a/src/entity.h b/src/entity.h index 6d503f9..5120052 100644 --- a/src/entity.h +++ b/src/entity.h @@ -429,7 +429,7 @@ struct ent_worldinfo{ u32 flags; }; -ent_marker *ent_find_marker( mdl_context *mdl, mdl_array_ptr *arr, +ent_marker *ent_find_marker( mdl_context *mdl, array_file_ptr *arr, const char *alias ); enum channel_behaviour{ diff --git a/src/font.h b/src/font.h index fa144c4..98142c0 100644 --- a/src/font.h +++ b/src/font.h @@ -75,44 +75,48 @@ struct font3d{ glmesh mesh; ent_font info; - mdl_array_ptr font_variants, + array_file_ptr font_variants, glyphs; }; -static void font3d_load( font3d *font, const char *mdl_path, void *alloc ){ - mdl_open( &font->mdl, mdl_path, alloc ); - mdl_load_metadata_block( &font->mdl, alloc ); +static void font3d_load( font3d *font, const char *mdl_path, void *alloc ) +{ + mdl_context *mdl = &font->mdl; + mdl_open( mdl, mdl_path, alloc ); + mdl_load_metadata_block( mdl, alloc ); vg_linear_clear( vg_mem.scratch ); - mdl_array_ptr fonts; - MDL_LOAD_ARRAY( &font->mdl, &fonts, ent_font, vg_mem.scratch ); - font->info = *((ent_font *)mdl_arritm(&fonts,0)); + array_file_ptr fonts; + MDL_LOAD_ARRAY_STRUCT( mdl, &fonts, ent_font, vg_mem.scratch ); + font->info = *((ent_font *)af_arritm(&fonts,0)); - MDL_LOAD_ARRAY( &font->mdl, &font->font_variants, ent_font_variant, alloc); - MDL_LOAD_ARRAY( &font->mdl, &font->glyphs, ent_glyph, alloc ); + MDL_LOAD_ARRAY_STRUCT( mdl, &font->font_variants, ent_font_variant, alloc); + MDL_LOAD_ARRAY_STRUCT( mdl, &font->glyphs, ent_glyph, alloc ); vg_linear_clear( vg_mem.scratch ); - if( !mdl_arrcount( &font->mdl.textures ) ) + if( !af_arrcount( &font->mdl.textures ) ) vg_fatal_error( "No texture in font file" ); - mdl_texture *tex0 = mdl_arritm( &font->mdl.textures, 0 ); + mdl_texture *tex0 = af_arritm( &mdl->textures, 0 ); void *data = vg_linear_alloc( vg_mem.scratch, tex0->file.pack_size ); - mdl_fread_pack_file( &font->mdl, &tex0->file, data ); + mdl_fread_pack_file( mdl, &tex0->file, data ); - mdl_async_load_glmesh( &font->mdl, &font->mesh, NULL ); + mdl_async_load_glmesh( mdl, &font->mesh, NULL ); vg_tex2d_load_qoi_async( data, tex0->file.pack_size, VG_TEX2D_LINEAR|VG_TEX2D_CLAMP, &font->texture ); - mdl_close( &font->mdl ); + mdl_close( mdl ); } -static u32 font3d_find_variant( font3d *font, const char *name ){ - for( u32 i=0; ifont_variants ); i ++ ){ - ent_font_variant *variant = mdl_arritm( &font->font_variants, i ); +static u32 font3d_find_variant( font3d *font, const char *name ) +{ + for( u32 i=0; ifont_variants ); i ++ ) + { + ent_font_variant *variant = af_arritm( &font->font_variants, i ); - if( !strcmp( mdl_pstr( &font->mdl, variant->name ), name ) ){ + if( !strcmp( ps_get( &font->mdl.strings, variant->name ), name ) ){ return i; } } @@ -184,7 +188,7 @@ static ent_glyph *font3d_glyph( font3d *font, u32 variant_id, u32 utf32 ){ u32 index = utf32 - font->info.glyph_utf32_base; index += font->info.glyph_start; index += font->info.glyph_count * variant_id; - return mdl_arritm( &font->glyphs, index ); + return af_arritm( &font->glyphs, index ); } static void font3d_set_transform( const char *text, diff --git a/src/gui.h b/src/gui.h index 46e2e1e..a760cac 100644 --- a/src/gui.h +++ b/src/gui.h @@ -308,7 +308,7 @@ static mdl_submesh *gui_find_icon( const char *name ){ mdl_mesh *mesh = mdl_find_mesh( &gui.model_icons, name ); if( mesh ){ if( mesh->submesh_count ){ - return mdl_arritm( &gui.model_icons.submeshs, mesh->submesh_start ); + return af_arritm( &gui.model_icons.submeshs, mesh->submesh_start ); } } @@ -346,9 +346,9 @@ static void gui_init(void) gui_find_icon("icon_rift_run_medal_silver"); vg_linear_clear( vg_mem.scratch ); - if( !mdl_arrcount( &gui.model_icons.textures ) ) + if( !af_arrcount( &gui.model_icons.textures ) ) vg_fatal_error( "No texture in menu file" ); - mdl_texture *tex0 = mdl_arritm( &gui.model_icons.textures, 0 ); + mdl_texture *tex0 = af_arritm( &gui.model_icons.textures, 0 ); void *data = vg_linear_alloc( vg_mem.scratch, tex0->file.pack_size ); mdl_fread_pack_file( &gui.model_icons, &tex0->file, data ); vg_tex2d_load_qoi_async( data, tex0->file.pack_size, diff --git a/src/menu.c b/src/menu.c index 1f2b9c8..556cc0d 100644 --- a/src/menu.c +++ b/src/menu.c @@ -295,15 +295,15 @@ static i32 menu_nav( i32 *p_row, int mv, i32 max ) static void menu_try_find_cam( i32 id ) { world_instance *world = &world_static.instances[0]; - for( u32 i=0; ient_npc); i ++ ) + for( u32 i=0; ient_npc); i ++ ) { - ent_npc *fnpc = mdl_arritm( &world->ent_npc, i ); + ent_npc *fnpc = af_arritm( &world->ent_npc, i ); if( (fnpc->id == 50) && (fnpc->context == id) ) { if( mdl_entity_id_type(fnpc->camera) == k_ent_camera ) { u32 index = mdl_entity_id_id( fnpc->camera ); - menu.bg_cam = mdl_arritm( &world->ent_camera, index ); + menu.bg_cam = af_arritm( &world->ent_camera, index ); menu.bg_blur = 0; } } @@ -734,7 +734,7 @@ void menu_gui( ui_context *ctx ) if( world->status == k_world_status_loaded ) { const char *world_name = - mdl_pstr( &world->meta, world->info.pstr_name ); + ps_get( &world->meta.strings, world->info.pstr_name ); vg_strnull( &str, buf, sizeof(buf) ); vg_strcat( &str, world_name ); @@ -781,14 +781,15 @@ void menu_gui( ui_context *ctx ) ui_rect_pad( stat_panel, (ui_px[2]){8,0} ); - for( u32 i=0; ient_region ); i ++ ) + for( u32 i=0; ient_region ); i ++ ) { - ent_region *region = mdl_arritm( &world->ent_region, i ); + ent_region *region = af_arritm( &world->ent_region, i ); if( !region->zone_volume ) continue; - const char *title = mdl_pstr( &world->meta, region->pstr_title ); + const char *title = ps_get( &world->meta.strings, + region->pstr_title ); ctx->font = &vgf_default_large; ui_rect title_box; @@ -798,7 +799,7 @@ void menu_gui( ui_context *ctx ) stat_panel[2] -= 16; ctx->font = &vgf_default_small; - ent_volume *volume = mdl_arritm(&world->ent_volume, + ent_volume *volume = af_arritm(&world->ent_volume, mdl_entity_id_id(region->zone_volume)); u32 combined = k_ent_route_flag_achieve_gold | @@ -807,9 +808,9 @@ void menu_gui( ui_context *ctx ) char buf[128]; vg_str str; - for( u32 j=0; jent_route); j ++ ) + for( u32 j=0; jent_route); j ++ ) { - ent_route *route = mdl_arritm(&world->ent_route, j ); + ent_route *route = af_arritm(&world->ent_route, j ); v3f local; m4x3_mulv( volume->to_local, route->board_transform[3], local ); @@ -824,7 +825,7 @@ void menu_gui( ui_context *ctx ) vg_strnull( &str, buf, sizeof(buf) ); vg_strcat( &str, "(Race) " ); - vg_strcat( &str, mdl_pstr(&world->meta, route->pstr_name)); + vg_strcat( &str, ps_get(&world->meta.strings, route->pstr_name)); if( route->flags & k_ent_route_flag_achieve_silver ) vg_strcat( &str, " \xb3"); @@ -837,9 +838,9 @@ void menu_gui( ui_context *ctx ) medal_colour( ctx, route->flags ) ); } - for( u32 j=0; jent_challenge); j ++ ) + for( u32 j=0; jent_challenge); j ++ ) { - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, j ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, j ); v3f local; m4x3_mulv( volume->to_local, challenge->transform.co, local ); @@ -851,7 +852,8 @@ void menu_gui( ui_context *ctx ) } vg_strnull( &str, buf, sizeof(buf) ); - vg_strcat( &str, mdl_pstr(&world->meta, challenge->pstr_alias)); + vg_strcat( &str, ps_get(&world->meta.strings, + challenge->pstr_alias)); u32 flags = 0x00; if( challenge->status ) diff --git a/src/metascene.c b/src/metascene.c new file mode 100644 index 0000000..4bb0ca1 --- /dev/null +++ b/src/metascene.c @@ -0,0 +1,45 @@ +#include "metascene.h" + +void metascene_load( ms_context *ms, const char *path, void *alloc ) +{ + memset( ms, 0, sizeof( ms_context ) ); + FILE *fp = fopen( path, "rb" ); + + if( !fp ) + { + vg_fatal_condition(); + vg_info( "metascene_load( '%s' ): %s\n", path, strerror(errno) ); + vg_fatal_exit(); + } + + u64 l = fread( &ms->info, sizeof(ms_header), 1, fp ); + if( l != 1 ) + { + vg_fatal_condition(); + vg_info( "Read corruption error" ); + vg_fatal_exit(); + } + + if( ms->info.version < MS_VERSION_MIN ) + { + vg_fatal_condition(); + vg_info( "Legacy metascene version incompatable" ); + vg_info( "For file: %s\n", path ); + vg_info( " version: %u (min: %u, current: %u)\n", + ms->info.version, MS_VERSION_MIN, MS_VERSION_NR ); + vg_fatal_exit(); + } + + af_load_array_file( fp, &ms->index, &ms->info.index, alloc, + sizeof(array_file_meta) ); + + af_load_array( fp, &ms->index, &ms->strings, "strings", alloc, 1 ); + AF_LOAD_ARRAY_STRUCT( fp, &ms->index, &ms->instances, ms_instance, alloc ); + AF_LOAD_ARRAY_STRUCT( fp, &ms->index, &ms->overrides, ms_override, alloc ); + AF_LOAD_ARRAY_STRUCT( fp, &ms->index, &ms->strips, ms_strip, alloc ); + AF_LOAD_ARRAY_STRUCT( fp, &ms->index, &ms->tracks, ms_track, alloc ); + AF_LOAD_ARRAY_STRUCT( fp, &ms->index, &ms->keyframes, ms_keyframe, alloc ); + af_load_array( fp, &ms->index, &ms->curves, "ms_curves", + alloc, sizeof(ms_curve_keyframe) ); + fclose( fp ); +} diff --git a/src/metascene.h b/src/metascene.h new file mode 100644 index 0000000..6b7685d --- /dev/null +++ b/src/metascene.h @@ -0,0 +1,76 @@ +#pragma once +#include "model.h" + +#define MS_VERSION_NR 1 +#define MS_VERSION_MIN 1 + +typedef struct ms_context ms_context; +typedef struct ms_header ms_header; +typedef struct ms_instance ms_instance; +typedef struct ms_override ms_override; +typedef struct ms_strip ms_strip; +typedef struct ms_track ms_track; +typedef struct ms_curve_keyframe ms_curve_keyframe; +typedef struct mdl_transform ms_keyframe; + +struct ms_header +{ + u32 version; + f32 framerate; + array_file_meta index; +}; + +struct ms_context +{ + ms_header info; + struct array_file_ptr index, + strings, + + instances, + overrides, + strips, + tracks, + keyframes, + curves; +}; + +struct ms_instance +{ + u32 pstr_name, + override_start, + override_count; +}; + +struct ms_override +{ + u32 pstr_name; + mdl_transform transform; +}; + +struct ms_strip +{ + u32 data_start, + data_count, + data_mode, + offset, + length, + pstr_name, + pstr_internal_name, + instance_id, + object_id; +}; + +struct ms_track +{ + u32 keyframe_start, + keyframe_count, + pstr_datapath, + semantic_type; +}; + +struct ms_curve_keyframe +{ + v2f co, l, r; +}; + +void metascene_load( ms_context *ms, const char *path, void *alloc ); diff --git a/src/model.c b/src/model.c index f3f7ab2..fc7e387 100644 --- a/src/model.c +++ b/src/model.c @@ -18,6 +18,7 @@ #include #include "model.h" #include "shader_props.h" +#include "array_file.h" static void mdl_load_fatal_corrupt( mdl_context *mdl ) { @@ -37,7 +38,7 @@ void mdl_fread_pack_file( mdl_context *mdl, mdl_file *info, void *dst ) { vg_fatal_condition(); vg_info( "Packed file is only a header; it is not packed" ); - vg_info( "path: %s\n", mdl_pstr( mdl, info->pstr_path ) ); + vg_info( "path: %s\n", ps_get( &mdl->strings, info->pstr_path ) ); vg_fatal_exit(); } @@ -47,132 +48,31 @@ void mdl_fread_pack_file( mdl_context *mdl, mdl_file *info, void *dst ) if( l != 1 ) mdl_load_fatal_corrupt( mdl ); } -/* TODO: Rename these */ -static void mdl_load_array_file_buffer( mdl_context *mdl, mdl_array *arr, - void *buffer, u32 stride ) +int mdl_load_array( mdl_context *mdl, array_file_ptr *ptr, const char *name, + void *lin_alloc, u32 stride ) { - if( arr->item_count ) - { - fseek( mdl->file, arr->file_offset, SEEK_SET ); - - if( stride == arr->item_size ) - { - u64 l = fread( buffer, arr->item_size*arr->item_count, 1, mdl->file ); - if( l != 1 ) mdl_load_fatal_corrupt( mdl ); - } - else - { - 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 ) - memset( buffer, 0, stride*arr->item_count ); - - u32 read_size = VG_MIN( stride, arr->item_size ); - - for( u32 i=0; iitem_count; i++ ) - { - u64 l = fread( buffer+i*stride, read_size, 1, mdl->file ); - if( stride < arr->item_size ) - fseek( mdl->file, arr->item_size-stride, SEEK_CUR ); - - if( l != 1 ) mdl_load_fatal_corrupt( mdl ); - } - } - } -} - -static void mdl_load_array_file( mdl_context *mdl, mdl_array_ptr *ptr, - mdl_array *arr, void *lin_alloc, u32 stride ) -{ - if( arr->item_count ) - { - u32 size = stride*arr->item_count; - ptr->data = lin_alloc? vg_linear_alloc( lin_alloc, vg_align8(size) ): - malloc( size ); - mdl_load_array_file_buffer( mdl, arr, ptr->data, stride ); - } - else - { - ptr->data = NULL; - } - - ptr->stride = stride; - ptr->count = arr->item_count; -} - -void *mdl_arritm( mdl_array_ptr *arr, u32 index ) -{ - return ((u8 *)arr->data) + index*arr->stride; -} - -u32 mdl_arrcount( mdl_array_ptr *arr ) -{ - return arr->count; -} - -static mdl_array *mdl_find_array( mdl_context *mdl, const char *name ) -{ - for( u32 i=0; iindex); i++ ) - { - mdl_array *arr = mdl_arritm( &mdl->index, i ); - - if( !strncmp(arr->name,name,16) ) - return arr; - } - - return NULL; -} - -int _mdl_load_array( mdl_context *mdl, mdl_array_ptr *ptr, - const char *name, void *lin_alloc, u32 stride ) -{ - mdl_array *arr = mdl_find_array( mdl, name ); - - if( arr ) - { - mdl_load_array_file( mdl, ptr, arr, lin_alloc, stride ); - return 1; - } - else - { - ptr->data = NULL; - ptr->count = 0; - ptr->stride = 0; - return 0; - } + return af_load_array( mdl->file, &mdl->index, ptr, name, lin_alloc, stride ); } int mdl_load_mesh_block( mdl_context *mdl, void *lin_alloc ) { - int success = 1; - - success &= MDL_LOAD_ARRAY( mdl, &mdl->verts, mdl_vert, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->indices, mdl_indice, lin_alloc ); - - return success; + int s = 1; + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->verts, mdl_vert, lin_alloc ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->indices, mdl_indice, lin_alloc ); + return s; } int mdl_load_metadata_block( mdl_context *mdl, void *lin_alloc ) { - int success = 1; - - success &= _mdl_load_array( mdl, &mdl->strings, "strings", lin_alloc, 1 ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->meshs, mdl_mesh, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->submeshs, mdl_submesh, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->textures, mdl_texture, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->armatures, mdl_armature, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->bones, mdl_bone, lin_alloc ); - success &= MDL_LOAD_ARRAY( mdl, &mdl->animations,mdl_animation,lin_alloc ); - - success &= mdl_load_materials( mdl, lin_alloc ); - - return success; -} - -int mdl_load_animation_block( mdl_context *mdl, void *lin_alloc ) -{ - return MDL_LOAD_ARRAY( mdl, &mdl->keyframes, mdl_keyframe, lin_alloc ); + int s = 1; + s &= mdl_load_array ( mdl, &mdl->strings, "strings", lin_alloc, 1 ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->meshs, mdl_mesh, lin_alloc ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->submeshs, mdl_submesh, lin_alloc ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->textures, mdl_texture, lin_alloc ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->armatures, mdl_armature, lin_alloc ); + s &= MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->bones, mdl_bone, lin_alloc ); + s &= mdl_load_materials( mdl, lin_alloc ); + return s; } void *mdl_shader_standard( vg_msg *msg, void *alloc ) @@ -182,7 +82,6 @@ void *mdl_shader_standard( vg_msg *msg, void *alloc ) vg_msg_getkvintg( msg, "tex_diffuse", k_vg_msg_u32, &props->tex_diffuse, NULL ); - return props; } @@ -247,7 +146,8 @@ void *mdl_shader_cubemapped( vg_msg *msg, void *alloc ) return props; } -bool _mdl_legacy_v105_properties( struct mdl_material_v105 *mat, vg_msg *dst ) +static bool mdl_legacy_v105_properties( struct mdl_material_v105 *mat, + vg_msg *dst ) { vg_msg_wkvnum( dst, "tex_diffuse", k_vg_msg_u32, 1, &mat->tex_diffuse ); @@ -276,27 +176,27 @@ bool _mdl_legacy_v105_properties( struct mdl_material_v105 *mat, vg_msg *dst ) int mdl_load_materials( mdl_context *mdl, void *lin_alloc ) { - MDL_LOAD_ARRAY( mdl, &mdl->materials, mdl_material, lin_alloc ); + MDL_LOAD_ARRAY_STRUCT( mdl, &mdl->materials, mdl_material, lin_alloc ); #if (MDL_VERSION_MIN <= 105) /* load legacy material data into scratch */ - mdl_array_ptr legacy_materials; + array_file_ptr legacy_materials; if( mdl->info.version <= 105 ) { - _mdl_load_array( mdl, &legacy_materials, "mdl_material", vg_mem.scratch, - sizeof(struct mdl_material_v105) ); + mdl_load_array( mdl, &legacy_materials, "mdl_material", vg_mem.scratch, + sizeof(struct mdl_material_v105) ); } #endif - mdl_array_ptr data; - _mdl_load_array( mdl, &data, "shader_data", vg_mem.scratch, 1 ); + array_file_ptr data; + mdl_load_array( mdl, &data, "shader_data", vg_mem.scratch, 1 ); if( !lin_alloc ) return 1; - for( u32 i=0; imaterials); i ++ ) + for( u32 i=0; imaterials); i ++ ) { - mdl_material *mat = mdl_arritm( &mdl->materials, i ); + mdl_material *mat = af_arritm( &mdl->materials, i ); vg_msg msg; #if (MDL_VERSION_MIN <= 105) @@ -304,7 +204,7 @@ int mdl_load_materials( mdl_context *mdl, void *lin_alloc ) if( mdl->info.version <= 105 ) { vg_msg_init( &msg, legacy_buf, sizeof(legacy_buf) ); - _mdl_legacy_v105_properties( mdl_arritm( &legacy_materials,i ), &msg ); + mdl_legacy_v105_properties( af_arritm( &legacy_materials,i ), &msg ); vg_msg_init( &msg, legacy_buf, msg.cur.co ); } else @@ -373,10 +273,10 @@ void mdl_open( mdl_context *mdl, const char *path, void *lin_alloc ) vg_fatal_exit(); } - mdl_load_array_file( mdl, &mdl->index, &mdl->info.index, lin_alloc, - sizeof(mdl_array) ); + af_load_array_file( mdl->file, &mdl->index, &mdl->info.index, lin_alloc, + sizeof(array_file_meta) ); - mdl_array *pack = mdl_find_array( mdl, "pack" ); + array_file_meta *pack = af_find_array( &mdl->index, "pack" ); if( pack ) mdl->pack_base_offset = pack->file_offset; else mdl->pack_base_offset = 0; } @@ -401,22 +301,6 @@ void mdl_transform_m4x3( mdl_transform *transform, m4x3f mtx ) v3_copy( transform->co, mtx[3] ); } -const char *mdl_pstr( mdl_context *mdl, u32 pstr ) -{ - return ((char *)mdl_arritm( &mdl->strings, pstr )) + 4; -} - - -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; -} - /* * Simple mesh interface for OpenGL * ---------------------------------------------------------------------------- @@ -510,13 +394,12 @@ void mdl_draw_submesh( mdl_submesh *sm ) mdl_mesh *mdl_find_mesh( mdl_context *mdl, const char *name ) { - for( u32 i=0; imeshs ); i++ ) + u32 hash = vg_strdjb2( name ); + for( u32 i=0; imeshs ); i++ ) { - mdl_mesh *mesh = mdl_arritm( &mdl->meshs, i ); - if( !strcmp( name, mdl_pstr( mdl, mesh->pstr_name ))) - { + mdl_mesh *mesh = af_arritm( &mdl->meshs, i ); + if( ps_consteq( &mdl->strings, mesh->pstr_name, name, hash ) ) return mesh; - } } return NULL; } @@ -528,7 +411,7 @@ mdl_submesh *mdl_find_submesh( mdl_context *mdl, const char *mesh_name ) if( !mesh ) return NULL; if( !mesh->submesh_count ) return NULL; - return mdl_arritm( &mdl->submeshs, mesh->submesh_start ); + return af_arritm( &mdl->submeshs, mesh->submesh_start ); } #ifdef VG_3D @@ -552,8 +435,8 @@ static void _sync_mdl_load_glmesh( void *payload, u32 size ) void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh, u32 *fixup_table ) { - mdl_array *arr_vertices = mdl_find_array( mdl, "mdl_vert" ); - mdl_array *arr_indices = mdl_find_array( mdl, "mdl_indice" ); + array_file_meta *arr_vertices = af_find_array( &mdl->index, "mdl_vert" ); + array_file_meta *arr_indices = af_find_array( &mdl->index, "mdl_indice" ); if( arr_vertices && arr_indices ) { @@ -573,9 +456,9 @@ void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh, u32 *fixup_table ) job->vertex_count = arr_vertices->item_count; job->indice_count = arr_indices->item_count; - mdl_load_array_file_buffer( mdl, arr_vertices, + af_load_array_file_buffer( mdl->file, arr_vertices, job->verts, sizeof(mdl_vert) ); - mdl_load_array_file_buffer( mdl, arr_indices, job->indices, + af_load_array_file_buffer( mdl->file, arr_indices, job->indices, sizeof(mdl_indice) ); if( fixup_table ) @@ -596,14 +479,14 @@ void mdl_async_load_glmesh( mdl_context *mdl, glmesh *mesh, u32 *fixup_table ) * --------------------------------------------------------- */ - if( mdl_arrcount( &mdl->submeshs ) ) + if( af_arrcount( &mdl->submeshs ) ) { - mdl_submesh *sm = mdl_arritm( &mdl->submeshs, 0 ); + mdl_submesh *sm = af_arritm( &mdl->submeshs, 0 ); u32 offset = sm->vertex_count; - for( u32 i=1; isubmeshs ); i++ ) + for( u32 i=1; isubmeshs ); i++ ) { - mdl_submesh *sm = mdl_arritm( &mdl->submeshs, i ); + mdl_submesh *sm = af_arritm( &mdl->submeshs, i ); u32 *indices = job->indices + sm->indice_start; for( u32 j=0; jindice_count; j++ ) @@ -633,10 +516,10 @@ void mdl_async_full_load_std( mdl_context *mdl ) { mdl_async_load_glmesh( mdl, &mdl->mesh, NULL ); - for( u32 i=0; itextures ); i ++ ) + for( u32 i=0; itextures ); i ++ ) { vg_linear_clear( vg_mem.scratch ); - mdl_texture *tex = mdl_arritm( &mdl->textures, i ); + mdl_texture *tex = af_arritm( &mdl->textures, i ); void *data = vg_linear_alloc( vg_mem.scratch, tex->file.pack_size ); mdl_fread_pack_file( mdl, &tex->file, data ); diff --git a/src/model.h b/src/model.h index aade46a..b706482 100644 --- a/src/model.h +++ b/src/model.h @@ -5,7 +5,9 @@ #pragma once #define MDL_VERSION_MIN 101 -#define MDL_VERSION_NR 106 +#define MDL_VERSION_NR 107 + +#include "array_file.h" enum mdl_shader{ k_shader_standard = 0, @@ -67,7 +69,6 @@ struct mdl_vert typedef u32 mdl_indice; typedef struct mdl_context mdl_context; -typedef struct mdl_array_ptr mdl_array_ptr; typedef struct mdl_vert mdl_vert; typedef struct mdl_transform mdl_transform; typedef struct mdl_submesh mdl_submesh; @@ -75,11 +76,9 @@ typedef struct mdl_material mdl_material; typedef struct mdl_bone mdl_bone; typedef struct mdl_armature mdl_armature; typedef struct mdl_animation mdl_animation; -typedef struct mdl_transform mdl_keyframe; typedef struct mdl_mesh mdl_mesh; typedef struct mdl_file mdl_file; typedef struct mdl_texture mdl_texture; -typedef struct mdl_array mdl_array; typedef struct mdl_header mdl_header; typedef struct glmesh glmesh; @@ -202,18 +201,20 @@ struct mdl_armature mdl_transform transform; u32 bone_start, bone_count, - anim_start, - anim_count; -}; + anim_start_OBSOLETE_107, // obsolete 107+ + anim_count_OBSOLETE_107, // . -struct mdl_animation -{ - u32 pstr_name, - length; - float rate; - u32 offset; + pstr_name; // v107+ }; +// struct mdl_animation +// { +// u32 pstr_name, +// length; +// float rate; +// u32 offset; +// }; + struct mdl_submesh { u32 indice_start, @@ -247,19 +248,10 @@ struct mdl_texture u32 glname; }; -struct mdl_array -{ - u32 file_offset, - item_count, - item_size; - - char name[16]; -}; - struct mdl_header { u32 version; - mdl_array index; + array_file_meta index; }; struct mdl_context @@ -267,12 +259,7 @@ struct mdl_context FILE *file; mdl_header info; - struct mdl_array_ptr - { - void *data; - u32 count, stride; - } - index, + struct array_file_ptr index, /* metadata */ strings, @@ -282,10 +269,6 @@ struct mdl_context textures, armatures, bones, - animations, - - /* animation buffers */ - keyframes, /* mesh buffers */ verts, @@ -305,21 +288,16 @@ void mesh_free( glmesh *mesh ); void mdl_open( mdl_context *mdl, const char *path, void *lin_alloc ); void mdl_close( mdl_context *mdl ); -/* array loading */ -int _mdl_load_array( mdl_context *mdl, mdl_array_ptr *ptr, - const char *name, void *lin_alloc, u32 stride ); -#define MDL_LOAD_ARRAY( MDL, PTR, STRUCT, ALLOCATOR ) \ - _mdl_load_array( MDL, PTR, #STRUCT, ALLOCATOR, sizeof(STRUCT) ) +int mdl_load_array( mdl_context *mdl, array_file_ptr *ptr, const char *name, + void *lin_alloc, u32 stride ); -/* array access */ -void *mdl_arritm( mdl_array_ptr *arr, u32 index ); -u32 mdl_arrcount( mdl_array_ptr *arr ); +#define MDL_LOAD_ARRAY_STRUCT( MDL, PTR, STRUCT, ALLOCATOR ) \ + mdl_load_array( MDL, PTR, #STRUCT, ALLOCATOR, sizeof(STRUCT) ) /* pack access */ void mdl_fread_pack_file( mdl_context *mdl, mdl_file *info, void *dst ); /* standard array groups */ -int mdl_load_animation_block( mdl_context *mdl, void *lin_alloc ); int mdl_load_metadata_block( mdl_context *mdl, void *lin_alloc ); int mdl_load_mesh_block( mdl_context *mdl, void *lin_alloc ); int mdl_load_materials( mdl_context *mdl, void *lin_alloc ); @@ -335,11 +313,5 @@ void mdl_draw_submesh( mdl_submesh *sm ); mdl_mesh *mdl_find_mesh( mdl_context *mdl, const char *name ); mdl_submesh *mdl_find_submesh( mdl_context *mdl, const char *mesh_name ); -/* pstrs */ -const char *mdl_pstr( mdl_context *mdl, u32 pstr ); -int mdl_pstreq( mdl_context *mdl, u32 pstr, const char *str, u32 djb2 ); -#define MDL_CONST_PSTREQ( MDL, Q, CONSTSTR )\ - mdl_pstreq( MDL, Q, CONSTSTR, vg_strdjb2( CONSTSTR ) ) - void mdl_transform_m4x3( mdl_transform *transform, m4x3f mtx ); diff --git a/src/player.c b/src/player.c index 551b39b..2a57488 100644 --- a/src/player.c +++ b/src/player.c @@ -180,7 +180,7 @@ void player__pass_gate( u32 id ) localplayer.boundary_hash &= ~NETMSG_BOUNDARY_MASK; localplayer.boundary_hash |= index; - ent_gate *gate = mdl_arritm( &world->ent_gate, mdl_entity_id_id(id) ); + ent_gate *gate = af_arritm( &world->ent_gate, mdl_entity_id_id(id) ); world_routes_fracture( world, gate, localplayer.rb.co, localplayer.rb.v ); localplayer.gate_waiting = gate; diff --git a/src/player.h b/src/player.h index ff8c2e1..47fabae 100644 --- a/src/player.h +++ b/src/player.h @@ -135,6 +135,7 @@ struct localplayer * Rendering */ mdl_context skeleton_meta; + ms_context animations; struct skeleton skeleton; u8 id_hip, @@ -187,6 +188,7 @@ void player__reset(void); void player__kill(void); void player__begin_holdout( v3f offset ); +void player_get_anim( skeleton_anim *out_anim, const char *name ); int localplayer_cmd_respawn( int argc, const char *argv[] ); void player_apply_transport_to_cam( m4x3f transport ); diff --git a/src/player_api.h b/src/player_api.h index f7f4785..51b21b6 100644 --- a/src/player_api.h +++ b/src/player_api.h @@ -1,5 +1,6 @@ #pragma once #include "model.h" +#include "metascene.h" typedef struct player_instance player_instance; typedef struct player_pose player_pose; @@ -14,7 +15,7 @@ struct player_pose{ v3f root_co; v4f root_q; - mdl_keyframe keyframes[32]; + ms_keyframe keyframes[32]; struct player_board_pose { f32 lean; diff --git a/src/player_dead.c b/src/player_dead.c index 43b6211..a5b5882 100644 --- a/src/player_dead.c +++ b/src/player_dead.c @@ -201,5 +201,5 @@ void player__dead_animator_exchange( bitpack_ctx *ctx, void *data ) void player__dead_bind(void) { struct skeleton *sk = &localplayer.skeleton; - player_dead.anim_bail = skeleton_get_anim( sk, "pose_bail_ball" ); + player_get_anim( &player_dead.anim_bail, "pose_bail_ball" ); } diff --git a/src/player_dead.h b/src/player_dead.h index 93b0cc3..b86c586 100644 --- a/src/player_dead.h +++ b/src/player_dead.h @@ -15,7 +15,7 @@ struct player_dead } animator; - struct skeleton_anim *anim_bail; + skeleton_anim anim_bail; } extern player_dead; extern struct player_subsystem_interface player_subsystem_dead; diff --git a/src/player_drive.c b/src/player_drive.c index 0462037..e55a668 100644 --- a/src/player_drive.c +++ b/src/player_drive.c @@ -46,7 +46,7 @@ void player__drive_pose( void *animator, player_pose *pose ) { struct skeleton *sk = &localplayer.skeleton; - skeleton_sample_anim( sk, player_drive.anim_drive, 0.0f, pose->keyframes ); + skeleton_sample_anim( sk, &player_drive.anim_drive, 0.0f, pose->keyframes ); v3_copy( localplayer.rb.co, pose->root_co ); v4_copy( localplayer.rb.q, pose->root_q ); } @@ -83,5 +83,5 @@ void player__drive_bind(void) { struct skeleton *sk = &localplayer.skeleton; player_drive.vehicle = &gzoomer; - player_drive.anim_drive = skeleton_get_anim( sk, "idle_cycle+y" ); + player_get_anim( &player_drive.anim_drive, "idle_cycle+y" ); } diff --git a/src/player_drive.h b/src/player_drive.h index 9a5649d..772a0d3 100644 --- a/src/player_drive.h +++ b/src/player_drive.h @@ -5,7 +5,7 @@ struct player_drive { drivable_vehicle *vehicle; - struct skeleton_anim *anim_drive; + skeleton_anim anim_drive; } extern player_drive; extern struct player_subsystem_interface player_subsystem_drive; diff --git a/src/player_glide.c b/src/player_glide.c index d9977ce..8eea910 100644 --- a/src/player_glide.c +++ b/src/player_glide.c @@ -307,7 +307,7 @@ void player_glide_pose( void *_animator, player_pose *pose ) pose->type = k_player_pose_type_ik; pose->board.lean = 0.0f; - skeleton_sample_anim( sk, player_glide.anim_glide, 0.0f, pose->keyframes ); + skeleton_sample_anim( sk, &player_glide.anim_glide, 0.0f, pose->keyframes ); v3f temp; q_mulv( animator->root_q, (v3f){0,-0.5f,0}, temp ); @@ -449,7 +449,7 @@ void player_glide_bind(void) /* resources */ struct skeleton *sk = &localplayer.skeleton; - player_glide.anim_glide = skeleton_get_anim( sk, "glide_pose" ); + player_get_anim( &player_glide.anim_glide, "glide_pose" ); void *alloc = vg_mem.rtmemory; mdl_context *mdl = &player_glide.glider; @@ -459,13 +459,13 @@ void player_glide_bind(void) mdl_async_full_load_std( mdl ); /* load trail positions */ - mdl_array_ptr markers; - MDL_LOAD_ARRAY( mdl, &markers, ent_marker, vg_mem.scratch ); + array_file_ptr markers; + MDL_LOAD_ARRAY_STRUCT( mdl, &markers, ent_marker, vg_mem.scratch ); mdl_close( mdl ); - for( u32 i=0; itransform.co, player_glide.trail_positions[ player_glide.trail_count ++ ] ); @@ -524,9 +524,9 @@ void render_glider_model( vg_camera *cam, world_instance *world, mdl_context *mdl = &player_glide.glider; mesh_bind( &player_glide.glider.mesh ); - for( u32 i=0; imeshs); i ++ ) + for( u32 i=0; imeshs); i ++ ) { - mdl_mesh *mesh = mdl_arritm( &mdl->meshs, i ); + mdl_mesh *mesh = af_arritm( &mdl->meshs, i ); m4x3f mmmdl; mdl_transform_m4x3( &mesh->transform, mmmdl ); @@ -546,7 +546,7 @@ void render_glider_model( vg_camera *cam, world_instance *world, for( u32 j=0; jsubmesh_count; j ++ ) { - mdl_submesh *sm = mdl_arritm( &mdl->submeshs, mesh->submesh_start+j ); + mdl_submesh *sm = af_arritm( &mdl->submeshs, mesh->submesh_start+j ); if( !sm->material_id ) { vg_error( "Invalid material ID 0\n" ); @@ -555,7 +555,7 @@ void render_glider_model( vg_camera *cam, world_instance *world, if( sm->material_id != current_mat ) { - mdl_material *mat = mdl_arritm( &mdl->materials,sm->material_id-1 ); + mdl_material *mat = af_arritm( &mdl->materials,sm->material_id-1 ); GLuint tex = vg.tex_missing; if( mat->shader == k_shader_standard ) @@ -563,7 +563,7 @@ void render_glider_model( vg_camera *cam, world_instance *world, struct shader_props_standard *props = mat->props.compiled; u32 index = props->tex_diffuse-1; - mdl_texture *ptex = mdl_arritm( &mdl->textures, index ); + mdl_texture *ptex = af_arritm( &mdl->textures, index ); tex = ptex->glname; } @@ -604,7 +604,7 @@ void player_glide_render( vg_camera *cam, world_instance *world, WORLD_BIND_LIGHT_BUFFERS_UB0_TEX234( world, model_board_view ); - mdl_keyframe kf_res; + ms_keyframe kf_res; if( localplayer.glider_orphan ){ rb_extrapolate( &player_glide.rb, kf_res.co, kf_res.q ); v3_fill( kf_res.s, 1.0f ); @@ -622,7 +622,7 @@ void player_glide_render( vg_camera *cam, world_instance *world, if( skaterift.activity != k_skaterift_replay ) vg_slewf( &player_glide.t, target, vg.time_frame_delta * 4.0f ); - mdl_keyframe kf_backpack; + ms_keyframe kf_backpack; struct skeleton *sk = &localplayer.skeleton; m4x3_mulv( localplayer.final_mtx[localplayer.id_chest ], diff --git a/src/player_glide.h b/src/player_glide.h index 03c8260..2a66764 100644 --- a/src/player_glide.h +++ b/src/player_glide.h @@ -5,7 +5,7 @@ struct player_glide { - struct skeleton_anim *anim_glide; + struct skeleton_anim anim_glide; struct player_glide_animator { diff --git a/src/player_ragdoll.c b/src/player_ragdoll.c index 1527d10..4fa37cd 100644 --- a/src/player_ragdoll.c +++ b/src/player_ragdoll.c @@ -561,8 +561,8 @@ void player_ragdoll_iter( struct player_ragdoll *rd ) if( run_sim && (v3_length2(player_dead.v_lpf)>(k_ragdoll_active_threshold* k_ragdoll_active_threshold)) ){ - mdl_keyframe anim[32]; - skeleton_sample_anim( &localplayer.skeleton, player_dead.anim_bail, + ms_keyframe anim[32]; + skeleton_sample_anim( &localplayer.skeleton, &player_dead.anim_bail, 0.0f, anim ); for( u32 i=0; icone_constraints_count; i ++ ){ @@ -583,7 +583,7 @@ void player_ragdoll_iter( struct player_ragdoll *rd ) struct ragdoll_part *pa = &rd->parts[ id_a ], *pp = &rd->parts[ id_p ]; - mdl_keyframe *kf = &anim[ pa->bone_id-1 ]; + ms_keyframe *kf = &anim[ pa->bone_id-1 ]; m3x3_mulv( pa->collider_mtx, st->coneva, vap ); q_mulv( kf->q, vap, vap ); diff --git a/src/player_render.c b/src/player_render.c index 15dec10..1531c34 100644 --- a/src/player_render.c +++ b/src/player_render.c @@ -15,13 +15,42 @@ #include "network.h" #include "player_remote.h" #include "player_glide.h" +#include "metascene.h" + +void player_load_animations( const char *path ) +{ + metascene_load( &localplayer.animations, path, vg_mem.rtmemory ); +} + +void player_get_anim( skeleton_anim *out_anim, const char *name ) +{ + ms_context *ms = &localplayer.animations; + u32 hash = vg_strdjb2( name ); + + for( u32 i=0; istrips ); i ++ ) + { + ms_strip *strip = af_arritm( &ms->strips, i ); + + if( ps_consteq( &ms->strings, strip->pstr_name, name, hash ) ) + { + out_anim->strip = strip; + out_anim->framerate = localplayer.animations.info.framerate; + out_anim->keyframes_base = + af_arritm( &localplayer.animations.keyframes, strip->data_start ); + return; + } + } + + vg_fatal_condition(); + vg_info( "Failed to find animation '%s' in metascene.\n", name ); + vg_fatal_exit(); +} void player_load_animation_reference( const char *path ) { mdl_context *meta = &localplayer.skeleton_meta; mdl_open( meta, path, vg_mem.rtmemory ); mdl_load_metadata_block( meta, vg_mem.rtmemory ); - mdl_load_animation_block( meta, vg_mem.rtmemory ); mdl_close( meta ); struct skeleton *sk = &localplayer.skeleton; @@ -35,8 +64,8 @@ void player_load_animation_reference( const char *path ) localplayer.id_ik_elbow_l = skeleton_bone_id( sk, "elbow.L" ); localplayer.id_ik_elbow_r = skeleton_bone_id( sk, "elbow.R" ); localplayer.id_head = skeleton_bone_id( sk, "head" ); - localplayer.id_foot_l = skeleton_bone_id( sk, "foot.L" ); - localplayer.id_foot_r = skeleton_bone_id( sk, "foot.R" ); + localplayer.id_foot_l = skeleton_bone_id( sk, "foot.L" ); + localplayer.id_foot_r = skeleton_bone_id( sk, "foot.R" ); localplayer.id_ik_foot_l = skeleton_bone_id( sk, "foot.IK.L" ); localplayer.id_ik_foot_r = skeleton_bone_id( sk, "foot.IK.R" ); localplayer.id_board = skeleton_bone_id( sk, "board" ); @@ -92,10 +121,10 @@ void dynamic_model_load( mdl_context *ctx, struct dynamic_model_1texture *mdl, const char *path, u32 *fixup_table ) { - if( !mdl_arrcount( &ctx->textures ) ) + if( !af_arrcount( &ctx->textures ) ) vg_fatal_error( "No texture in model" ); - mdl_texture *tex0 = mdl_arritm( &ctx->textures, 0 ); + mdl_texture *tex0 = af_arritm( &ctx->textures, 0 ); void *data = vg_linear_alloc( vg_mem.scratch, tex0->file.pack_size ); mdl_fread_pack_file( ctx, &tex0->file, data ); @@ -123,8 +152,8 @@ void player_board_load( struct player_board *board, const char *path ) dynamic_model_load( &ctx, &board->mdl, path, NULL ); - mdl_array_ptr markers; - MDL_LOAD_ARRAY( &ctx, &markers, ent_marker, vg_mem.scratch ); + array_file_ptr markers; + MDL_LOAD_ARRAY_STRUCT( &ctx, &markers, ent_marker, vg_mem.scratch ); /* TODO: you get put into a new section, the above is standard mdl loads. */ for( int i=0; i<4; i++ ) @@ -133,18 +162,18 @@ void player_board_load( struct player_board *board, const char *path ) board->trucks[i].indice_count = 0; board->board.indice_count = 0; - for( u32 i=0; ientity_id ) != k_ent_marker ) continue; u32 index = mdl_entity_id_id( mesh->entity_id ); - ent_marker *marker = mdl_arritm( &markers, index ); + ent_marker *marker = af_arritm( &markers, index ); - mdl_submesh *sm0 = mdl_arritm( &ctx.submeshs, mesh->submesh_start ); + mdl_submesh *sm0 = af_arritm( &ctx.submeshs, mesh->submesh_start ); - const char *alias = mdl_pstr( &ctx, marker->pstr_alias ); + const char *alias = ps_get( &ctx.strings, marker->pstr_alias ); u32 lr = marker->transform.co[0] > 0.0f? 1: 0, fb = marker->transform.co[2] > 0.0f? 0: 1; @@ -182,20 +211,23 @@ void player_model_load( struct player_model *board, const char *path) if( !ctx.armatures.count ) vg_fatal_error( "No armature in playermodel\n" ); - mdl_armature *armature = mdl_arritm( &ctx.armatures, 0 ); + mdl_armature *armature = af_arritm( &ctx.armatures, 0 ); u32 fixup_table[ armature->bone_count+1 ]; for( u32 i=0; ibone_count+1; i ++ ) fixup_table[i] = 0; - for( u32 i=1; iname ); - for( u32 j=1; jbone_count; j ++ ){ - mdl_bone *bone = mdl_arritm( &ctx.bones, armature->bone_start+j ); + for( u32 j=1; jbone_count; j ++ ) + { + mdl_bone *bone = af_arritm( &ctx.bones, armature->bone_start+j ); - if( mdl_pstreq( &ctx, bone->pstr_name, sb->name, hash ) ){ + if( ps_consteq( &ctx.strings, bone->pstr_name, sb->name, hash ) ) + { fixup_table[j+1] = i; break; } @@ -472,7 +504,7 @@ void render_board( vg_camera *cam, world_instance *world, m4x3f mlocal; m3x3_identity( mlocal ); - mdl_keyframe kf; + ms_keyframe kf; v3_zero( kf.co ); q_identity( kf.q ); v3_zero( kf.s ); @@ -606,13 +638,13 @@ void player__render( vg_camera *cam ) glDisable( GL_CULL_FACE ); } -void player_mirror_pose( mdl_keyframe pose[32], mdl_keyframe mirrored[32] ) +void player_mirror_pose( ms_keyframe pose[32], ms_keyframe mirrored[32] ) { - mdl_keyframe temp[32]; + ms_keyframe temp[32]; struct skeleton *sk = &localplayer.skeleton; for( u32 i=1; ibone_count; i ++ ){ - mdl_keyframe *dest = &temp[i-1]; + ms_keyframe *dest = &temp[i-1]; u8 mapping = localplayer.skeleton_mirror[i]; if( mapping ) *dest = pose[mapping-1]; /* R */ diff --git a/src/player_render.h b/src/player_render.h index cfc48e7..5a2a9cd 100644 --- a/src/player_render.h +++ b/src/player_render.h @@ -72,9 +72,10 @@ void apply_full_skeleton_pose( struct skeleton *sk, player_pose *pose, m4x3f *final_mtx ); void lerp_player_pose( player_pose *pose0, player_pose *pose1, f32 t, player_pose *posed ); -void player_mirror_pose( mdl_keyframe pose[32], - mdl_keyframe mirrored[32] ); +void player_mirror_pose( ms_keyframe pose[32], + ms_keyframe mirrored[32] ); void player__observe_system( enum player_subsystem id ); +void player_load_animations( const char *path ); void player_load_animation_reference( const char *path ); void player__render( vg_camera *cam ); void player__animate_from_replay( replay_buffer *replay ); diff --git a/src/player_skate.c b/src/player_skate.c index 387f1ec..9fc67ae 100644 --- a/src/player_skate.c +++ b/src/player_skate.c @@ -43,7 +43,7 @@ void player__skate_bind(void){ struct skeleton *sk = &localplayer.skeleton; rb_update_matrices( &localplayer.rb ); - struct { struct skeleton_anim **anim; const char *name; } + struct { struct skeleton_anim *anim; const char *name; } bindings[] = { { &player_skate.anim_grind, "pose_grind" }, { &player_skate.anim_grind_jump, "pose_grind_jump" }, @@ -60,7 +60,7 @@ void player__skate_bind(void){ }; for( u32 i=0; iactivity == k_skate_activity_handplant ){ state->handplant_t += vg.time_delta; - mdl_keyframe hpose[32]; + ms_keyframe hpose[32]; - struct skeleton_anim *anim = player_skate.anim_handplant; + struct skeleton_anim *anim = &player_skate.anim_handplant; int end = !skeleton_sample_anim_clamped( &localplayer.skeleton, anim, @@ -1204,7 +1204,7 @@ void player__skate_pre_update(void){ if( state->reverse < 0.0f ) player_mirror_pose( hpose, hpose ); - mdl_keyframe *kf_world = &hpose[ localplayer.id_world -1 ]; + ms_keyframe *kf_world = &hpose[ localplayer.id_world -1 ]; m4x3f world, mmdl, world_view; q_m3x3( kf_world->q, world ); v3_copy( kf_world->co, world[3] ); @@ -2713,7 +2713,7 @@ begin_collision:; u32 id = world_intersect_gates( world, localplayer.rb.co, state->prev_pos ); if( id ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, mdl_entity_id_id(id) ); + ent_gate *gate = af_arritm( &world->ent_gate, mdl_entity_id_id(id) ); m4x3_mulv( gate->transport, localplayer.rb.co, localplayer.rb.co ); m3x3_mulv( gate->transport, localplayer.rb.v, localplayer.rb.v ); @@ -3152,8 +3152,8 @@ void player__skate_pose( void *_animator, player_pose *pose ){ /* ANIMATIONS * ---------------------------------------------------------------------- */ - mdl_keyframe apose[32], bpose[32]; - mdl_keyframe ground_pose[32]; + ms_keyframe apose[32], bpose[32]; + ms_keyframe ground_pose[32]; { /* stand/crouch */ f32 dir_frame = animator->z * (15.0f/30.0f), @@ -3163,55 +3163,55 @@ void player__skate_pose( void *_animator, player_pose *pose ){ stand_blend = vg_clampf( 1.0f-animator->local_cog[1], 0, 1 ); - skeleton_sample_anim( sk, player_skate.anim_stand, dir_frame, apose ); - skeleton_sample_anim( sk, player_skate.anim_highg, dir_frame, bpose ); + skeleton_sample_anim( sk, &player_skate.anim_stand, dir_frame, apose ); + skeleton_sample_anim( sk, &player_skate.anim_highg, dir_frame, bpose ); skeleton_lerp_pose( sk, apose, bpose, stand_blend, apose ); /* sliding */ f32 slide_frame = animator->x * 0.25f + 0.25f; - skeleton_sample_anim( sk, player_skate.anim_slide, slide_frame, bpose ); + skeleton_sample_anim( sk, &player_skate.anim_slide, slide_frame, bpose ); - mdl_keyframe mirrored[32]; + ms_keyframe mirrored[32]; player_mirror_pose( bpose, mirrored ); skeleton_lerp_pose( sk, bpose, mirrored, animator->z, bpose ); skeleton_lerp_pose( sk, apose, bpose, animator->slide, apose ); if( animator->reverse > 0.0f ){ - skeleton_sample_anim( sk, player_skate.anim_push, animator->push_time, + skeleton_sample_anim( sk, &player_skate.anim_push, animator->push_time, bpose ); } else{ - skeleton_sample_anim( sk, player_skate.anim_push_reverse, + skeleton_sample_anim( sk, &player_skate.anim_push_reverse, animator->push_time, bpose ); } skeleton_lerp_pose( sk, apose, bpose, animator->push, apose ); struct skeleton_anim *jump_anim = animator->jump_dir? - player_skate.anim_ollie: - player_skate.anim_ollie_reverse; + &player_skate.anim_ollie: + &player_skate.anim_ollie_reverse; f32 setup_blend = vg_minf( animator->jump, 1.0f ); skeleton_sample_anim_clamped( sk, jump_anim, animator->jump_time, bpose ); skeleton_lerp_pose( sk, apose, bpose, setup_blend, ground_pose ); } - mdl_keyframe air_pose[32]; + ms_keyframe air_pose[32]; { float air_frame = (animator->airdir*0.5f+0.5f) * (15.0f/30.0f); - skeleton_sample_anim( sk, player_skate.anim_air, air_frame, apose ); + skeleton_sample_anim( sk, &player_skate.anim_air, air_frame, apose ); float ang = atan2f( animator->grab[0], animator->grab[1] ), ang_unit = (ang+VG_PIf) * (1.0f/VG_TAUf), grab_frame = ang_unit * (15.0f/30.0f); - skeleton_sample_anim( sk, player_skate.anim_grabs, grab_frame, bpose ); + skeleton_sample_anim( sk, &player_skate.anim_grabs, grab_frame, bpose ); skeleton_lerp_pose( sk, apose, bpose, animator->grabbing, air_pose ); } skeleton_lerp_pose( sk, ground_pose, air_pose, animator->fly, pose->keyframes ); - mdl_keyframe *kf_board = &pose->keyframes[localplayer.id_board-1], + ms_keyframe *kf_board = &pose->keyframes[localplayer.id_board-1], *kf_foot_l = &pose->keyframes[localplayer.id_ik_foot_l-1], *kf_foot_r = &pose->keyframes[localplayer.id_ik_foot_r-1], *kf_knee_l = &pose->keyframes[localplayer.id_ik_knee_l-1], @@ -3221,12 +3221,12 @@ void player__skate_pose( void *_animator, player_pose *pose ){ &pose->keyframes[localplayer.id_wheel_l-1] }; - mdl_keyframe grind_pose[32]; + ms_keyframe grind_pose[32]; { f32 frame = animator->grind_balance * 0.5f; - skeleton_sample_anim( sk, player_skate.anim_grind, frame, apose ); - skeleton_sample_anim( sk, player_skate.anim_grind_jump, frame, bpose ); + skeleton_sample_anim( sk, &player_skate.anim_grind, frame, apose ); + skeleton_sample_anim( sk, &player_skate.anim_grind_jump, frame, bpose ); skeleton_lerp_pose( sk, apose, bpose, animator->jump, grind_pose ); } skeleton_lerp_pose( sk, pose->keyframes, grind_pose, @@ -3257,22 +3257,23 @@ void player__skate_pose( void *_animator, player_pose *pose ){ v3_add( sk->bones[localplayer.id_hip].co, kf_hip->co, origin ); for( int i=0; ikeyframes[apply_to[i]-1]; + ms_keyframe *kf = &pose->keyframes[apply_to[i]-1]; keyframe_rotate_around( kf, origin, sk->bones[apply_to[i]].co, animator->qfixuptotal ); } #endif - if( animator->activity == k_skate_activity_handplant ){ - struct skeleton_anim *anim = player_skate.anim_handplant; + if( animator->activity == k_skate_activity_handplant ) + { + struct skeleton_anim *anim = &player_skate.anim_handplant; - mdl_keyframe hpose[32]; + ms_keyframe hpose[32]; skeleton_sample_anim_clamped( sk, anim, animator->handplant_t, hpose ); if( animator->reverse < 0.0f ) player_mirror_pose( hpose, hpose ); - mdl_keyframe *kf_world = &hpose[ localplayer.id_world -1 ]; + ms_keyframe *kf_world = &hpose[ localplayer.id_world -1 ]; m4x3f world, mmdl, world_view; q_m3x3( kf_world->q, world ); v3_copy( kf_world->co, world[3] ); @@ -3294,9 +3295,9 @@ void player__skate_pose( void *_animator, player_pose *pose ){ v3_copy( world_view[3], pose->root_co ); f32 t = animator->handplant_t, - frames = anim->length-1, + frames = anim->strip->length-1, length = animator->activity == k_skate_activity_handplant? - frames / anim->rate: + frames / anim->framerate: 999999, end_dist = vg_minf( t, length - t )/k_anim_transition, blend = vg_smoothstepf( vg_minf(1,end_dist) ); @@ -3368,7 +3369,7 @@ void player__skate_pose( void *_animator, player_pose *pose ){ #if 1 { - mdl_keyframe + ms_keyframe *kf_head = &pose->keyframes[localplayer.id_head-1], *kf_elbow_l = &pose->keyframes[localplayer.id_ik_elbow_l-1], *kf_elbow_r = &pose->keyframes[localplayer.id_ik_elbow_r-1], @@ -3438,7 +3439,7 @@ void player__skate_pose( void *_animator, player_pose *pose ){ q_axis_angle( qskid, (v3f){0,1,0}, -animator->steer[1]*0.2f ); for( u32 i=0; ikeyframes[ skidders[i]-1 ]; + ms_keyframe *kf = &pose->keyframes[ skidders[i]-1 ]; keyframe_rotate_around( kf, (v3f){0,0,0.4f*(animator->z*2.0f-1.0f)*amt}, sk->bones[skidders[i]].co, qskid ); diff --git a/src/player_skate.h b/src/player_skate.h index 3795c6e..c234bdc 100644 --- a/src/player_skate.h +++ b/src/player_skate.h @@ -151,12 +151,12 @@ struct player_skate{ /* animation /audio * --------------------------------------------------------------*/ - struct skeleton_anim *anim_stand, *anim_highg, *anim_slide, - *anim_air, *anim_grind, *anim_grind_jump, - *anim_push, *anim_push_reverse, - *anim_ollie, *anim_ollie_reverse, - *anim_grabs, *anim_stop, - *anim_handplant; + struct skeleton_anim anim_stand, anim_highg, anim_slide, + anim_air, anim_grind, anim_grind_jump, + anim_push, anim_push_reverse, + anim_ollie, anim_ollie_reverse, + anim_grabs, anim_stop, + anim_handplant; /* vectors representing the direction of the axels in localspace */ v3f truckv0[2]; diff --git a/src/player_walk.c b/src/player_walk.c index 1e15afc..cf0fa6d 100644 --- a/src/player_walk.c +++ b/src/player_walk.c @@ -247,7 +247,7 @@ static int player_walk_scan_for_drop_in(void){ static bool player__preupdate_anim( struct skeleton_anim *anim, f32 *t, f32 speed ){ - f32 length = (f32)(anim->length-1) / anim->rate; + f32 length = (f32)(anim->strip->length-1) / anim->framerate; *t += (vg.time_delta * speed) / length; if( *t >= 1.0f ) return 1; @@ -325,16 +325,16 @@ static void player_walk_pre_air(void){ static void player_walk_pre_drop_in(void){ struct player_walk *w = &player_walk; - bool finished = player__preupdate_anim( w->anim_drop_in, - &w->state.transition_t, 1.0f ); + bool finished = player__preupdate_anim( &w->anim_drop_in, + &w->state.transition_t, 1.0f ); if( finished ) player_walk_drop_in_to_skate(); } static void player_walk_pre_caveman(void){ struct player_walk *w = &player_walk; - bool finished = player__preupdate_anim( w->anim_jump_to_air, - &w->state.transition_t, 1.0f ); + bool finished = player__preupdate_anim( &w->anim_jump_to_air, + &w->state.transition_t, 1.0f ); if( finished ){ player_walk_generic_to_skate( k_skate_activity_air, player_walk.animator.board_yaw ); @@ -343,8 +343,8 @@ static void player_walk_pre_caveman(void){ static void player_walk_pre_running_start(void){ struct player_walk *w = &player_walk; - bool finished = player__preupdate_anim( w->anim_intro, - &w->state.transition_t, 1.0f ); + bool finished = player__preupdate_anim( &w->anim_intro, + &w->state.transition_t, 1.0f ); if( finished ){ /* TODO: get the derivative of the last keyframes to calculate new * velocity for player */ @@ -355,8 +355,8 @@ static void player_walk_pre_running_start(void){ static void player_walk_pre_popoff(void){ struct player_walk *w = &player_walk; - bool finished = player__preupdate_anim( w->anim_popoff, - &w->state.transition_t, 1.0f ); + bool finished = player__preupdate_anim( &w->anim_popoff, + &w->state.transition_t, 1.0f ); if( finished ){ w->state.activity = k_walk_activity_ground; @@ -672,7 +672,7 @@ static void player_walk_update_generic(void){ u32 id = world_intersect_gates(world, localplayer.rb.co, w->state.prev_pos); if( id ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, mdl_entity_id_id(id) ); + ent_gate *gate = af_arritm( &world->ent_gate, mdl_entity_id_id(id) ); m4x3_mulv( gate->transport, localplayer.rb.co, localplayer.rb.co ); m3x3_mulv( gate->transport, localplayer.rb.v, localplayer.rb.v ); @@ -784,12 +784,13 @@ void player__walk_update(void){ } } -static void player_walk_animate_drop_in(void){ +static void player_walk_animate_drop_in(void) +{ struct player_walk *w = &player_walk; struct player_walk_animator *animator = &w->animator; - struct skeleton_anim *anim = w->anim_drop_in; + struct skeleton_anim *anim = &w->anim_drop_in; - f32 length = (f32)(anim->length-1) / anim->rate, + f32 length = (f32)(anim->strip->length-1) / anim->framerate, time = w->state.transition_t; f32 walk_yaw = vg_alerpf( w->state.drop_in_start_angle, @@ -873,8 +874,8 @@ void player__walk_animate(void){ } if( animator->run > 0.025f ){ - f32 walk_norm = 30.0f/(float)w->anim_walk->length, - run_norm = 30.0f/(float)w->anim_run->length, + f32 walk_norm = 30.0f/(float)w->anim_walk.strip->length, + run_norm = 30.0f/(float)w->anim_run.strip->length, l; if( animator->run <= k_walkspeed ) @@ -917,14 +918,14 @@ void player__walk_animate(void){ static void player_walk_pose_sit( struct player_walk_animator *animator, player_pose *pose ) { - mdl_keyframe bpose[32]; + ms_keyframe bpose[32]; struct player_walk *w = &player_walk; struct skeleton *sk = &localplayer.skeleton; f32 t = animator->transition_t, - st = t * ((f32)(w->anim_sit->length-1)/30.0f); - skeleton_sample_anim( sk, w->anim_sit, st, bpose ); + st = t * ((f32)(w->anim_sit.strip->length-1)/30.0f); + skeleton_sample_anim( sk, &w->anim_sit, st, bpose ); v4f qy,qp; f32 *qh = bpose[localplayer.id_head-1].q; @@ -952,14 +953,14 @@ enum walk_transition_type { static void player_walk_pose_transition( struct player_walk_animator *animator, struct skeleton_anim *anim, enum walk_transition_type type, - mdl_keyframe apose[32], f32 *mask, player_pose *pose ){ + ms_keyframe apose[32], f32 *mask, player_pose *pose ){ - mdl_keyframe bpose[32]; + ms_keyframe bpose[32]; struct player_walk *w = &player_walk; struct skeleton *sk = &localplayer.skeleton; - f32 length = (f32)(anim->length-1) / anim->rate, + f32 length = (f32)(anim->strip->length-1) / anim->framerate, t = animator->transition_t * length, blend = 1.0f; @@ -973,7 +974,7 @@ static void player_walk_pose_transition( skeleton_sample_anim_clamped( sk, anim, t, bpose ); - mdl_keyframe *kf_board = &bpose[localplayer.id_board-1]; + ms_keyframe *kf_board = &bpose[localplayer.id_board-1]; f32 yaw = animator->board_yaw * VG_TAUf * 0.5f; v4f qyaw; @@ -999,32 +1000,32 @@ void player__walk_pose( void *_animator, player_pose *pose ){ pose->board.lean = 0.0f; pose->type = k_player_pose_type_ik; - float walk_norm = (float)w->anim_walk->length/30.0f, - run_norm = (float)w->anim_run->length/30.0f, + float walk_norm = (float)w->anim_walk.strip->length/30.0f, + run_norm = (float)w->anim_run.strip->length/30.0f, t = animator->walk_timer; /* walk/run */ - mdl_keyframe apose[32], bpose[32]; + ms_keyframe apose[32], bpose[32]; if( animator->run <= k_walkspeed ){ /* walk / idle */ f32 l = vg_minf( 1, (animator->run/k_walkspeed)*6.0f ); - skeleton_sample_anim( sk, w->anim_idle, vg.time*0.1f, apose ); - skeleton_sample_anim( sk, w->anim_walk, t*walk_norm, bpose ); + skeleton_sample_anim( sk, &w->anim_idle, vg.time*0.1f, apose ); + skeleton_sample_anim( sk, &w->anim_walk, t*walk_norm, bpose ); skeleton_lerp_pose( sk, apose, bpose, l, apose ); } else { /* walk / run */ f32 l = (animator->run-k_walkspeed) / (k_runspeed-k_walkspeed); - skeleton_sample_anim( sk, w->anim_walk, t*walk_norm, apose ); - skeleton_sample_anim( sk, w->anim_run, t*run_norm, bpose ); + skeleton_sample_anim( sk, &w->anim_walk, t*walk_norm, apose ); + skeleton_sample_anim( sk, &w->anim_run, t*run_norm, bpose ); skeleton_lerp_pose( sk, apose, bpose, l, apose ); } /* air */ - skeleton_sample_anim( sk, w->anim_jump, vg.time*0.6f, bpose ); + skeleton_sample_anim( sk, &w->anim_jump, vg.time*0.6f, bpose ); skeleton_lerp_pose( sk, apose, bpose, animator->fly, apose ); - mdl_keyframe *kf_board = &apose[localplayer.id_board-1]; + ms_keyframe *kf_board = &apose[localplayer.id_board-1]; f32 yaw = animator->board_yaw; if( animator->activity == k_walk_activity_ipopoff ) @@ -1045,17 +1046,17 @@ void player__walk_pose( void *_animator, player_pose *pose ){ } else if( animator->activity == k_walk_activity_odrop_in ){ player_walk_pose_transition( - animator, w->anim_drop_in, k_walk_transition_out, apose, + animator, &w->anim_drop_in, k_walk_transition_out, apose, NULL, pose ); } else if( animator->activity == k_walk_activity_oair ){ player_walk_pose_transition( - animator, w->anim_jump_to_air, k_walk_transition_out, apose, + animator, &w->anim_jump_to_air, k_walk_transition_out, apose, NULL, pose ); } else if( animator->activity == k_walk_activity_oregular ){ player_walk_pose_transition( - animator, w->anim_intro, k_walk_transition_out, apose, + animator, &w->anim_intro, k_walk_transition_out, apose, NULL, pose ); } else if( animator->activity == k_walk_activity_ipopoff ){ @@ -1072,12 +1073,12 @@ void player__walk_pose( void *_animator, player_pose *pose ){ mask[ localplayer.id_ik_knee_r-1 ] = t; mask[ localplayer.id_hip-1 ] = t; player_walk_pose_transition( - animator, w->anim_popoff, k_walk_transition_in, apose, + animator, &w->anim_popoff, k_walk_transition_in, apose, mask, pose ); } else{ player_walk_pose_transition( - animator, w->anim_popoff, k_walk_transition_in, apose, + animator, &w->anim_popoff, k_walk_transition_in, apose, NULL, pose ); } } @@ -1127,19 +1128,20 @@ void player__walk_im_gui( ui_context *ctx ) [w->surface] ); } -void player__walk_bind(void){ +void player__walk_bind(void) +{ struct player_walk *w = &player_walk; struct skeleton *sk = &localplayer.skeleton; - w->anim_idle = skeleton_get_anim( sk, "idle_cycle+y" ); - w->anim_walk = skeleton_get_anim( sk, "walk+y" ); - w->anim_run = skeleton_get_anim( sk, "run+y" ); - w->anim_jump = skeleton_get_anim( sk, "jump+y" ); - w->anim_jump_to_air = skeleton_get_anim( sk, "jump_to_air" ); - w->anim_drop_in = skeleton_get_anim( sk, "drop_in" ); - w->anim_intro = skeleton_get_anim( sk, "into_skate" ); - w->anim_sit = skeleton_get_anim( sk, "sit" ); - w->anim_popoff = skeleton_get_anim( sk, "pop_off_short" ); + player_get_anim( &w->anim_idle, "idle_cycle+y" ); + player_get_anim( &w->anim_walk, "walk+y" ); + player_get_anim( &w->anim_run, "run+y" ); + player_get_anim( &w->anim_jump, "jump+y" ); + player_get_anim( &w->anim_jump_to_air, "jump_to_air" ); + player_get_anim( &w->anim_drop_in, "drop_in" ); + player_get_anim( &w->anim_intro, "into_skate" ); + player_get_anim( &w->anim_sit, "sit" ); + player_get_anim( &w->anim_popoff, "pop_off_short" ); } void player__walk_transition( bool grounded, f32 board_yaw ){ diff --git a/src/player_walk.h b/src/player_walk.h index 5da0350..56b8914 100644 --- a/src/player_walk.h +++ b/src/player_walk.h @@ -49,9 +49,9 @@ struct player_walk f32 move_speed; enum mdl_surface_prop surface; - struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump, - *anim_jump_to_air, *anim_drop_in, *anim_intro, - *anim_sit, *anim_popoff; + struct skeleton_anim anim_walk, anim_run, anim_idle, anim_jump, + anim_jump_to_air, anim_drop_in, anim_intro, + anim_sit, anim_popoff; struct player_walk_animator { v3f root_co; diff --git a/src/scene.c b/src/scene.c index a94fbca..93cada9 100644 --- a/src/scene.c +++ b/src/scene.c @@ -61,10 +61,10 @@ void scene_add_mdl_submesh( scene_context *ctx, mdl_context *mdl, ctx->max_indices ); } - mdl_vert *src_verts = mdl_arritm( &mdl->verts, sm->vertex_start ); + mdl_vert *src_verts = af_arritm( &mdl->verts, sm->vertex_start ); scene_vert *dst_verts = &ctx->arrvertices[ ctx->vertex_count ]; - u32 *src_indices = mdl_arritm( &mdl->indices, sm->indice_start ), + u32 *src_indices = af_arritm( &mdl->indices, sm->indice_start ), *dst_indices = &ctx->arrindices[ ctx->indice_count ]; /* Transform and place vertices */ diff --git a/src/skaterift.c b/src/skaterift.c index 36e087f..b28ee45 100644 --- a/src/skaterift.c +++ b/src/skaterift.c @@ -143,6 +143,7 @@ static void skaterift_load_player_content(void) particle_alloc( &particles_env, 200 ); player_load_animation_reference( "models/ch_none.mdl" ); + player_load_animations( "metascenes/skater.ms" ); player_model_load( &localplayer.fallback_model, "models/ch_none.mdl" ); player__bind(); player_board_load( &localplayer.fallback_board, "models/board_none.mdl" ); @@ -674,6 +675,8 @@ void vg_gui( ui_context *ctx ) #include "world_volumes.c" #include "world_water.c" #include "ent_npc.c" +#include "array_file.c" #include "model.c" +#include "metascene.c" #include "control_overlay.c" #include "ent_camera.c" diff --git a/src/skeleton.h b/src/skeleton.h index 9729b64..9a3be61 100644 --- a/src/skeleton.h +++ b/src/skeleton.h @@ -16,7 +16,7 @@ struct skeleton u32 flags; int defer; - mdl_keyframe kf; + ms_keyframe kf; mdl_bone *orig_bone; u32 collider; @@ -26,21 +26,6 @@ struct skeleton *bones; u32 bone_count; - struct skeleton_anim - { - const char *name; - u32 length; - - float rate; - mdl_keyframe *anim_data; - } - *anims; - u32 anim_count; - -#if 0 - m4x3f *final_mtx; -#endif - struct skeleton_ik { u32 lower, upper, target, pole; @@ -54,6 +39,14 @@ struct skeleton bindable_count; }; +typedef struct skeleton_anim skeleton_anim; +struct skeleton_anim +{ + ms_strip *strip; + ms_keyframe *keyframes_base; + f32 framerate; +}; + static u32 skeleton_bone_id( struct skeleton *skele, const char *name ) { for( u32 i=1; ibone_count; i++ ){ @@ -67,7 +60,7 @@ static u32 skeleton_bone_id( struct skeleton *skele, const char *name ) return 0; } -static void keyframe_copy_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, +static void keyframe_copy_pose( ms_keyframe *kfa, ms_keyframe *kfb, int num ) { for( int i=0; iq ); } -static void keyframe_lerp( mdl_keyframe *kfa, mdl_keyframe *kfb, f32 t, - mdl_keyframe *kfd ){ +static void keyframe_lerp( ms_keyframe *kfa, ms_keyframe *kfb, f32 t, + ms_keyframe *kfd ){ v3_lerp( kfa->co, kfb->co, t, kfd->co ); q_nlerp( kfa->q, kfb->q, t, kfd->q ); v3_lerp( kfa->s, kfb->s, t, kfd->s ); @@ -100,8 +93,8 @@ static void keyframe_lerp( mdl_keyframe *kfa, mdl_keyframe *kfb, f32 t, /* * Lerp between two sets of keyframes and store in dest. Rotations use Nlerp. */ -static void keyframe_lerp_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, - float t, mdl_keyframe *kfd, int count ){ +static void keyframe_lerp_pose( ms_keyframe *kfa, ms_keyframe *kfb, + float t, ms_keyframe *kfd, int count ){ if( t <= 0.0001f ){ keyframe_copy_pose( kfa, kfd, count ); return; @@ -117,14 +110,14 @@ static void keyframe_lerp_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, static void skeleton_lerp_pose( struct skeleton *skele, - mdl_keyframe *kfa, mdl_keyframe *kfb, float t, - mdl_keyframe *kfd ) + ms_keyframe *kfa, ms_keyframe *kfb, float t, + ms_keyframe *kfd ) { keyframe_lerp_pose( kfa, kfb, t, kfd, skele->bone_count-1 ); } static void skeleton_copy_pose( struct skeleton *skele, - mdl_keyframe *kfa, mdl_keyframe *kfd ) + ms_keyframe *kfa, ms_keyframe *kfd ) { keyframe_copy_pose( kfa, kfd, skele->bone_count-1 ); } @@ -132,37 +125,40 @@ static void skeleton_copy_pose( struct skeleton *skele, /* * Sample animation between 2 closest frames using time value. Output is a * keyframe buffer that is allocated with an appropriate size + * + * Time is in SECONDS */ -static void skeleton_sample_anim( struct skeleton *skele, - struct skeleton_anim *anim, - float time, - mdl_keyframe *output ) +void skeleton_sample_anim( struct skeleton *skele, + skeleton_anim *anim, + float time, + ms_keyframe *output ) { - f32 animtime = fmodf( time*anim->rate, anim->length ), + ms_strip *strip = anim->strip; + f32 animtime = fmodf( time*anim->framerate, (f32)strip->length ), animframe = floorf( animtime ), t = animtime - animframe; - u32 frame = (u32)animframe % anim->length, - next = (frame+1) % anim->length; + u32 frame = (u32)animframe % strip->length, + next = (frame+1) % strip->length; - mdl_keyframe *base = anim->anim_data + (skele->bone_count-1)*frame, - *nbase = anim->anim_data + (skele->bone_count-1)*next; + ms_keyframe *base = anim->keyframes_base + strip->data_count*frame, + *nbase = anim->keyframes_base + strip->data_count*next; skeleton_lerp_pose( skele, base, nbase, t, output ); } -static int skeleton_sample_anim_clamped( struct skeleton *skele, - struct skeleton_anim *anim, - float time, - mdl_keyframe *output ) +/* time is in SECONDS */ +int skeleton_sample_anim_clamped( struct skeleton *skele, + skeleton_anim *anim, + float time, + ms_keyframe *output ) { - float end = (float)(anim->length-1) / anim->rate; + ms_strip *strip = anim->strip; + f32 end = (strip->length-1)/anim->framerate; skeleton_sample_anim( skele, anim, vg_minf( end, time ), output ); - if( time > end ) - return 0; - else - return 1; + if( time > end ) return 0; + else return 1; } typedef enum anim_apply @@ -205,11 +201,14 @@ int should_apply_bone( struct skeleton *skele, u32 id, anim_apply type ) /* * Apply block of keyframes to skeletons final pose */ -static void skeleton_apply_pose( struct skeleton *skele, mdl_keyframe *pose, - anim_apply passtype, m4x3f *final_mtx ){ - if( passtype == k_anim_apply_absolute ){ - for( u32 i=1; ibone_count; i++ ){ - mdl_keyframe *kf = &pose[i-1]; +static void skeleton_apply_pose( struct skeleton *skele, ms_keyframe *pose, + anim_apply passtype, m4x3f *final_mtx ) +{ + if( passtype == k_anim_apply_absolute ) + { + for( u32 i=1; ibone_count; i++ ) + { + ms_keyframe *kf = &pose[i-1]; v3f *posemtx = final_mtx[i]; @@ -224,7 +223,8 @@ static void skeleton_apply_pose( struct skeleton *skele, mdl_keyframe *pose, skele->bones[0].defer = 0; skele->bones[0].flags &= ~k_bone_flag_ik; - for( u32 i=1; ibone_count; i++ ){ + for( u32 i=1; ibone_count; i++ ) + { struct skeleton_bone *sb = &skele->bones[i], *sp = &skele->bones[sb->parent]; @@ -240,7 +240,7 @@ static void skeleton_apply_pose( struct skeleton *skele, mdl_keyframe *pose, v3_sub( skele->bones[i].co, skele->bones[sb->parent].co, temp_delta ); /* pose matrix */ - mdl_keyframe *kf = &pose[i-1]; + ms_keyframe *kf = &pose[i-1]; q_m3x3( kf->q, posemtx ); m3x3_scale( posemtx, kf->s ); v3_copy( kf->co, posemtx[3] ); @@ -255,11 +255,11 @@ static void skeleton_apply_pose( struct skeleton *skele, mdl_keyframe *pose, * Take the final matrices and decompose it into an absolute positioned anim */ static void skeleton_decompose_mtx_absolute( struct skeleton *skele, - mdl_keyframe *anim, + ms_keyframe *anim, m4x3f *final_mtx ){ for( u32 i=1; ibone_count; i++ ){ struct skeleton_bone *sb = &skele->bones[i]; - mdl_keyframe *kf = &anim[i-1]; + ms_keyframe *kf = &anim[i-1]; m4x3_decompose( final_mtx[i], kf->co, kf->q, kf->s ); } } @@ -331,8 +331,10 @@ static void skeleton_apply_inverses( struct skeleton *skele, m4x3f *final_mtx ){ /* * Apply all IK modifiers (2 bone ik reference from blender is supported) */ -static void skeleton_apply_ik_pass( struct skeleton *skele, m4x3f *final_mtx ){ - for( u32 i=0; iik_count; i++ ){ +static void skeleton_apply_ik_pass( struct skeleton *skele, m4x3f *final_mtx ) +{ + for( u32 i=0; iik_count; i++ ) + { struct skeleton_ik *ik = &skele->ik[i]; v3f v0, /* base -> target */ @@ -409,8 +411,9 @@ static void skeleton_apply_ik_pass( struct skeleton *skele, m4x3f *final_mtx ){ * Applies the typical operations that you want for an IK rig: * Pose, IK, Pose(deferred), Inverses, Transform */ -static void skeleton_apply_standard( struct skeleton *skele, mdl_keyframe *pose, - m4x3f transform, m4x3f *final_mtx ){ +static void skeleton_apply_standard( struct skeleton *skele, ms_keyframe *pose, + m4x3f transform, m4x3f *final_mtx ) +{ skeleton_apply_pose( skele, pose, k_anim_apply_defer_ik, final_mtx ); skeleton_apply_ik_pass( skele, final_mtx ); skeleton_apply_pose( skele, pose, k_anim_apply_deffered_only, final_mtx ); @@ -418,35 +421,18 @@ static void skeleton_apply_standard( struct skeleton *skele, mdl_keyframe *pose, skeleton_apply_transform( skele, transform, final_mtx ); } -/* - * Get an animation by name - */ -static struct skeleton_anim *skeleton_get_anim( struct skeleton *skele, - const char *name ){ - for( u32 i=0; ianim_count; i++ ){ - struct skeleton_anim *anim = &skele->anims[i]; - - if( !strcmp( anim->name, name ) ) - return anim; - } - - vg_error( "skeleton_get_anim( *, \"%s\" )\n", name ); - vg_fatal_error( "Invalid animation name\n" ); - - return NULL; -} - static void skeleton_alloc_from( struct skeleton *skele, void *lin_alloc, mdl_context *mdl, - mdl_armature *armature ){ + mdl_armature *armature ) +{ skele->bone_count = armature->bone_count+1; - skele->anim_count = armature->anim_count; skele->ik_count = 0; skele->collider_count = 0; - for( u32 i=0; ibone_count; i++ ){ - mdl_bone *bone = mdl_arritm( &mdl->bones, armature->bone_start+i ); + for( u32 i=0; ibone_count; i++ ) + { + mdl_bone *bone = af_arritm( &mdl->bones, armature->bone_start+i ); if( bone->flags & k_bone_flag_ik ) skele->ik_count ++; @@ -457,58 +443,54 @@ static void skeleton_alloc_from( struct skeleton *skele, u32 bone_size = sizeof(struct skeleton_bone) * skele->bone_count, ik_size = sizeof(struct skeleton_ik) * skele->ik_count, - mtx_size = sizeof(m4x3f) * skele->bone_count, - anim_size = sizeof(struct skeleton_anim) * skele->anim_count; + mtx_size = sizeof(m4x3f) * skele->bone_count; skele->bones = vg_linear_alloc( lin_alloc, bone_size ); skele->ik = vg_linear_alloc( lin_alloc, ik_size ); - //skele->final_mtx = vg_linear_alloc( lin_alloc, mtx_size ); - skele->anims = vg_linear_alloc( lin_alloc, anim_size ); memset( skele->bones, 0, bone_size ); memset( skele->ik, 0, ik_size ); - //memset( skele->final_mtx, 0, mtx_size ); - memset( skele->anims, 0, anim_size ); } static void skeleton_fatal_err(void){ vg_fatal_error( "Skeleton setup failed" ); } -/* Setup an animated skeleton from model. mdl's metadata should stick around */ +/* Setup a skeleton from model. mdl's metadata should stick around */ static void skeleton_setup( struct skeleton *skele, void *lin_alloc, mdl_context *mdl ){ u32 ik_count = 0, collider_count = 0; skele->bone_count = 0; skele->bones = NULL; - //skele->final_mtx = NULL; - skele->anims = NULL; if( !mdl->armatures.count ){ vg_error( "No skeleton in model\n" ); skeleton_fatal_err(); } - mdl_armature *armature = mdl_arritm( &mdl->armatures, 0 ); + mdl_armature *armature = af_arritm( &mdl->armatures, 0 ); skeleton_alloc_from( skele, lin_alloc, mdl, armature ); - for( u32 i=0; ibone_count; i++ ){ - mdl_bone *bone = mdl_arritm( &mdl->bones, armature->bone_start+i ); + for( u32 i=0; ibone_count; i++ ) + { + mdl_bone *bone = af_arritm( &mdl->bones, armature->bone_start+i ); struct skeleton_bone *sb = &skele->bones[i+1]; v3_copy( bone->co, sb->co ); v3_copy( bone->end, sb->end ); sb->parent = bone->parent; - sb->name = mdl_pstr( mdl, bone->pstr_name ); + sb->name = ps_get( &mdl->strings, bone->pstr_name ); sb->flags = bone->flags; sb->collider = bone->collider; sb->orig_bone = bone; - if( sb->flags & k_bone_flag_ik ){ + if( sb->flags & k_bone_flag_ik ) + { skele->bones[ sb->parent ].flags |= k_bone_flag_ik; - if( ik_count == skele->ik_count ){ + if( ik_count == skele->ik_count ) + { vg_error( "Too many ik bones, corrupt model file\n" ); skeleton_fatal_err(); } @@ -540,20 +522,20 @@ static void skeleton_setup( struct skeleton *skele, skele->bones[0].name = "[root]"; /* process animation quick refs */ - for( u32 i=0; ianim_count; i++ ){ - mdl_animation *anim = - mdl_arritm( &mdl->animations, armature->anim_start+i ); - - skele->anims[i].rate = anim->rate; - skele->anims[i].length = anim->length; - skele->anims[i].name = mdl_pstr(mdl, anim->pstr_name); - skele->anims[i].anim_data = - mdl_arritm( &mdl->keyframes, anim->offset ); - - vg_info( "animation[ %f, %u ] '%s'\n", anim->rate, - anim->length, - skele->anims[i].name ); - } + // for( u32 i=0; ianim_count; i++ ){ + // mdl_animation *anim = + // af_arritm( &mdl->animations, armature->anim_start+i ); + + // skele->anims[i].rate = anim->rate; + // skele->anims[i].length = anim->length; + // skele->anims[i].name = mdl_pstr(mdl, anim->pstr_name); + // skele->anims[i].anim_data = + // af_arritm( &mdl->keyframes, anim->offset ); + + // vg_info( "animation[ %f, %u ] '%s'\n", anim->rate, + // anim->length, + // skele->anims[i].name ); + // } skeleton_create_inverses( skele ); vg_success( "Loaded skeleton with %u bones\n", skele->bone_count ); diff --git a/src/workshop.c b/src/workshop.c index 7814b09..5501100 100644 --- a/src/workshop.c +++ b/src/workshop.c @@ -550,9 +550,9 @@ static void workshop_op_load_model( ui_context *ctx ) if( workshop_form.submission.type == k_addon_type_board ) { - if( mdl_arrcount( &world->ent_swspreview ) ) + if( af_arrcount( &world->ent_swspreview ) ) { - workshop_form.ptr_ent = mdl_arritm( &world->ent_swspreview, 0 ); + workshop_form.ptr_ent = af_arritm( &world->ent_swspreview, 0 ); } else { @@ -919,8 +919,9 @@ static void workshop_render_player_preview(void) player_pose res; res.type = k_player_pose_type_ik; - struct skeleton_anim *anim = skeleton_get_anim( sk, "idle_cycle+y" ); - skeleton_sample_anim( sk, anim, vg.time*0.1f, res.keyframes ); + skeleton_anim anim; + player_get_anim( &anim, "idle_cycle+y" ); + skeleton_sample_anim( sk, &anim, vg.time*0.1f, res.keyframes ); q_axis_angle( res.root_q, (v3f){0.0f,1.0f,0.0f}, VG_PIf ); v3_zero( res.root_co ); res.root_co[1] = 200.0f; @@ -978,11 +979,11 @@ static void workshop_render_board_preview(void) ent_swspreview *swsprev = workshop_form.ptr_ent; world_instance *world = workshop_form.view_world; - ent_camera *ref = mdl_arritm( &world->ent_camera, + ent_camera *ref = af_arritm( &world->ent_camera, mdl_entity_id_id(swsprev->id_camera) ); - ent_marker *display = mdl_arritm( &world->ent_marker, + ent_marker *display = af_arritm( &world->ent_marker, mdl_entity_id_id(swsprev->id_display) ), - *display1= mdl_arritm( &world->ent_marker, + *display1= af_arritm( &world->ent_marker, mdl_entity_id_id(swsprev->id_display1) ); v3f baseco; diff --git a/src/world.h b/src/world.h index 3a067db..30d8d63 100644 --- a/src/world.h +++ b/src/world.h @@ -163,7 +163,7 @@ struct world_instance { u32 surface_count; ent_worldinfo info; - mdl_array_ptr ent_spawn, + array_file_ptr ent_spawn, ent_gate, ent_light, ent_route_node, diff --git a/src/world_entity.c b/src/world_entity.c index b85e6fa..d551d81 100644 --- a/src/world_entity.c +++ b/src/world_entity.c @@ -89,7 +89,7 @@ void world_entity_focus_camera( world_instance *world, u32 uid ) if( mdl_entity_id_type( uid ) == k_ent_camera ) { u32 index = mdl_entity_id_id( uid ); - ent_camera *cam = mdl_arritm( &world->ent_camera, index ); + ent_camera *cam = af_arritm( &world->ent_camera, index ); ent_camera_unpack( cam, &world_static.focus_cam ); } else @@ -154,7 +154,7 @@ void world_entity_focus_render(void) index = mdl_entity_id_id( world_static.focused_entity ); if( type == k_ent_skateshop ){ - ent_skateshop *skateshop = mdl_arritm( &world->ent_skateshop, index ); + ent_skateshop *skateshop = af_arritm( &world->ent_skateshop, index ); skateshop_render( skateshop ); } else if( type == k_ent_challenge ){} @@ -169,8 +169,9 @@ void world_entity_focus_render(void) void world_gen_entities_init( world_instance *world ) { /* lights */ - for( u32 j=0; jent_light); j ++ ){ - ent_light *light = mdl_arritm( &world->ent_light, j ); + for( u32 j=0; jent_light); j ++ ) + { + ent_light *light = af_arritm( &world->ent_light, j ); m4x3f to_world; q_m3x3( light->transform.q, to_world ); @@ -185,9 +186,11 @@ void world_gen_entities_init( world_instance *world ) vg_async_stall(); /* water */ - for( u32 j=0; jent_water); j++ ){ - ent_water *water = mdl_arritm( &world->ent_water, j ); - if( world->water.enabled ){ + for( u32 j=0; jent_water); j++ ) + { + ent_water *water = af_arritm( &world->ent_water, j ); + if( world->water.enabled ) + { vg_warn( "Multiple water surfaces in level!\n" ); break; } @@ -197,21 +200,25 @@ void world_gen_entities_init( world_instance *world ) } /* volumes */ - for( u32 j=0; jent_volume); j++ ){ - ent_volume *volume = mdl_arritm( &world->ent_volume, j ); + for( u32 j=0; jent_volume); j++ ) + { + ent_volume *volume = af_arritm( &world->ent_volume, j ); mdl_transform_m4x3( &volume->transform, volume->to_world ); m4x3_invert_full( 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 j=0; jent_audio); j++ ) + { + ent_audio *audio = af_arritm( &world->ent_audio, j ); - for( u32 k=0; kclip_count; k++ ){ - ent_audio_clip *clip = mdl_arritm( &world->ent_audio_clip, + for( u32 k=0; kclip_count; k++ ) + { + ent_audio_clip *clip = af_arritm( &world->ent_audio_clip, audio->clip_start+k ); - if( clip->_.file.pack_size ){ + if( clip->_.file.pack_size ) + { u32 size = clip->_.file.pack_size, offset = clip->_.file.pack_offset; @@ -229,8 +236,10 @@ void world_gen_entities_init( world_instance *world ) clip->_.clip.data = data; clip->_.clip.size = size; } - else{ - clip->_.clip.path = mdl_pstr(&world->meta,clip->_.file.pstr_path); + else + { + clip->_.clip.path = ps_get( &world->meta.strings, + clip->_.file.pstr_path ); clip->_.clip.flags = audio->flags; clip->_.clip.data = NULL; clip->_.clip.size = 0; @@ -244,7 +253,7 @@ void world_gen_entities_init( world_instance *world ) u32 indexed_count = 0; struct { u32 type; - mdl_array_ptr *array; + array_file_ptr *array; } indexables[] = { { k_ent_gate, &world->ent_gate }, @@ -256,16 +265,17 @@ void world_gen_entities_init( world_instance *world ) }; for( u32 i=0; ientity_list = vg_linear_alloc( world->heap, vg_align8(indexed_count*sizeof(u32))); u32 index=0; - for( u32 i=0; ientity_list[index ++] = mdl_entity_id( type, j ); @@ -277,13 +287,14 @@ void world_gen_entities_init( world_instance *world ) world->tar_min = world->entity_bh->nodes[0].bbx[0][1]; world->tar_max = world->entity_bh->nodes[0].bbx[1][1] + 20.0f; - for( u32 i=0; ient_marker); i++ ){ - ent_marker *marker = mdl_arritm( &world->ent_marker, i ); + for( u32 i=0; ient_marker); i++ ) + { + ent_marker *marker = af_arritm( &world->ent_marker, i ); - if( MDL_CONST_PSTREQ( &world->meta, marker->pstr_alias, "tar_min" ) ) + if( PS_EQ( &world->meta.strings, marker->pstr_alias, "tar_min" ) ) world->tar_min = marker->transform.co[1]; - if( MDL_CONST_PSTREQ( &world->meta, marker->pstr_alias, "tar_max" ) ) + if( PS_EQ( &world->meta.strings, marker->pstr_alias, "tar_max" ) ) world->tar_max = marker->transform.co[1]; } } @@ -293,8 +304,8 @@ ent_spawn *world_find_closest_spawn( world_instance *world, v3f position ) ent_spawn *rp = NULL, *r; float min_dist = INFINITY; - for( u32 i=0; ient_spawn); i++ ){ - r = mdl_arritm( &world->ent_spawn, i ); + for( u32 i=0; ient_spawn); i++ ){ + r = af_arritm( &world->ent_spawn, i ); float d = v3_dist2( r->transform.co, position ); if( d < min_dist ){ @@ -304,9 +315,9 @@ ent_spawn *world_find_closest_spawn( world_instance *world, v3f position ) } if( !rp ){ - if( mdl_arrcount(&world->ent_spawn) ){ + if( af_arrcount(&world->ent_spawn) ){ vg_warn( "Invalid distances to spawns.. defaulting to first one.\n" ); - return mdl_arritm( &world->ent_spawn, 0 ); + return af_arritm( &world->ent_spawn, 0 ); } else{ vg_error( "There are no spawns in the level!\n" ); @@ -319,9 +330,14 @@ ent_spawn *world_find_closest_spawn( world_instance *world, v3f position ) ent_spawn *world_find_spawn_by_name( world_instance *world, const char *name ) { ent_spawn *rp = NULL, *r; - for( u32 i=0; ient_spawn); i++ ){ - r = mdl_arritm( &world->ent_spawn, i ); - if( !strcmp( mdl_pstr(&world->meta, r->pstr_name), name ) ){ + u32 hash = vg_strdjb2( name ); + + for( u32 i=0; ient_spawn); i++ ) + { + r = af_arritm( &world->ent_spawn, i ); + + if( ps_consteq( &world->meta.strings, r->pstr_name, name, hash ) ) + { rp = r; break; } @@ -349,7 +365,7 @@ void world_default_spawn_pos( world_instance *world, v3f pos ) entity_call_result ent_volume_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); if( !volume->target ) return k_entity_call_result_OK; @@ -408,7 +424,7 @@ entity_call_result ent_audio_call( world_instance *world, ent_call *call ) u8 world_id = (world - world_static.instances) + 1; u32 index = mdl_entity_id_id( call->id ); - ent_audio *audio = mdl_arritm( &world->ent_audio, index ); + ent_audio *audio = af_arritm( &world->ent_audio, index ); v3f sound_co; @@ -427,7 +443,7 @@ entity_call_result ent_audio_call( world_instance *world, ent_call *call ) bar = 0.0f; for( u32 i=0; iclip_count; i++ ){ - ent_audio_clip *clip = mdl_arritm( &world->ent_audio_clip, + ent_audio_clip *clip = af_arritm( &world->ent_audio_clip, audio->clip_start+i ); float mod = world->probabilities[ audio->probability_curve ], @@ -507,8 +523,9 @@ entity_call_result ent_ccmd_call( world_instance *world, ent_call *call ) if( call->function == k_ent_function_trigger ) { u32 index = mdl_entity_id_id( call->id ); - ent_ccmd *ccmd = mdl_arritm( &world->ent_ccmd, index ); - vg_execute_console_input( mdl_pstr(&world->meta, ccmd->pstr_command), 0 ); + ent_ccmd *ccmd = af_arritm( &world->ent_ccmd, index ); + vg_execute_console_input( ps_get(&world->meta.strings, + ccmd->pstr_command), 0 ); return k_entity_call_result_OK; } else @@ -529,14 +546,14 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index ) index = mdl_entity_id_id( id ); if( type == k_ent_gate ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + ent_gate *gate = af_arritm( &world->ent_gate, index ); boxf box = {{ -gate->dimensions[0], -gate->dimensions[1], -0.1f }, { gate->dimensions[0], gate->dimensions[1], 0.1f }}; m4x3_expand_aabb_aabb( gate->to_world, bound, box ); } else if( type == k_ent_objective ){ - ent_objective *objective = mdl_arritm( &world->ent_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); /* TODO: This might be more work than necessary. could maybe just get * away with representing them as points */ @@ -545,7 +562,7 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index ) box_init_inf( box ); for( u32 i=0; isubmesh_count; i++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, objective->submesh_start+i ); box_concat( box, sm->bbx ); } @@ -555,12 +572,12 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index ) m4x3_expand_aabb_aabb( transform, bound, box ); } else if( type == k_ent_volume ){ - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); m4x3_expand_aabb_aabb( volume->to_world, bound, (boxf){{-1.0f,-1.0f,-1.0f},{ 1.0f, 1.0f, 1.0f}} ); } else if( type == k_ent_challenge ){ - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); boxf box = {{-1.2f*0.5f,-0.72f*0.5f,-0.01f*0.5f}, { 1.2f*0.5f, 0.72f*0.5f, 0.01f*0.5f}}; @@ -569,7 +586,7 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index ) m4x3_expand_aabb_aabb( transform, bound, box ); } else if( type == k_ent_glider ){ - ent_glider *glider = mdl_arritm( &world->ent_glider, index ); + ent_glider *glider = af_arritm( &world->ent_glider, index ); m4x3f transform; mdl_transform_m4x3( &glider->transform, transform ); m4x3_expand_aabb_aabb( transform, bound, @@ -577,7 +594,7 @@ void entity_bh_expand_bound( void *user, boxf bound, u32 item_index ) } else if( type == k_ent_npc ) { - ent_npc *npc = mdl_arritm( &world->ent_npc, index ); + ent_npc *npc = af_arritm( &world->ent_npc, index ); box_addpt( bound, npc->transform.co ); } else{ @@ -594,30 +611,30 @@ float entity_bh_centroid( void *user, u32 item_index, int axis ) index = mdl_entity_id_id( id ); if( type == k_ent_gate ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + ent_gate *gate = af_arritm( &world->ent_gate, index ); return gate->to_world[3][axis]; } else if( type == k_ent_objective ){ - ent_objective *objective = mdl_arritm( &world->ent_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); return objective->transform.co[axis]; } else if( type == k_ent_volume ){ - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); return volume->transform.co[axis]; } else if( type == k_ent_challenge ) { - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); return challenge->transform.co[axis]; } else if( type == k_ent_glider ) { - ent_glider *glider = mdl_arritm( &world->ent_glider, index ); + ent_glider *glider = af_arritm( &world->ent_glider, index ); return glider->transform.co[axis]; } else if( type == k_ent_npc ) { - ent_npc *npc = mdl_arritm( &world->ent_npc, index ); + ent_npc *npc = af_arritm( &world->ent_npc, index ); return npc->transform.co[axis]; } else @@ -646,18 +663,18 @@ void entity_bh_debug( void *user, u32 item_index ){ index = mdl_entity_id_id( id ); if( type == k_ent_gate ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + ent_gate *gate = af_arritm( &world->ent_gate, index ); boxf box = {{ -gate->dimensions[0], -gate->dimensions[1], -0.1f }, { gate->dimensions[0], gate->dimensions[1], 0.1f }}; vg_line_boxf_transformed( gate->to_world, box, 0xf000ff00 ); } else if( type == k_ent_objective ){ - ent_objective *objective = mdl_arritm( &world->ent_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); boxf box; box_init_inf( box ); for( u32 i=0; isubmesh_count; i++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, objective->submesh_start+i ); box_concat( box, sm->bbx ); } @@ -667,13 +684,13 @@ void entity_bh_debug( void *user, u32 item_index ){ vg_line_boxf_transformed( transform, box, 0xf000ff00 ); } else if( type == k_ent_volume ){ - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); vg_line_boxf_transformed( volume->to_world, (boxf){{-1.0f,-1.0f,-1.0f},{ 1.0f, 1.0f, 1.0f}}, 0xf000ff00 ); } else if( type == k_ent_challenge ){ - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); boxf box = {{-1.2f*0.5f,-0.72f*0.5f,-0.01f*0.5f}, { 1.2f*0.5f, 0.72f*0.5f, 0.01f*0.5f}}; @@ -691,19 +708,24 @@ void update_ach_models(void) world_instance *hub = &world_static.instances[k_world_purpose_hub]; if( hub->status != k_world_status_loaded ) return; - for( u32 i=0; ient_prop ); i ++ ){ - ent_prop *prop = mdl_arritm( &hub->ent_prop, i ); - if( prop->flags & 0x2 ){ - if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "MARC" ) ) + for( u32 i=0; ient_prop ); i ++ ) + { + ent_prop *prop = af_arritm( &hub->ent_prop, i ); + if( prop->flags & 0x2 ) + { + if( PS_EQ( &hub->meta.strings, prop->pstr_alias, "MARC" ) ) if( skaterift.achievements & 0x1 ) prop->flags &= ~0x1; - if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "ALBERT" ) ) + + if( PS_EQ( &hub->meta.strings, prop->pstr_alias, "ALBERT" ) ) if( skaterift.achievements & 0x2 ) prop->flags &= ~0x1; - if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "JANET" ) ) + + if( PS_EQ( &hub->meta.strings, prop->pstr_alias, "JANET" ) ) if( skaterift.achievements & 0x4 ) prop->flags &= ~0x1; - if( MDL_CONST_PSTREQ( &hub->meta, prop->pstr_alias, "BERNADETTA" ) ) + + if( PS_EQ( &hub->meta.strings, prop->pstr_alias, "BERNADETTA" ) ) if( skaterift.achievements & 0x8 ) prop->flags &= ~0x1; } @@ -719,19 +741,19 @@ void entity_bh_closest( void *user, u32 item_index, v3f point, v3f closest ) index = mdl_entity_id_id( id ); if( type == k_ent_gate ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + ent_gate *gate = af_arritm( &world->ent_gate, index ); v3_copy( gate->to_world[3], closest ); } else if( type == k_ent_objective ){ - ent_objective *challenge = mdl_arritm( &world->ent_objective, index ); + ent_objective *challenge = af_arritm( &world->ent_objective, index ); v3_copy( challenge->transform.co, closest ); } else if( type == k_ent_volume ){ - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); v3_copy( volume->to_world[3], closest ); } else if( type == k_ent_challenge ){ - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); v3_copy( challenge->transform.co, closest ); } else{ @@ -744,9 +766,9 @@ void world_entity_start( world_instance *world, vg_msg *sav ) vg_info( "Start instance %p\n", world ); world->probabilities[ k_probability_curve_constant ] = 1.0f; - for( u32 i=0; ient_audio); i++ ) + for( u32 i=0; ient_audio); i++ ) { - ent_audio *audio = mdl_arritm(&world->ent_audio,i); + ent_audio *audio = af_arritm(&world->ent_audio,i); if( audio->flags & AUDIO_FLAG_AUTO_START ) { ent_call call; @@ -760,9 +782,9 @@ void world_entity_start( world_instance *world, vg_msg *sav ) /* read savedata * ----------------------------------------------------------------------- */ - for( u32 i=0; ient_challenge); i++ ){ - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i ); - const char *alias = mdl_pstr( &world->meta, challenge->pstr_alias ); + for( u32 i=0; ient_challenge); i++ ){ + ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); + const char *alias = ps_get( &world->meta.strings, challenge->pstr_alias ); u32 result; vg_msg_getkvintg( sav, alias, k_vg_msg_u32, &result, NULL ); @@ -778,12 +800,13 @@ void world_entity_start( world_instance *world, vg_msg *sav ) vg_msg routes_block = *sav; if( vg_msg_seekframe( &routes_block, "routes" ) ){ - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); vg_msg route_info = routes_block; if( vg_msg_seekframe( &route_info, - mdl_pstr(&world->meta,route->pstr_name) ) ){ + ps_get(&world->meta.strings,route->pstr_name) ) ) + { u32 flags; vg_msg_getkvintg( &route_info, "flags", k_vg_msg_u32, @@ -806,7 +829,7 @@ void world_entity_start( world_instance *world, vg_msg *sav ) } for( u32 j=0; jcheckpoints_count; j ++ ){ - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, route->checkpoints_start + j ); cp->best_time = sections[j]; @@ -817,7 +840,8 @@ void world_entity_start( world_instance *world, vg_msg *sav ) for( u32 j=0; jname, - mdl_pstr(&world->meta,route->pstr_name))){ + ps_get(&world->meta.strings,route->pstr_name))) + { steamapi_bool set = 0; if( SteamAPI_ISteamUserStats_GetAchievement( @@ -839,19 +863,19 @@ void world_entity_start( world_instance *world, vg_msg *sav ) void world_entity_serialize( world_instance *world, vg_msg *sav ) { - for( u32 i=0; ient_challenge); i++ ){ - ent_challenge *challenge = mdl_arritm(&world->ent_challenge,i); + for( u32 i=0; ient_challenge); i++ ){ + ent_challenge *challenge = af_arritm(&world->ent_challenge,i); - const char *alias = mdl_pstr(&world->meta,challenge->pstr_alias); + const char *alias = ps_get( &world->meta.strings, challenge->pstr_alias ); vg_msg_wkvnum( sav, alias, k_vg_msg_u32, 1, &challenge->status ); } - if( mdl_arrcount(&world->ent_route) ){ + if( af_arrcount(&world->ent_route) ){ vg_msg_frame( sav, "routes" ); - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); - vg_msg_frame( sav, mdl_pstr( &world->meta, route->pstr_name ) ); + vg_msg_frame( sav, ps_get( &world->meta.strings, route->pstr_name ) ); { vg_msg_wkvnum( sav, "flags", k_vg_msg_u32, 1, &route->flags ); vg_msg_wkvnum( sav, "best_laptime", @@ -860,7 +884,7 @@ void world_entity_serialize( world_instance *world, vg_msg *sav ) f32 sections[ route->checkpoints_count ]; for( u32 j=0; jcheckpoints_count; j ++ ){ - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, route->checkpoints_start + j ); sections[j] = cp->best_time; diff --git a/src/world_gate.c b/src/world_gate.c index 3e6fdbb..ad8c738 100644 --- a/src/world_gate.c +++ b/src/world_gate.c @@ -56,7 +56,7 @@ void world_gates_init(void) mdl_load_metadata_block( &mgate, vg_mem.scratch ); mdl_mesh *surface = mdl_find_mesh( &mgate, "rs_gate" ); - mdl_submesh *sm = mdl_arritm(&mgate.submeshs,surface->submesh_start); + mdl_submesh *sm = af_arritm(&mgate.submeshs,surface->submesh_start); world_gates.sm_surface = *sm; const char *names[] = { "rs_gate_marker", "rs_gate_marker.001", @@ -64,7 +64,7 @@ void world_gates_init(void) for( int i=0; i<4; i++ ){ mdl_mesh *marker = mdl_find_mesh( &mgate, names[i] ); - sm = mdl_arritm( &mgate.submeshs, marker->submesh_start ); + sm = af_arritm( &mgate.submeshs, marker->submesh_start ); world_gates.sm_marker[i] = *sm; } @@ -87,7 +87,7 @@ static void render_gate_mesh( world_instance *world, ent_gate *gate ) if( gate->flags & k_ent_gate_custom_mesh ){ mesh_bind( &world->mesh_no_collide ); for( u32 i=0; isubmesh_count; i++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, gate->submesh_start+i ); mdl_draw_submesh( sm ); } @@ -276,8 +276,8 @@ int gate_intersect( ent_gate *gate, v3f pos, v3f last ) */ u32 world_intersect_gates( world_instance *world, v3f pos, v3f last ) { - for( u32 i=0; ient_gate); i++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate); i++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, i ); if( !(gate->flags & k_ent_gate_linked) ) continue; if( gate->flags & k_ent_gate_locked ) continue; @@ -298,7 +298,7 @@ u32 world_intersect_gates( world_instance *world, v3f pos, v3f last ) entity_call_result ent_gate_call( world_instance *world, ent_call *call ) { u32 index = mdl_entity_id_id( call->id ); - ent_gate *gate = mdl_arritm( &world->ent_gate, index ); + ent_gate *gate = af_arritm( &world->ent_gate, index ); if( call->function == 0 ) /* unlock() */ { @@ -317,9 +317,9 @@ entity_call_result ent_gate_call( world_instance *world, ent_call *call ) */ void world_unlink_nonlocal( world_instance *world ) { - for( u32 j=0; jent_gate); j ++ ) + for( u32 j=0; jent_gate); j ++ ) { - ent_gate *gate = mdl_arritm( &world->ent_gate, j ); + ent_gate *gate = af_arritm( &world->ent_gate, j ); if( gate->flags & k_ent_gate_nonlocal ) { @@ -339,9 +339,9 @@ void world_link_gates_async( void *payload, u32 size ) world_instance *world = payload; u32 world_id = world - world_static.instances; - for( u32 j=0; jent_gate); j ++ ) + for( u32 j=0; jent_gate); j ++ ) { - ent_gate *gate = mdl_arritm( &world->ent_gate, j ); + ent_gate *gate = af_arritm( &world->ent_gate, j ); gate_transform_update( gate ); if( skaterift.demo_mode ) @@ -351,7 +351,7 @@ void world_link_gates_async( void *payload, u32 size ) if( !(gate->flags & k_ent_gate_nonlocal) ) continue; if( gate->flags & k_ent_gate_linked ) continue; - const char *key = mdl_pstr( &world->meta, gate->key ); + const char *key = ps_get( &world->meta.strings, gate->key ); vg_info( "key: %s\n", key ); for( u32 i=0; istatus != k_world_status_loaded ) continue; vg_info( "Checking world %u for key matches\n", i ); - for( u32 k=0; kent_gate ); k++ ){ - ent_gate *gate2 = mdl_arritm( &other->ent_gate, k ); + for( u32 k=0; kent_gate ); k++ ){ + ent_gate *gate2 = af_arritm( &other->ent_gate, k ); if( !(gate2->flags & k_ent_gate_nonlocal) ) continue; if( gate2->flags & k_ent_gate_linked ) continue; - const char *key2 = mdl_pstr( &other->meta, gate2->key ); + const char *key2 = ps_get( &other->meta.strings, gate2->key ); vg_info( " key2: %s\n", key2 ); if( strcmp( key, key2 ) ) continue; diff --git a/src/world_gen.c b/src/world_gen.c index e51836d..0f329a4 100644 --- a/src/world_gen.c +++ b/src/world_gen.c @@ -18,11 +18,11 @@ static void world_add_all_if_material( m4x3f transform, scene_context *scene, mdl_context *mdl, u32 id ) { - for( u32 i=0; imeshs); i++ ){ - mdl_mesh *mesh = mdl_arritm( &mdl->meshs, i ); + for( u32 i=0; imeshs); i++ ){ + mdl_mesh *mesh = af_arritm( &mdl->meshs, i ); for( u32 j=0; jsubmesh_count; j++ ){ - mdl_submesh *sm = mdl_arritm( &mdl->submeshs, mesh->submesh_start+j ); + mdl_submesh *sm = af_arritm( &mdl->submeshs, mesh->submesh_start+j ); if( sm->material_id == id ){ m4x3f transform2; mdl_transform_m4x3( &mesh->transform, transform2 ); @@ -298,11 +298,11 @@ void world_gen_generate_meshes( world_instance *world ) * models. we only have 2 types at the moment which need dynamic models but * would make sense to do this when/if we have more. */ - for( u32 i=0; ient_traffic ); i++ ){ - ent_traffic *vehc = mdl_arritm( &world->ent_traffic, i ); + for( u32 i=0; ient_traffic ); i++ ){ + ent_traffic *vehc = af_arritm( &world->ent_traffic, i ); for( u32 j=0; jsubmesh_count; j++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, vehc->submesh_start+j ); world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm ); world->surfaces[ sm->material_id ].flags |= WORLD_SURFACE_HAS_TRAFFIC; @@ -310,46 +310,46 @@ void world_gen_generate_meshes( world_instance *world ) } /* unpack challenge models */ - for( u32 i=0; ient_objective ); i++ ){ - ent_objective *objective = mdl_arritm( &world->ent_objective, i ); + for( u32 i=0; ient_objective ); i++ ){ + ent_objective *objective = af_arritm( &world->ent_objective, i ); for( u32 j=0; jsubmesh_count; j ++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, objective->submesh_start+j ); world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm ); } } /* unpack region models */ - for( u32 i=0; ient_region ); i++ ){ - ent_region *region = mdl_arritm( &world->ent_region, i ); + for( u32 i=0; ient_region ); i++ ){ + ent_region *region = af_arritm( &world->ent_region, i ); for( u32 j=0; jsubmesh_count; j ++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, region->submesh_start+j ); world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm ); } } /* unpack gate models */ - for( u32 i=0; ient_gate ); i++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate ); i++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, i ); if( !(gate->flags & k_ent_gate_custom_mesh) ) continue; for( u32 j=0; jsubmesh_count; j ++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, gate->submesh_start+j ); world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm ); } } /* unpack prop models */ - for( u32 i=0; ient_prop ); i++ ){ - ent_prop *prop = mdl_arritm( &world->ent_prop, i ); + for( u32 i=0; ient_prop ); i++ ){ + ent_prop *prop = af_arritm( &world->ent_prop, i ); for( u32 j=0; jsubmesh_count; j ++ ){ - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, prop->submesh_start+j ); world->surfaces[ sm->material_id ].flags |= WORLD_SURFACE_HAS_PROPS; world_unpack_submesh_dynamic( world, &world->scene_no_collide, sm ); @@ -487,8 +487,8 @@ void world_gen_compute_light_indices( world_instance *world ) float influences[6] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; const int N = VG_ARRAY_LEN( influences ); - for( u32 j=0; jent_light); j ++ ){ - ent_light *light = mdl_arritm( &world->ent_light, j ); + for( u32 j=0; jent_light); j ++ ){ + ent_light *light = af_arritm( &world->ent_light, j ); v3f closest; closest_point_aabb( light->transform.co, bbx, closest ); @@ -563,7 +563,7 @@ void async_world_postprocess( void *payload, u32 _size ) /* create scene lighting buffer */ world_instance *world = payload; - u32 size = VG_MAX(mdl_arrcount(&world->ent_light),1) * sizeof(float)*12; + u32 size = VG_MAX(af_arrcount(&world->ent_light),1) * sizeof(float)*12; vg_info( "Upload %ubytes (lighting)\n", size ); glGenBuffers( 1, &world->tbo_light_entities ); @@ -579,8 +579,8 @@ void async_world_postprocess( void *payload, u32 _size ) */ v4f *light_dst = glMapBuffer( GL_TEXTURE_BUFFER, GL_WRITE_ONLY ); - for( u32 i=0; ient_light); i++ ){ - ent_light *light = mdl_arritm( &world->ent_light, i ); + for( u32 i=0; ient_light); i++ ){ + ent_light *light = af_arritm( &world->ent_light, i ); /* colour + night */ v3_muls( light->colour, light->colour[3] * 2.0f, light_dst[i*3+0] ); @@ -672,8 +672,8 @@ void async_world_postprocess( void *payload, u32 _size ) /* * Allocate cubemaps */ - for( u32 i=0; ient_cubemap); i++ ){ - ent_cubemap *cm = mdl_arritm(&world->ent_cubemap,i); + for( u32 i=0; ient_cubemap); i++ ){ + ent_cubemap *cm = af_arritm(&world->ent_cubemap,i); glGenTextures( 1, &cm->texture_id ); glBindTexture( GL_TEXTURE_CUBE_MAP, cm->texture_id ); @@ -723,9 +723,9 @@ void world_gen_load_surfaces( world_instance *world ) vg_align8(sizeof(GLuint)*world->texture_count) ); world->textures[0] = vg.tex_missing; - for( u32 i=0; imeta.textures); i++ ) + for( u32 i=0; imeta.textures); i++ ) { - mdl_texture *tex = mdl_arritm( &world->meta.textures, i ); + mdl_texture *tex = af_arritm( &world->meta.textures, i ); if( !tex->file.pack_size ) { @@ -752,10 +752,10 @@ void world_gen_load_surfaces( world_instance *world ) struct world_surface *errmat = &world->surfaces[0]; memset( errmat, 0, sizeof(struct world_surface) ); - for( u32 i=0; imeta.materials); i++ ) + for( u32 i=0; imeta.materials); i++ ) { struct world_surface *surf = &world->surfaces[i+1]; - surf->info = *(mdl_material *)mdl_arritm( &world->meta.materials, i ); + surf->info = *(mdl_material *)af_arritm( &world->meta.materials, i ); surf->flags = 0; if( surf->info.shader == k_shader_water ) diff --git a/src/world_load.c b/src/world_load.c index 30c2b2c..cb473d8 100644 --- a/src/world_load.c +++ b/src/world_load.c @@ -40,49 +40,48 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){ mdl_open( meta, path, world->heap ); mdl_load_metadata_block( meta, world->heap ); - 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 ); - MDL_LOAD_ARRAY( meta, &world->ent_light, ent_light, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_route_node,ent_route_node, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_path_index,ent_path_index, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_checkpoint,ent_checkpoint, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_route, ent_route, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_water, ent_water, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_audio_clip,ent_audio_clip, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_audio, ent_audio, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_volume, ent_volume, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_traffic, ent_traffic, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_marker, ent_marker, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_skateshop, ent_skateshop, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_swspreview,ent_swspreview, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_ccmd, ent_ccmd, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_objective, ent_objective, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_challenge, ent_challenge, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_relay, ent_relay, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_cubemap, ent_cubemap, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_miniworld, ent_miniworld, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_prop, ent_prop, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_region, ent_region, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_glider, ent_glider, heap ); - MDL_LOAD_ARRAY( meta, &world->ent_npc, ent_npc, heap ); - - mdl_array_ptr infos; - MDL_LOAD_ARRAY( meta, &infos, ent_worldinfo, vg_mem.scratch ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_gate, ent_gate, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_camera, ent_camera, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_spawn, ent_spawn, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_light, ent_light, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_route_node,ent_route_node, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_path_index,ent_path_index, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_checkpoint,ent_checkpoint, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_route, ent_route, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_water, ent_water, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_audio_clip,ent_audio_clip, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_audio, ent_audio, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_volume, ent_volume, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_traffic, ent_traffic, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_marker, ent_marker, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_skateshop, ent_skateshop, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_swspreview,ent_swspreview, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_ccmd, ent_ccmd, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_objective, ent_objective, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_challenge, ent_challenge, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_relay, ent_relay, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_cubemap, ent_cubemap, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_miniworld, ent_miniworld, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_prop, ent_prop, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_region, ent_region, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_glider, ent_glider, heap ); + MDL_LOAD_ARRAY_STRUCT( meta, &world->ent_npc, ent_npc, heap ); + + array_file_ptr infos; + MDL_LOAD_ARRAY_STRUCT( meta, &infos, ent_worldinfo, vg_mem.scratch ); world->skybox = k_skybox_default; - if( mdl_arrcount(&infos) ) + if( af_arrcount(&infos) ) { - world->info = *((ent_worldinfo *)mdl_arritm(&infos,0)); + world->info = *((ent_worldinfo *)af_arritm(&infos,0)); if( world->meta.info.version >= 104 ) { - if( MDL_CONST_PSTREQ( &world->meta, world->info.pstr_skybox,"space")) + if( PS_EQ( &world->meta.strings, world->info.pstr_skybox, "space" )) { world->skybox = k_skybox_space; } @@ -140,10 +139,10 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){ world_default_spawn_pos( world, world->player_co ); /* allocate leaderboard buffers */ - u32 bs = mdl_arrcount(&world->ent_route)*sizeof(struct leaderboard_cache); + u32 bs = af_arrcount(&world->ent_route)*sizeof(struct leaderboard_cache); world->leaderboard_cache = vg_linear_alloc( heap, bs ); - for( u32 i=0; ient_route ); i ++ ) + for( u32 i=0; ient_route ); i ++ ) { struct leaderboard_cache *board = &world->leaderboard_cache[i]; board->data = vg_linear_alloc( heap, NETWORK_REQUEST_MAX ); @@ -153,7 +152,7 @@ static void world_instance_load_mdl( u32 instance_id, const char *path ){ } world->routes_ui = vg_linear_alloc( heap, - sizeof(struct route_ui)*mdl_arrcount(&world->ent_route) ); + sizeof(struct route_ui)*af_arrcount(&world->ent_route) ); vg_async_call( async_world_postprocess, world, 0 ); vg_async_stall(); @@ -488,8 +487,8 @@ void world_free( world_instance *world ) vg_linear_header(world->heap) ); } - for( u32 i=0; ient_cubemap); i++ ){ - ent_cubemap *cm = mdl_arritm(&world->ent_cubemap,i); + for( u32 i=0; ient_cubemap); i++ ){ + ent_cubemap *cm = af_arritm(&world->ent_cubemap,i); glDeleteTextures( 1, &cm->texture_id ); glDeleteFramebuffers( 1, &cm->framebuffer_id ); glDeleteRenderbuffers( 1, &cm->renderbuffer_id ); diff --git a/src/world_map.c b/src/world_map.c index 2799428..5287aff 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -187,9 +187,9 @@ void world_map_pre_update(void) f32 closest2 = INFINITY; v2f centroid = { 0, 0 }; - for( u32 i=0; ient_spawn); i++ ) + for( u32 i=0; ient_spawn); i++ ) { - ent_spawn *spawn = mdl_arritm(&world->ent_spawn,i); + ent_spawn *spawn = af_arritm(&world->ent_spawn,i); v4f v; v3_copy( spawn->transform.co, v ); @@ -239,9 +239,9 @@ void world_map_pre_update(void) /* icons * ---------------------*/ - for( u32 i=0; ient_challenge); i++ ) + for( u32 i=0; ient_challenge); i++ ) { - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); enum gui_icon icon = k_gui_icon_exclaim_2d; if( challenge->status ) @@ -250,9 +250,9 @@ void world_map_pre_update(void) respawn_map_draw_icon( cam, icon, challenge->transform.co, 1.0f ); } - for( u32 i=0; ient_spawn); i ++ ) + for( u32 i=0; ient_spawn); i ++ ) { - ent_spawn *spawn = mdl_arritm( &world->ent_spawn, i ); + ent_spawn *spawn = af_arritm( &world->ent_spawn, i ); if( spawn->transform.s[0] > 0.3f ) continue; @@ -264,9 +264,9 @@ void world_map_pre_update(void) spawn->transform.co, s ); } - for( u32 i=0; ient_skateshop); i++ ) + for( u32 i=0; ient_skateshop); i++ ) { - ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, i ); + ent_skateshop *shop = af_arritm( &world->ent_skateshop, i ); if( shop->type == k_skateshop_type_boardshop ) { respawn_map_draw_icon( cam, k_gui_icon_board, shop->transform.co, 1 ); @@ -277,18 +277,18 @@ void world_map_pre_update(void) } } - for( u32 i=0; ient_gate); i++ ) + for( u32 i=0; ient_gate); i++ ) { - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + ent_gate *gate = af_arritm( &world->ent_gate, i ); if( gate->flags & k_ent_gate_nonlocal ) { respawn_map_draw_icon( cam, k_gui_icon_rift, gate->co[0], 1 ); } } - for( u32 i=0; ient_route); i++ ) + for( u32 i=0; ient_route); i++ ) { - ent_route *route = mdl_arritm( &world->ent_route, i ); + ent_route *route = af_arritm( &world->ent_route, i ); v4f colour; v4_copy( route->colour, colour ); @@ -298,9 +298,9 @@ void world_map_pre_update(void) route->board_transform[3], 1 ); } - for( u32 i=0; ient_glider); i ++ ) + for( u32 i=0; ient_glider); i ++ ) { - ent_glider *glider = mdl_arritm( &world->ent_glider, i ); + ent_glider *glider = af_arritm( &world->ent_glider, i ); v4f colour = { 1,1,1,1 }; diff --git a/src/world_render.c b/src/world_render.c index 3eb07a1..b7a6732 100644 --- a/src/world_render.c +++ b/src/world_render.c @@ -169,7 +169,7 @@ static void world_render_submeshes( world_instance *world, { for( u32 k=0; kmeta.submeshs, start+k ); + mdl_submesh *sm = af_arritm( &world->meta.submeshs, start+k ); if( sm->material_id != material_id ) continue; @@ -198,8 +198,8 @@ static void world_render_props( world_instance *world, u32 material_id, pass->fn_bind( world, mat ); - for( u32 j=0; jent_prop ); j++ ){ - ent_prop *prop = mdl_arritm( &world->ent_prop, j ); + for( u32 j=0; jent_prop ); j++ ){ + ent_prop *prop = af_arritm( &world->ent_prop, j ); if( prop->flags & 0x1 ) continue; world_render_submeshes( world, pass, &prop->transform, @@ -218,8 +218,8 @@ static void world_render_traffic( world_instance *world, u32 material_id, pass->fn_bind( world, mat ); - for( u32 j=0; jent_traffic ); j++ ){ - ent_traffic *traffic = mdl_arritm( &world->ent_traffic, j ); + for( u32 j=0; jent_traffic ); j++ ){ + ent_traffic *traffic = af_arritm( &world->ent_traffic, j ); world_render_submeshes( world, pass, &traffic->transform, traffic->submesh_start, traffic->submesh_count, @@ -375,7 +375,7 @@ static void bindpoint_world_cubemapped( world_instance *world, cubemap_index = mdl_entity_id_id( cubemap_id ); } - ent_cubemap *cm = mdl_arritm( &world->ent_cubemap, cubemap_index ); + ent_cubemap *cm = af_arritm( &world->ent_cubemap, cubemap_index ); glActiveTexture( GL_TEXTURE10 ); glBindTexture( GL_TEXTURE_CUBE_MAP, cm->texture_id ); @@ -395,7 +395,7 @@ static void bindpoint_world_cubemapped_disabled( world_instance *world, static void render_world_cubemapped( world_instance *world, vg_camera *cam, int enabled ) { - if( !mdl_arrcount( &world->ent_cubemap ) ) + if( !af_arrcount( &world->ent_cubemap ) ) return; if( !enabled ) @@ -520,7 +520,7 @@ static void world_render_challenges( world_instance *world, !world_static.challenge_target) ){ world_instance *challenge_world = world_current_instance(); u32 index = mdl_entity_id_id( world_static.focused_entity ); - active_challenge = mdl_arritm(&challenge_world->ent_challenge, index); + active_challenge = af_arritm(&challenge_world->ent_challenge, index); } } @@ -533,7 +533,7 @@ static void world_render_challenges( world_instance *world, u32 index = mdl_entity_id_id( next ); objective_list[ objective_count ++ ] = index; - ent_objective *objective = mdl_arritm( &world->ent_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); next = objective->id_next; } @@ -567,7 +567,7 @@ static void world_render_challenges( world_instance *world, for( u32 i=0; ient_objective, index ); + ent_objective *objective = af_arritm( &world->ent_objective, index ); if( (objective->flags & k_ent_objective_hidden) && !active_challenge ) continue; @@ -599,7 +599,7 @@ static void world_render_challenges( world_instance *world, for( u32 j=0; jsubmesh_count; j++ ) { - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, objective->submesh_start + j ); if( sm->material_id != last_material ) @@ -616,9 +616,9 @@ static void world_render_challenges( world_instance *world, u32 count = 0; - for( u32 i=0; ient_challenge); i++ ) + for( u32 i=0; ient_challenge); i++ ) { - ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, i ); if( challenge->status ) count ++; } @@ -627,7 +627,7 @@ static void world_render_challenges( world_instance *world, vg_strnull( &str, buf, sizeof(buf) ); vg_strcati32( &str, count ); vg_strcatch( &str, '/' ); - vg_strcati32( &str, mdl_arrcount(&world->ent_challenge) ); + vg_strcati32( &str, af_arrcount(&world->ent_challenge) ); f32 w = font3d_string_width( 1, buf ); m4x3f mlocal; @@ -639,7 +639,7 @@ static void world_render_challenges( world_instance *world, for( u32 i=0; ient_challenge, index ); + ent_challenge *challenge = af_arritm( &world->ent_challenge, index ); m4x3f mmdl; mdl_transform_m4x3( &challenge->transform, mmdl ); m4x3_mul( mmdl, mlocal, mmdl ); @@ -698,9 +698,9 @@ static void render_world_fxglow( world_instance *host_world, mesh_bind( &world->mesh_no_collide ); u32 last_material = 0; - for( u32 i=0; ient_region); i ++ ){ + for( u32 i=0; ient_region); i ++ ){ shader_scene_fxglow_uUvOffset( (v2f){ 0.0f, 0.0f } ); - ent_region *region = mdl_arritm( &world->ent_region, i ); + ent_region *region = af_arritm( &world->ent_region, i ); f32 offset = 0.0f; if( region->flags & k_ent_route_flag_achieve_gold ) @@ -717,7 +717,7 @@ static void render_world_fxglow( world_instance *host_world, for( u32 j=0; jsubmesh_count; j++ ) { - mdl_submesh *sm = mdl_arritm( &world->meta.submeshs, + mdl_submesh *sm = af_arritm( &world->meta.submeshs, region->submesh_start + j ); if( sm->material_id != last_material ) @@ -863,8 +863,8 @@ void render_world_gates( world_instance *world, vg_camera *cam ) float closest = INFINITY; struct ent_gate *gate = NULL; - for( u32 i=0; ient_gate); i++ ){ - ent_gate *gi = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate); i++ ){ + ent_gate *gi = af_arritm( &world->ent_gate, i ); if( !(gi->flags & k_ent_gate_nonlocal) ) if( !(gi->flags & k_ent_gate_linked) ) @@ -906,7 +906,7 @@ void render_world_gates( world_instance *world, vg_camera *cam ) void world_prerender( world_instance *world ) { - if( mdl_arrcount( &world->ent_light ) ){ + if( af_arrcount( &world->ent_light ) ){ f32 rate = vg_maxf(0.1f, fabsf(k_day_length)) * vg_signf(k_day_length); world->time += vg.time_frame_delta * (1.0/(rate*60.0)); } @@ -996,7 +996,7 @@ static void render_other_entities( world_instance *world, vg_camera *cam ) for( u32 j=0; jent_glider, glider_list[j] ); + ent_glider *glider = af_arritm( &world->ent_glider, glider_list[j] ); if( !(glider->flags & 0x1) ) continue; @@ -1014,7 +1014,7 @@ static void render_other_entities( world_instance *world, vg_camera *cam ) for( u32 j=0; jent_npc, npc_list[j] ); + ent_npc *npc = af_arritm( &world->ent_npc, npc_list[j] ); npc_update( npc ); npc_render( npc, world, cam ); } @@ -1057,9 +1057,9 @@ void render_world( world_instance *world, vg_camera *cam, u32 closest = 0; float min_dist = INFINITY; - if( mdl_arrcount( &world->ent_route ) ){ - for( u32 i=0; ient_route ); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + if( af_arrcount( &world->ent_route ) ){ + for( u32 i=0; ient_route ); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); float dist = v3_dist2( route->board_transform[3], cam->pos ); if( dist < min_dist ){ @@ -1068,7 +1068,7 @@ void render_world( world_instance *world, vg_camera *cam, } } - ent_route *route = mdl_arritm( &world->ent_route, closest ); + ent_route *route = af_arritm( &world->ent_route, closest ); sfd_render( world, cam, route->board_transform ); } } @@ -1280,8 +1280,8 @@ void render_world_cubemaps( world_instance *world ) world->cubemap_cooldown = 60; glViewport( 0, 0, WORLD_CUBEMAP_RES, WORLD_CUBEMAP_RES ); - for( u32 i=0; ient_cubemap ); i++ ){ - ent_cubemap *cm = mdl_arritm( &world->ent_cubemap, i ); + for( u32 i=0; ient_cubemap ); i++ ){ + ent_cubemap *cm = af_arritm( &world->ent_cubemap, i ); glBindFramebuffer( GL_FRAMEBUFFER, cm->framebuffer_id ); world->cubemap_side ++; diff --git a/src/world_routes.c b/src/world_routes.c index e4fd80e..c8d5068 100644 --- a/src/world_routes.c +++ b/src/world_routes.c @@ -26,13 +26,13 @@ void world_routes_clear( world_instance *world ) { - for( u32 i=0; ient_route ); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route ); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); route->active_checkpoint = 0xffff; } - for( u32 i=0; ient_gate ); i++ ){ - ent_gate *rg = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate ); i++ ){ + ent_gate *rg = af_arritm( &world->ent_gate, i ); rg->timing_version = 0; rg->timing_time = 0.0; } @@ -43,7 +43,7 @@ void world_routes_clear( world_instance *world ) static void world_routes_time_lap( world_instance *world, ent_route *route ){ vg_info( "------- time lap %s -------\n", - mdl_pstr(&world->meta,route->pstr_name) ); + ps_get(&world->meta.strings,route->pstr_name) ); double start_time = 0.0; u32 last_version=0; @@ -57,9 +57,9 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){ u32 cpid = (i+route->active_checkpoint) % route->checkpoints_count; cpid += route->checkpoints_start; - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, cpid ); - ent_gate *rg = mdl_arritm( &world->ent_gate, cp->gate_index ); - rg = mdl_arritm( &world->ent_gate, rg->target ); + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, cpid ); + ent_gate *rg = af_arritm( &world->ent_gate, cp->gate_index ); + rg = af_arritm( &world->ent_gate, rg->target ); if( i == 1 ){ route->timing_base = rg->timing_time; @@ -128,7 +128,7 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){ char mod_uid[ ADDON_UID_MAX ]; addon_alias_uid( alias, mod_uid ); network_publish_laptime( mod_uid, - mdl_pstr( &world->meta, route->pstr_name ), + ps_get( &world->meta.strings, route->pstr_name ), lap_time ); } @@ -147,10 +147,10 @@ static void world_routes_time_lap( world_instance *world, ent_route *route ){ void world_routes_activate_entry_gate( world_instance *world, ent_gate *rg ) { world_static.last_use = world_static.time; - ent_gate *dest = mdl_arritm( &world->ent_gate, rg->target ); + ent_gate *dest = af_arritm( &world->ent_gate, rg->target ); - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); u32 active_prev = route->active_checkpoint; route->active_checkpoint = 0xffff; @@ -158,11 +158,11 @@ void world_routes_activate_entry_gate( world_instance *world, ent_gate *rg ) for( u32 j=0; j<4; j++ ){ if( dest->routes[j] == i ){ for( u32 k=0; kcheckpoints_count; k++ ){ - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, route->checkpoints_start+k ); - ent_gate *gk = mdl_arritm( &world->ent_gate, cp->gate_index ); - gk = mdl_arritm( &world->ent_gate, gk->target ); + ent_gate *gk = af_arritm( &world->ent_gate, cp->gate_index ); + gk = af_arritm( &world->ent_gate, gk->target ); if( gk == dest ){ route->active_checkpoint = k; world_routes_time_lap( world, route ); @@ -190,13 +190,13 @@ void world_routes_activate_entry_gate( world_instance *world, ent_gate *rg ) /* draw lines along the paths */ static void world_routes_debug( world_instance *world ) { - for( u32 i=0; ient_route_node); i++ ){ - ent_route_node *rn = mdl_arritm(&world->ent_route_node,i); + for( u32 i=0; ient_route_node); i++ ){ + ent_route_node *rn = af_arritm(&world->ent_route_node,i); vg_line_point( rn->co, 0.25f, VG__WHITE ); } - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm(&world->ent_route, i); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm(&world->ent_route, i); u32 colours[] = { 0xfff58142, 0xff42cbf5, 0xff42f56c, 0xfff542b3, 0xff5442f5 }; @@ -210,20 +210,20 @@ static void world_routes_debug( world_instance *world ) int i0 = route->checkpoints_start+i, i1 = route->checkpoints_start+((i+1)%route->checkpoints_count); - ent_checkpoint *c0 = mdl_arritm(&world->ent_checkpoint, i0), - *c1 = mdl_arritm(&world->ent_checkpoint, i1); + ent_checkpoint *c0 = af_arritm(&world->ent_checkpoint, i0), + *c1 = af_arritm(&world->ent_checkpoint, i1); - ent_gate *start_gate = mdl_arritm( &world->ent_gate, c0->gate_index ); - ent_gate *end_gate = mdl_arritm( &world->ent_gate, c1->gate_index ); + ent_gate *start_gate = af_arritm( &world->ent_gate, c0->gate_index ); + ent_gate *end_gate = af_arritm( &world->ent_gate, c1->gate_index ); v3f p0, p1; v3_copy( start_gate->co[1], p0 ); for( int j=0; jpath_count; j ++ ){ - ent_path_index *index = mdl_arritm( &world->ent_path_index, + ent_path_index *index = af_arritm( &world->ent_path_index, c0->path_start+j ); - ent_route_node *rn = mdl_arritm( &world->ent_route_node, + ent_route_node *rn = af_arritm( &world->ent_route_node, index->index ); v3_copy( rn->co, p1 ); @@ -357,7 +357,7 @@ void world_routes_place_curve( world_instance *world, ent_route *route, static void world_routes_gen_meshes( world_instance *world, u32 route_id, scene_context *sc ) { - ent_route *route = mdl_arritm( &world->ent_route, route_id ); + ent_route *route = af_arritm( &world->ent_route, route_id ); u8 colour[4]; colour[0] = route->colour[0] * 255.0f; colour[1] = route->colour[1] * 255.0f; @@ -370,14 +370,14 @@ static void world_routes_gen_meshes( world_instance *world, u32 route_id, int i0 = route->checkpoints_start+i, i1 = route->checkpoints_start+((i+1)%route->checkpoints_count); - ent_checkpoint *c0 = mdl_arritm(&world->ent_checkpoint, i0), - *c1 = mdl_arritm(&world->ent_checkpoint, i1); + ent_checkpoint *c0 = af_arritm(&world->ent_checkpoint, i0), + *c1 = af_arritm(&world->ent_checkpoint, i1); - ent_gate *start_gate = mdl_arritm( &world->ent_gate, c0->gate_index ); - start_gate = mdl_arritm( &world->ent_gate, start_gate->target ); + ent_gate *start_gate = af_arritm( &world->ent_gate, c0->gate_index ); + start_gate = af_arritm( &world->ent_gate, start_gate->target ); - ent_gate *end_gate = mdl_arritm( &world->ent_gate, c1->gate_index ), - *collector = mdl_arritm( &world->ent_gate, end_gate->target ); + ent_gate *end_gate = af_arritm( &world->ent_gate, c1->gate_index ), + *collector = af_arritm( &world->ent_gate, end_gate->target ); v4f p[3]; @@ -396,8 +396,8 @@ static void world_routes_gen_meshes( world_instance *world, u32 route_id, for( int j=0; j<2; j++ ){ int pi = c0->path_start + ((j==1)? c0->path_count-1: 0); - ent_path_index *index = mdl_arritm( &world->ent_path_index, pi ); - ent_route_node *rn = mdl_arritm( &world->ent_route_node, + ent_path_index *index = af_arritm( &world->ent_path_index, pi ); + ent_route_node *rn = af_arritm( &world->ent_route_node, index->index ); v3f v0; v3_sub( rn->co, both[j]->co[0], v0 ); @@ -410,9 +410,9 @@ static void world_routes_gen_meshes( world_instance *world, u32 route_id, for( int j=0; jpath_count; j ++ ){ - ent_path_index *index = mdl_arritm( &world->ent_path_index, + ent_path_index *index = af_arritm( &world->ent_path_index, c0->path_start+j ); - ent_route_node *rn = mdl_arritm( &world->ent_route_node, + ent_route_node *rn = af_arritm( &world->ent_route_node, index->index ); if( j==0 || j==c0->path_count-1 ) if( j == 0 ) @@ -427,9 +427,9 @@ static void world_routes_gen_meshes( world_instance *world, u32 route_id, rn->ref_count ++; if( j+1 < c0->path_count ){ - index = mdl_arritm( &world->ent_path_index, + index = af_arritm( &world->ent_path_index, c0->path_start+j+1 ); - rn = mdl_arritm( &world->ent_route_node, index->index ); + rn = af_arritm( &world->ent_route_node, index->index ); if( j+1 == c0->path_count-1 ) v3_lerp( p[1], temp_alignments[1], 0.5f, p[2] ); @@ -492,46 +492,46 @@ void world_gen_routes_generate( u32 instance_id ) &world->mesh_route_lines, 200000, 300000 ); - for( u32 i=0; ient_gate); i++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate); i++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, i ); gate->ref_count = 0; gate->route_count = 0; } - for( u32 i=0; ient_route_node); i++ ){ - ent_route_node *rn = mdl_arritm( &world->ent_route_node, i ); + for( u32 i=0; ient_route_node); i++ ){ + ent_route_node *rn = af_arritm( &world->ent_route_node, i ); rn->ref_count = 0; rn->ref_total = 0; } - for( u32 k=0; kent_route); k++ ){ - ent_route *route = mdl_arritm( &world->ent_route, k ); + for( u32 k=0; kent_route); k++ ){ + ent_route *route = af_arritm( &world->ent_route, k ); for( int i=0; icheckpoints_count; i++ ){ int i0 = route->checkpoints_start+i, i1 = route->checkpoints_start+((i+1)%route->checkpoints_count); - ent_checkpoint *c0 = mdl_arritm(&world->ent_checkpoint, i0), - *c1 = mdl_arritm(&world->ent_checkpoint, i1); + ent_checkpoint *c0 = af_arritm(&world->ent_checkpoint, i0), + *c1 = af_arritm(&world->ent_checkpoint, i1); - ent_gate *start_gate = mdl_arritm( &world->ent_gate, c0->gate_index ); - start_gate = mdl_arritm( &world->ent_gate, start_gate->target ); + ent_gate *start_gate = af_arritm( &world->ent_gate, c0->gate_index ); + start_gate = af_arritm( &world->ent_gate, start_gate->target ); start_gate->route_count ++; if( !c0->path_count ) continue; for( int j=0; jpath_count; j ++ ){ - ent_path_index *index = mdl_arritm( &world->ent_path_index, + ent_path_index *index = af_arritm( &world->ent_path_index, c0->path_start+j ); - ent_route_node *rn = mdl_arritm( &world->ent_route_node, + ent_route_node *rn = af_arritm( &world->ent_route_node, index->index ); rn->ref_total ++; } } } - for( u32 i=0; ient_route); i++ ){ + for( u32 i=0; ient_route); i++ ){ world_routes_gen_meshes( world, i, &world->scene_lines ); } @@ -544,15 +544,16 @@ void world_gen_routes_ent_init( world_instance *world ) { vg_info( "Initializing routes\n" ); - for( u32 i=0; ient_gate); i++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate); i++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, i ); for( u32 j=0; j<4; j++ ){ gate->routes[j] = 0xffff; } } - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm(&world->ent_route,i); + for( u32 i=0; ient_route); i++ ) + { + ent_route *route = af_arritm(&world->ent_route,i); mdl_transform_m4x3( &route->anon.transform, route->board_transform ); route->flags = 0x00; @@ -560,22 +561,24 @@ void world_gen_routes_ent_init( world_instance *world ) route->ui_stopper = 0.0f; route->ui_residual = 0.0f; - if( mdl_arrcount(&world->ent_region) ) + if( af_arrcount(&world->ent_region) ) route->flags |= k_ent_route_flag_out_of_zone; route->anon.official_track_id = 0xffffffff; - for( u32 j=0; jmeta,route->pstr_name))){ + ps_get( &world->meta.strings ,route->pstr_name ))) + { route->anon.official_track_id = j; } } for( u32 j=0; jcheckpoints_count; j++ ){ u32 id = route->checkpoints_start + j; - ent_checkpoint *cp = mdl_arritm(&world->ent_checkpoint,id); + ent_checkpoint *cp = af_arritm(&world->ent_checkpoint,id); - ent_gate *gate = mdl_arritm( &world->ent_gate, cp->gate_index ); + ent_gate *gate = af_arritm( &world->ent_gate, cp->gate_index ); for( u32 k=0; k<4; k++ ){ if( gate->routes[k] == 0xffff ){ @@ -586,7 +589,7 @@ void world_gen_routes_ent_init( world_instance *world ) if( (gate->flags & k_ent_gate_linked) & !(gate->flags & k_ent_gate_nonlocal) ){ - gate = mdl_arritm(&world->ent_gate, gate->target ); + gate = af_arritm(&world->ent_gate, gate->target ); for( u32 k=0; k<4; k++ ){ if( gate->routes[k] == i ){ @@ -602,12 +605,12 @@ void world_gen_routes_ent_init( world_instance *world ) } } - for( u32 i=0; ient_gate); i++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, i ); + for( u32 i=0; ient_gate); i++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, i ); } - for( u32 i=0; ient_checkpoint); i++ ){ - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, i ); + for( u32 i=0; ient_checkpoint); i++ ){ + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, i ); cp->best_time = 0.0; } @@ -618,7 +621,7 @@ void world_routes_recv_scoreboard( world_instance *world, vg_msg *body, u32 route_id, enum request_status status ) { - if( route_id >= mdl_arrcount( &world->ent_route ) ){ + if( route_id >= af_arrcount( &world->ent_route ) ){ vg_error( "Scoreboard route_id out of range (%u)\n", route_id ); return; } @@ -658,8 +661,8 @@ void world_routes_update( world_instance *world ) { world_static.time += vg.time_delta; - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); int target = route->active_checkpoint == 0xffff? 0: 1; route->factive = vg_lerpf( route->factive, target, @@ -734,17 +737,17 @@ void world_routes_update_timer_texts( world_instance *world ) { world_render.timer_text_count = 0; - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); if( route->active_checkpoint != 0xffff ){ u32 next = route->active_checkpoint+1; next = next % route->checkpoints_count; next += route->checkpoints_start; - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, next ); - ent_gate *gate = mdl_arritm( &world->ent_gate, cp->gate_index ); - ent_gate *dest = mdl_arritm( &world->ent_gate, gate->target ); + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, next ); + ent_gate *gate = af_arritm( &world->ent_gate, cp->gate_index ); + ent_gate *dest = af_arritm( &world->ent_gate, gate->target ); u32 j=0; for( ; j<4; j++ ){ @@ -972,8 +975,8 @@ void render_world_routes( world_instance *world, mesh_bind( &world->mesh_route_lines ); - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); f32 t = viewing_from_hub? 1.0f: route->factive; @@ -1046,8 +1049,8 @@ void render_world_routes( world_instance *world, glDisable( GL_CULL_FACE ); if( viewing_from_hub ){ - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); v4f colour; v3_muls( route->colour, 1.6666f, colour ); @@ -1055,16 +1058,16 @@ void render_world_routes( world_instance *world, shader_model_gate_uColour( colour ); - for( u32 j=0; jent_gate); j ++ ){ - ent_gate *gate = mdl_arritm( &world->ent_gate, j ); + for( u32 j=0; jent_gate); j ++ ){ + ent_gate *gate = af_arritm( &world->ent_gate, j ); if( !(gate->flags & k_ent_gate_nonlocal) ) render_gate_markers( mmdl, i, gate ); } } } else{ - for( u32 i=0; ient_route); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); if( route->active_checkpoint != 0xffff ){ v4f colour; @@ -1078,8 +1081,8 @@ void render_world_routes( world_instance *world, next = next % route->checkpoints_count; next += route->checkpoints_start; - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, next ); - ent_gate *gate = mdl_arritm( &world->ent_gate, cp->gate_index ); + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, next ); + ent_gate *gate = af_arritm( &world->ent_gate, cp->gate_index ); render_gate_markers( mmdl, i, gate ); } } diff --git a/src/world_routes_ui.c b/src/world_routes_ui.c index 0afbeae..a85ca62 100644 --- a/src/world_routes_ui.c +++ b/src/world_routes_ui.c @@ -35,9 +35,9 @@ static void ent_route_imgui( ui_context *ctx, cpid %= route->checkpoints_count; cpid += route->checkpoints_start; - ent_checkpoint *cp = mdl_arritm( &world->ent_checkpoint, cpid ); - ent_gate *rg = mdl_arritm( &world->ent_gate, cp->gate_index ); - rg = mdl_arritm( &world->ent_gate, rg->target ); + ent_checkpoint *cp = af_arritm( &world->ent_checkpoint, cpid ); + ent_gate *rg = af_arritm( &world->ent_gate, cp->gate_index ); + rg = af_arritm( &world->ent_gate, rg->target ); if( last_version+1 == rg->timing_version ) { struct time_block *block = &blocks[ valid_sections ++ ]; @@ -161,8 +161,8 @@ void world_routes_imgui( ui_context *ctx, world_instance *world ) if( skaterift.activity == k_skaterift_menu ) return; ui_point cursor = { 4, 4 }; - for( u32 i=0; ient_route); i++ ) + for( u32 i=0; ient_route); i++ ) { - ent_route_imgui( ctx, world, mdl_arritm( &world->ent_route, i ), cursor ); + ent_route_imgui( ctx, world, af_arritm( &world->ent_route, i ), cursor ); } } diff --git a/src/world_sfd.c b/src/world_sfd.c index 6473d63..6d40677 100644 --- a/src/world_sfd.c +++ b/src/world_sfd.c @@ -180,11 +180,11 @@ void world_sfd_compile_active_scores(void) struct leaderboard_cache *board = NULL; const char *name = "Out of range"; - if( world_sfd.active_route_board < mdl_arrcount( &world->ent_route ) ){ + if( world_sfd.active_route_board < af_arrcount( &world->ent_route ) ){ board = &world->leaderboard_cache[ world_sfd.active_route_board ]; - ent_route *route = mdl_arritm( &world->ent_route, + ent_route *route = af_arritm( &world->ent_route, world_sfd.active_route_board ); - name = mdl_pstr( &world->meta, route->pstr_name ); + name = ps_get( &world->meta.strings, route->pstr_name ); } world_sfd_compile_scores( board, name ); @@ -192,12 +192,12 @@ void world_sfd_compile_active_scores(void) void world_sfd_update( world_instance *world, v3f pos ) { - if( mdl_arrcount( &world->ent_route ) ){ + if( af_arrcount( &world->ent_route ) ){ u32 closest = 0; float min_dist = INFINITY; - for( u32 i=0; ient_route ); i++ ){ - ent_route *route = mdl_arritm( &world->ent_route, i ); + for( u32 i=0; ient_route ); i++ ){ + ent_route *route = af_arritm( &world->ent_route, i ); float dist = v3_dist2( route->board_transform[3], pos ); if( dist < min_dist ){ @@ -213,7 +213,7 @@ void world_sfd_update( world_instance *world, v3f pos ) f64 delta = vg.time_real - board->cache_time; if( (delta > 45.0) || (board->cache_time == 0.0) ){ board->cache_time = vg.time_real; - ent_route *route = mdl_arritm( &world->ent_route, closest ); + ent_route *route = af_arritm( &world->ent_route, closest ); addon_reg *world_reg = world_static.instance_addons[ world - world_static.instances ]; @@ -222,7 +222,7 @@ void world_sfd_update( world_instance *world, v3f pos ) network_request_scoreboard( mod_uid, - mdl_pstr( &world->meta, route->pstr_name ), + ps_get( &world->meta.strings, route->pstr_name ), NETWORK_LEADERBOARD_ALLTIME_AND_CURRENT_WEEK, closest ); } } @@ -321,8 +321,8 @@ void world_sfd_init(void) *m_card = mdl_find_mesh( &mscoreboard, "score_card" ); mdl_submesh - *sm_backer = mdl_arritm( &mscoreboard.submeshs, m_backer->submesh_start ), - *sm_card = mdl_arritm( &mscoreboard.submeshs, m_card->submesh_start ); + *sm_backer = af_arritm( &mscoreboard.submeshs, m_backer->submesh_start ), + *sm_card = af_arritm( &mscoreboard.submeshs, m_card->submesh_start ); world_sfd.sm_base = *sm_backer; m4x3f identity; diff --git a/src/world_volumes.c b/src/world_volumes.c index b74e493..ceb1541 100644 --- a/src/world_volumes.c +++ b/src/world_volumes.c @@ -6,7 +6,7 @@ void world_volumes_update( world_instance *world, v3f pos ) u32 j=0; for( u32 i=0; ient_volume, idx ); + ent_volume *volume = af_arritm( &world->ent_volume, idx ); v3f local; m4x3_mulv( volume->to_local, pos, local ); @@ -57,7 +57,7 @@ void world_volumes_update( world_instance *world, v3f pos ) if( type != k_ent_volume ) continue; - ent_volume *volume = mdl_arritm( &world->ent_volume, index ); + ent_volume *volume = af_arritm( &world->ent_volume, index ); boxf cube = {{-1.0f,-1.0f,-1.0f},{1.0f,1.0f,1.0f}}; if( volume->flags & k_ent_volume_flag_particles ){ -- 2.25.1

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