From a1056ed8198f0f5be0e0f341da8bd49aa6c47198 Mon Sep 17 00:00:00 2001 From: hgn Date: Sun, 26 Mar 2023 23:09:00 +0100 Subject: [PATCH] i hope your hapy --- audio.h | 11 +- blender_export.py | 4004 ++++++++++++---------------- entity.h | 100 + maps_src/mp_arizona.mdl | Bin 1536 -> 2312 bytes maps_src/mp_gridmap.mdl | Bin 667376 -> 669592 bytes maps_src/mp_home.mdl | Bin 139888 -> 138856 bytes maps_src/mp_mtzero.mdl | Bin 12784512 -> 12732736 bytes model.h | 738 ++--- models_src/ch_empty.mdl | Bin 51920 -> 0 bytes models_src/ch_jordan.mdl | Bin 199056 -> 173208 bytes models_src/ch_mike.mdl | Bin 125688 -> 0 bytes models_src/ch_new.mdl | Bin 889168 -> 863080 bytes models_src/ch_outlaw.mdl | Bin 169120 -> 167776 bytes models_src/mp_test.mdl | Bin 93632 -> 0 bytes models_src/rs_cars.mdl | Bin 305968 -> 0 bytes models_src/rs_chicken.mdl | Bin 88720 -> 0 bytes models_src/rs_foliage.mdl | Bin 90416 -> 0 bytes models_src/rs_gate.mdl | Bin 2224 -> 4440 bytes models_src/rs_menu.mdl | Bin 817568 -> 0 bytes models_src/rs_scoretext.mdl | Bin 1300848 -> 0 bytes models_src/rs_skydome.mdl | Bin 99136 -> 38920 bytes models_src/rs_vig.mdl | Bin 78128 -> 0 bytes player.c | 28 +- player.h | 4 +- player_api.h | 4 +- player_model.h | 7 +- player_ragdoll.h | 157 +- player_skate.c | 168 +- player_skate.h | 2 +- player_walk.c | 38 +- rigidbody.h | 166 +- scene.h | 13 +- shaders/common_world.glsl | 16 +- shaders/model_character_view.h | 18 +- shaders/model_gate.h | 10 +- shaders/model_gate_lq.fs | 5 +- shaders/model_sky.h | 18 +- shaders/scene_depth.h | 18 +- shaders/scene_position.h | 18 +- shaders/scene_route.fs | 13 +- shaders/scene_route.h | 31 +- shaders/scene_standard.h | 18 +- shaders/scene_standard_alphatest.h | 18 +- shaders/scene_terrain.h | 18 +- shaders/scene_vertex_blend.h | 18 +- shaders/scene_water.h | 18 +- shaders/scene_water_fast.h | 18 +- skaterift.c | 71 +- skeleton.h | 239 +- world.h | 116 +- world_gate.h | 101 +- world_gen.h | 293 +- world_render.h | 64 +- world_routes.h | 1323 +++------ world_sfd.h | 2 + world_volumes.h | 26 +- world_water.h | 22 +- 57 files changed, 3320 insertions(+), 4632 deletions(-) create mode 100644 entity.h delete mode 100644 models_src/ch_empty.mdl delete mode 100644 models_src/ch_mike.mdl delete mode 100644 models_src/mp_test.mdl delete mode 100644 models_src/rs_cars.mdl delete mode 100644 models_src/rs_chicken.mdl delete mode 100644 models_src/rs_foliage.mdl delete mode 100644 models_src/rs_menu.mdl delete mode 100644 models_src/rs_scoretext.mdl delete mode 100644 models_src/rs_vig.mdl diff --git a/audio.h b/audio.h index eb58b26..4f73509 100644 --- a/audio.h +++ b/audio.h @@ -384,17 +384,14 @@ VG_STATIC enum audio_sprite_type audio_sample_sprite_random( v3f origin, world_instance *world = get_active_world(); - if( ray_world( world, pos, (v3f){0.0f,-1.0f,0.0f}, &contact ) ) - { - struct world_material *mat = ray_hit_material( world, &contact ); + if( ray_world( world, pos, (v3f){0.0f,-1.0f,0.0f}, &contact ) ){ + struct world_surface *mat = ray_hit_surface( world, &contact ); - if( mat->info.surface_prop == k_surface_prop_grass) - { + if( mat->info.surface_prop == k_surface_prop_grass){ v3_copy( contact.pos, output ); return k_audio_sprite_type_grass; } - else - { + else{ #if 0 vg_line( pos, contact.pos, 0xff0000ff ); vg_line_pt3( contact.pos, 0.3f, 0xff0000ff ); diff --git a/blender_export.py b/blender_export.py index 091718d..dee0d8f 100644 --- a/blender_export.py +++ b/blender_export.py @@ -1,22 +1,3 @@ -# -# ============================================================================= -# -# Copyright . . . -----, ,----- ,---. .---. -# 2021-2023 |\ /| | / | | | | /| -# | \ / | +-- / +----- +---' | / | -# | \ / | | / | | \ | / | -# | \/ | | / | | \ | / | -# ' ' '--' [] '----- '----- ' ' '---' SOFTWARE -# -# ============================================================================= -# -# Python exporter for Blender, compiles .mdl format for Skate Rift. -# -# Its really slow, sorry, I don't know how to speed it up. -# Also not sure why you need to put # before {} in code blocks, there is errors -# otherwise -# - import bpy, math, gpu, os import cProfile from ctypes import * @@ -24,12 +5,12 @@ from mathutils import * from gpu_extras.batch import batch_for_shader bl_info = { - "name":"Skate Rift model compiler", + "name":"Skaterift .mdl exporter", "author": "Harry Godden (hgn)", "version": (0,2), "blender":(3,1,0), "location":"Export", - "descriptin":"", + "description":"", "warning":"", "wiki_url":"", "category":"Import/Export", @@ -46,9 +27,15 @@ class mdl_vert(Structure): # 48 bytes. Quite large. Could compress ("groups",c_uint8*4)] #} +class mdl_transform(Structure): +#{ + _fields_ = [("co",c_float*3), + ( "s",c_float*3), + ( "q",c_float*4)] +#} + class mdl_submesh(Structure): #{ - _pack_ = 1 _fields_ = [("indice_start",c_uint32), ("indice_count",c_uint32), ("vertex_start",c_uint32), @@ -57,17 +44,8 @@ class mdl_submesh(Structure): ("material_id",c_uint32)] # index into the material array #} -class mdl_texture(Structure): -#{ - _pack_ = 1 - _fields_ = [("pstr_name",c_uint32), - ("pack_offset",c_uint32), - ("pack_length",c_uint32)] -#} - class mdl_material(Structure): #{ - _pack_ = 1 _fields_ = [("pstr_name",c_uint32), ("shader",c_uint32), ("flags",c_uint32), @@ -75,1984 +53,1745 @@ class mdl_material(Structure): ("colour",c_float*4), ("colour1",c_float*4), ("tex_diffuse",c_uint32), - ("tex_decal",c_uint32), - ("tex_normal",c_uint32)] + ("tex_none0",c_uint32), + ("tex_none1",c_uint32)] #} -class mdl_node(Structure): +class mdl_bone(Structure): #{ - _pack_ = 1 - _fields_ = [("co",c_float*3), - ( "q",c_float*4), - ( "s",c_float*3), - ("sub_uid",c_uint32), # dont use - ("submesh_start",c_uint32), - ("submesh_count",c_uint32), - ("classtype",c_uint32), - ("offset",c_uint32), + _fields_ = [("co",c_float*3),("end",c_float*3), ("parent",c_uint32), - ("pstr_name",c_uint32)] + ("collider",c_uint32), + ("ik_target",c_uint32), + ("ik_pole",c_uint32), + ("flags",c_uint32), + ("pstr_name",c_uint32), + ("hitbox",(c_float*3)*2), + ("conevx",c_float*3),("conevy",c_float*3),("coneva",c_float*3), + ("conet",c_float)] #} -class mdl_header(Structure): +class mdl_armature(Structure): #{ - _pack_ = 1 - _fields_ = [("identifier",c_uint32), - ("version",c_uint32), - ("file_length",c_uint32), - ("pad0",c_uint32), + _fields_ = [("transform",mdl_transform), + ("bone_start",c_uint32), + ("bone_count",c_uint32), + ("anim_start",c_uint32), + ("anim_count",c_uint32)] +#} - ("node_count",c_uint32), - ("node_offset",c_uint32), +class mdl_animation(Structure): +#{ + _fields_ = [("pstr_name",c_uint32), + ("length",c_uint32), + ("rate",c_float), + ("keyframe_start",c_uint32)] +#} +class mdl_mesh(Structure): +#{ + _fields_ = [("transform",mdl_transform), + ("submesh_start",c_uint32), ("submesh_count",c_uint32), - ("submesh_offset",c_uint32), - - ("material_count",c_uint32), - ("material_offset",c_uint32), + ("pstr_name",c_uint32), + ("flags",c_uint32), + ("armature_id",c_uint32)] +#} - ("texture_count",c_uint32), - ("texture_offset",c_uint32), +class mdl_file(Structure): +#{ + _fields_ = [("path",c_uint32), + ("pack_offset",c_uint32), + ("pack_size",c_uint32)] +#} - ("anim_count",c_uint32), - ("anim_offset",c_uint32), +class mdl_texture(Structure): +#{ + _fields_ = [("file",mdl_file), + ("type",c_uint32)] +#} - ("entdata_size",c_uint32), - ("entdata_offset",c_uint32), - - ("strings_size",c_uint32), - ("strings_offset",c_uint32), +class mdl_array(Structure): +#{ + _fields_ = [("file_offset",c_uint32), + ("item_count",c_uint32), + ("item_size",c_uint32), + ("name",c_byte*16)] +#} - ("keyframe_count",c_uint32), - ("keyframe_offset",c_uint32), +class mdl_header(Structure): +#{ + _fields_ = [("version",c_uint32), + ("arrays",mdl_array)] +#} - ("vertex_count",c_uint32), - ("vertex_offset",c_uint32), +class ent_spawn(Structure): +#{ + _fields_ = [("transform",mdl_transform), + ("pstr_name",c_uint32)] +#} - ("indice_count",c_uint32), - ("indice_offset",c_uint32), +class ent_light(Structure): +#{ + _fields_ = [("transform",mdl_transform), + ("daytime",c_uint32), + ("type",c_uint32), + ("colour",c_float*4), + ("angle",c_float), + ("range",c_float), + ("inverse_world",(c_float*3)*4), # Runtime + ("angle_sin_cos",(c_float*2))] # Runtime +#} - ("pack_size",c_uint32), - ("pack_offset",c_uint32)] +class version_refcount_union(Union): +#{ + _fields_ = [("timing_version",c_uint32), + ("ref_count",c_uint8)] #} -class mdl_animation(Structure): +class ent_gate(Structure): #{ - _pack_ = 1 - _fields_ = [("pstr_name",c_uint32), - ("length",c_uint32), - ("rate",c_float), - ("offset",c_uint32)] + _fields_ = [("type",c_uint32), + ("target", c_uint32), + ("dimensions", c_float*3), + ("co", (c_float*3)*2), + ("q", (c_float*4)*2), + ("to_world",(c_float*3)*4), + ("transport",(c_float*3)*4), + ("_anonymous_union",version_refcount_union), + ("timing_time",c_double), + ("routes",c_uint16*4)] #} -class mdl_keyframe(Structure): +class ent_route_node(Structure): #{ - _pack_ = 1 _fields_ = [("co",c_float*3), - ("q",c_float*4), - ("s",c_float*3)] + ("ref_count",c_uint8), + ("ref_total",c_uint8)] #} -# ---------------------------------------------------------------------------- # -# # -# Entity definitions # -# # -# ---------------------------------------------------------------------------- # -# -# ctypes _fields_ defines the data which is filled in by: -# def encode_obj( _, node, node_def ): -# -# gizmos get drawn into the viewport via: -# @staticmethod -# def draw_scene_helpers( obj ): -# -# editor enterface, simiraliy: -# @staticmethod -# def editor_interface( layout, obj ): -# +class ent_path_index(Structure): +#{ + _fields_ = [("index",c_uint16)] +#} -# 000: Intrinsic -# ---------------------------------------------------------------------------- # +class ent_checkpoint(Structure): +#{ + _fields_ = [("gate_index",c_uint16), + ("path_start",c_uint16), + ("path_count",c_uint16)] +#} -# Purpose: intrinsic bone type, stores collision information and limits too -# -class classtype_bone(Structure): +class ent_route(Structure): #{ - _pack_ = 1 - _fields_ = [("flags",c_uint32), - ("ik_target",c_uint32), - ("ik_pole",c_uint32), - ("hitbox",(c_float*3)*2), - ("conevx",c_float*3), - ("conevy",c_float*3), - ("coneva",c_float*3), - ("conet",c_float)] + _fields_ = [("transform",mdl_transform), + ("pstr_name",c_uint32), + ("checkpoints_start",c_uint16), + ("checkpoints_count",c_uint16), + ("colour",c_float*4), + ("active",c_uint32), #runtime + ("factive",c_float), + ("board_transform",(c_float*3)*4), + ("sm",mdl_submesh), + ("latest_pass",c_double)] +#} - def encode_obj(_, node,node_def): - #{ - node.classtype = 1 +def obj_ent_type( obj ): +#{ + if obj.type == 'ARMATURE': return 'mdl_armature' + elif obj.type == 'LIGHT': return 'ent_light' + else: return obj.SR_data.ent_type +#} - armature_def = node_def['linked_armature'] - obj = node_def['bone'] - - _.flags = node_def['deform'] - - if 'ik_target' in node_def: - #{ - _.flags |= 0x2 - _.ik_target = armature_def['bones'].index( node_def['ik_target'] ) - _.ik_pole = armature_def['bones'].index( node_def['ik_pole'] ) - #} - - # For ragdolls - # - if obj.cv_data.collider != 'collider_none': - #{ - if obj.cv_data.collider == 'collider_box': - _.flags |= 0x4 - else: - _.flags |= 0x8 - - _.hitbox[0][0] = obj.cv_data.v0[0] - _.hitbox[0][1] = obj.cv_data.v0[2] - _.hitbox[0][2] = -obj.cv_data.v1[1] - _.hitbox[1][0] = obj.cv_data.v1[0] - _.hitbox[1][1] = obj.cv_data.v1[2] - _.hitbox[1][2] = -obj.cv_data.v0[1] - #} +def sr_filter_ent_type( obj, ent_type ): +#{ + if obj == bpy.context.active_object: return False - if obj.cv_data.con0: - #{ - _.flags |= 0x100 - _.conevx[0] = obj.cv_data.conevx[0] - _.conevx[1] = obj.cv_data.conevx[2] - _.conevx[2] = -obj.cv_data.conevx[1] - _.conevy[0] = obj.cv_data.conevy[0] - _.conevy[1] = obj.cv_data.conevy[2] - _.conevy[2] = -obj.cv_data.conevy[1] - _.coneva[0] = obj.cv_data.coneva[0] - _.coneva[1] = obj.cv_data.coneva[2] - _.coneva[2] = -obj.cv_data.coneva[1] - _.conet = obj.cv_data.conet + for c0 in obj.users_collection:#{ + for c1 in bpy.context.active_object.users_collection:#{ + if c0 == c1:#{ + return ent_type == obj_ent_type( obj ) + #} #} #} + + return False #} -# Purpose: defines the allocation requirements for a skeleton -# -class classtype_skeleton(Structure): +def compile_obj_transform( obj, transform ): #{ - _pack_ = 1 - _fields_ = [("channels",c_uint32), - ("ik_count",c_uint32), - ("collider_count",c_uint32), - ("anim_start",c_uint32), - ("anim_count",c_uint32)] + co = obj.matrix_world @ Vector((0,0,0)) + q = obj.matrix_local.to_quaternion() + s = obj.scale + + # Setup transform + # + transform.co[0] = co[0] + transform.co[1] = co[2] + transform.co[2] = -co[1] + transform.q[0] = q[1] + transform.q[1] = q[3] + transform.q[2] = -q[2] + transform.q[3] = q[0] + transform.s[0] = s[0] + transform.s[1] = s[2] + transform.s[2] = s[1] +#} - def encode_obj(_, node,node_def): - #{ - node.classtype = 2 - - _.channels = len( node_def['bones'] ) - _.ik_count = node_def['ik_count'] - _.collider_count = node_def['collider_count'] - _.anim_start = node_def['anim_start'] - _.anim_count = node_def['anim_count'] - #} +def int_align_to( v, align ): +#{ + while(v%align)!=0: v += 1 + return v #} -# Purpose: links an mesh node to a type 11 -# -class classtype_skin(Structure): +def bytearray_align_to( buffer, align, w=b'\xaa' ): #{ - _pack_ = 1 - _fields_ = [("skeleton",c_uint32)] + while (len(buffer) % align) != 0: buffer.extend(w) + return buffer +#} - def encode_obj(_, node,node_def): - #{ - node.classtype = 3 - - armature_def = node_def['linked_armature'] - _.skeleton = armature_def['obj'].cv_data.uid +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] ) ) #} #} -# Purpose: world light -# -class classtype_world_light( Structure ): +def sr_compile_string( s ): #{ - _pack_ = 1 - _fields_ = [("type",c_uint32), - ("colour",c_float*4), - ("angle",c_float), - ("range",c_float)] - - def encode_obj(_, node, node_def): - #{ - node.classtype = 4 - - obj = node_def['obj'] - data = obj.data - _.colour[0] = data.color[0] - _.colour[1] = data.color[1] - _.colour[2] = data.color[2] - _.colour[3] = data.energy - _.range = data.cutoff_distance # this has to be manually set - # TODO: At some point, automate a min - # threshold value - - if obj.data.type == 'POINT': - #{ - _.type = 0 - _.angle = 0.0 - #} - elif obj.data.type == 'SPOT': - #{ - _.type = 1 - _.angle = data.spot_size*0.5 - #} + 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( s.encode('utf-8') ) + sr_compile.string_data.extend( b'\0' ) - if data.cv_data.bp0: - _.type += 2 - #} + bytearray_align_to( sr_compile.string_data, 4 ) + return index +#} - @staticmethod - def editor_interface( layout, obj ): - #{ - pass - #} +def material_tex_image(v): +#{ + return { + "Image Texture": + { + "image": F"{v}" + } + } #} -# 100: Gates -# ---------------------------------------------------------------------------- # +cxr_graph_mapping = \ +{ + # Default shader setup + "Principled BSDF": + { + "Base Color": + { + "Image Texture": + { + "image": "tex_diffuse" + }, + "Mix": + { + "A": material_tex_image("tex_diffuse"), + "B": material_tex_image("tex_decal") + }, + }, + "Normal": + { + "Normal Map": + { + "Color": material_tex_image("tex_normal") + } + } + } +} -# Purpose: A rift. must target another gate, the target gate can not have more -# than one target nodes of its own. +# https://harrygodden.com/git/?p=convexer.git;a=blob;f=__init__.py;#l1164 # -class classtype_gate(Structure): +def material_info(mat): #{ - _pack_ = 1 - _fields_ = [("target",c_uint32), - ("dims",c_float*3)] + info = {} - def encode_obj(_, node,node_def): - #{ - node.classtype = 100 + # Using the cxr_graph_mapping as a reference, go through the shader + # graph and gather all $props from it. + # + def _graph_read( node_def, node=None, depth=0 ):#{ + nonlocal mat + nonlocal info + + # Find rootnodes + # + if node == None:#{ + _graph_read.extracted = [] - obj = node_def['obj'] + for node_idname in node_def:#{ + for n in mat.node_tree.nodes:#{ + if n.name == node_idname:#{ + node_def = node_def[node_idname] + node = n + break + #} + #} + #} + #} - if obj.cv_data.target != None: - _.target = obj.cv_data.target.cv_data.uid + for link in node_def:#{ + link_def = node_def[link] - if obj.type == 'MESH': - #{ - _.dims[0] = obj.data.cv_data.v0[0] - _.dims[1] = obj.data.cv_data.v0[1] - _.dims[2] = obj.data.cv_data.v0[2] - #} - else: - #{ - _.dims[0] = obj.cv_data.v0[0] - _.dims[1] = obj.cv_data.v0[1] - _.dims[2] = obj.cv_data.v0[2] + if isinstance( link_def, dict ):#{ + node_link = None + for x in node.inputs:#{ + if isinstance( x, bpy.types.NodeSocketColor ):#{ + if link == x.name:#{ + node_link = x + break + #} + #} + #} + + if node_link and node_link.is_linked:#{ + # look for definitions for the connected node type + # + from_node = node_link.links[0].from_node + + node_name = from_node.name.split('.')[0] + if node_name in link_def:#{ + from_node_def = link_def[ node_name ] + + _graph_read( from_node_def, from_node, depth+1 ) + #} + + # No definition! :( + # TODO: Make a warning for this? + #} + else:#{ + if "default" in link_def:#{ + prop = link_def['default'] + info[prop] = node_link.default_value + #} + #} + #} + else:#{ + prop = link_def + info[prop] = getattr( node, link ) + #} #} #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours + _graph_read( cxr_graph_mapping ) + return info +#} - if obj.type == 'MESH': - dims = obj.data.cv_data.v0 - else: - dims = obj.cv_data.v0 +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 ) - vs = [None]*9 - c = Vector((0,0,dims[2])) + sr_compile.pack_data.extend( data ) + bytearray_align_to( sr_compile.pack_data, 16 ) +#} - vs[0] = obj.matrix_world @ Vector((-dims[0],0.0,-dims[1]+dims[2])) - vs[1] = obj.matrix_world @ Vector((-dims[0],0.0, dims[1]+dims[2])) - vs[2] = obj.matrix_world @ Vector(( dims[0],0.0, dims[1]+dims[2])) - vs[3] = obj.matrix_world @ Vector(( dims[0],0.0,-dims[1]+dims[2])) - vs[4] = obj.matrix_world @ (c+Vector((-1,0,-2))) - vs[5] = obj.matrix_world @ (c+Vector((-1,0, 2))) - vs[6] = obj.matrix_world @ (c+Vector(( 1,0, 2))) - vs[7] = obj.matrix_world @ (c+Vector((-1,0, 0))) - vs[8] = obj.matrix_world @ (c+Vector(( 1,0, 0))) +def sr_compile_texture( img ): +#{ + if img == None: + return 0 - indices = [(0,1),(1,2),(2,3),(3,0),(4,5),(5,6),(7,8)] + name = os.path.splitext( img.name )[0] - for l in indices: - #{ - v0 = vs[l[0]] - v1 = vs[l[1]] - cv_view_verts += [(v0[0],v0[1],v0[2])] - cv_view_verts += [(v1[0],v1[1],v1[2])] - cv_view_colours += [(1,1,0,1),(1,1,0,1)] - #} + if name in sr_compile.texture_cache: + return sr_compile.texture_cache[name] - sw = (0.4,0.4,0.4,0.2) - if obj.cv_data.target != None: - cv_draw_arrow( obj.location, obj.cv_data.target.location, sw ) - #} + texture_index = (len(sr_compile.texture_data)//sizeof(mdl_texture)) +1 - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "target" ) + tex = mdl_texture() + tex.type = 0 - mesh = obj.data - layout.label( text=F"(i) Data is stored in {mesh.name}" ) - layout.prop( mesh.cv_data, "v0", text="Gate dimensions" ) + 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) ) + return texture_index #} -class classtype_nonlocal_gate(classtype_gate): +def sr_compile_material( mat ): #{ - def encode_obj(_,node,node_def): - #{ - node.classtype = 101 + if mat == None: + return 0 + if mat.name in sr_compile.material_cache: + return sr_compile.material_cache[mat.name] - obj = node_def['obj'] - _.target = encoder_process_pstr( node_def['obj'].cv_data.strp ) + index = (len(sr_compile.material_data)//sizeof(mdl_material))+1 + sr_compile.material_cache[mat.name] = index - if obj.type == 'MESH': - #{ - _.dims[0] = obj.data.cv_data.v0[0] - _.dims[1] = obj.data.cv_data.v0[1] - _.dims[2] = obj.data.cv_data.v0[2] - #} - else: - #{ - _.dims[0] = obj.cv_data.v0[0] - _.dims[1] = obj.cv_data.v0[1] - _.dims[2] = obj.cv_data.v0[2] - #} + m = mdl_material() + m.pstr_name = sr_compile_string( mat.name ) + + flags = 0x00 + if mat.SR_data.collision:#{ + flags |= 0x2 + if mat.SR_data.skate_surface: flags |= 0x1 + if mat.SR_data.grind_surface: flags |= (0x8|0x1) #} - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "strp", text="Nonlocal ID" ) + if mat.SR_data.grow_grass: flags |= 0x4 + m.flags = flags - mesh = obj.data - layout.label( text=F"(i) Data is stored in {mesh.name}" ) - layout.prop( mesh.cv_data, "v0", text="Gate dimensions" ) - #} -#} + m.surface_prop = int(mat.SR_data.surface_prop) -# 200: Spawns/Waypoints -# ---------------------------------------------------------------------------- # + if mat.SR_data.shader == 'standard': m.shader = 0 + if mat.SR_data.shader == 'standard_cutout': m.shader = 1 + if mat.SR_data.shader == 'terrain_blend':#{ + m.shader = 2 -# Purpose: player can reset here, its a safe place -# spawns can share the same name, the closest one will be picked -# -# when the world loads it will pick the one named 'start' first. -# -class classtype_spawn(Structure): -#{ - _pack_ = 1 - _fields_ = [("pstr_alias",c_uint32)] + m.colour[0] = pow( mat.SR_data.sand_colour[0], 1.0/2.2 ) + m.colour[1] = pow( mat.SR_data.sand_colour[1], 1.0/2.2 ) + m.colour[2] = pow( mat.SR_data.sand_colour[2], 1.0/2.2 ) + m.colour[3] = 1.0 - def encode_obj(_, node,node_def): - #{ - node.classtype = 200 - _.pstr_alias = encoder_process_pstr( node_def['obj'].cv_data.strp ) + m.colour1[0] = mat.SR_data.blend_offset[0] + m.colour1[1] = mat.SR_data.blend_offset[1] #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours + if mat.SR_data.shader == 'vertex_blend':#{ + m.shader = 3 - vs = [None]*4 - vs[0] = obj.matrix_world @ Vector((0,0,0)) - vs[1] = obj.matrix_world @ Vector((0,2,0)) - vs[2] = obj.matrix_world @ Vector((0.5,1,0)) - vs[3] = obj.matrix_world @ Vector((-0.5,1,0)) - indices = [(0,1),(1,2),(1,3)] + m.colour1[0] = mat.SR_data.blend_offset[0] + m.colour1[1] = mat.SR_data.blend_offset[1] + #} - for l in indices: - #{ - v0 = vs[l[0]] - v1 = vs[l[1]] - - cv_view_verts += [(v0[0],v0[1],v0[2])] - cv_view_verts += [(v1[0],v1[1],v1[2])] - cv_view_colours += [(0,1,1,1),(0,1,1,1)] - #} + if mat.SR_data.shader == 'water':#{ + m.shader = 4 - cv_draw_sphere( obj.location, 20.0, [0.1,0,0.9,0.4] ) + m.colour[0] = pow( mat.SR_data.shore_colour[0], 1.0/2.2 ) + m.colour[1] = pow( mat.SR_data.shore_colour[1], 1.0/2.2 ) + m.colour[2] = pow( mat.SR_data.shore_colour[2], 1.0/2.2 ) + m.colour[3] = 1.0 + m.colour1[0] = pow( mat.SR_data.ocean_colour[0], 1.0/2.2 ) + m.colour1[1] = pow( mat.SR_data.ocean_colour[1], 1.0/2.2 ) + m.colour1[2] = pow( mat.SR_data.ocean_colour[2], 1.0/2.2 ) + m.colour1[3] = 1.0 #} + + inf = material_info( mat ) - @staticmethod - def editor_interface( layout, obj ): + if mat.SR_data.shader == 'standard' or \ + mat.SR_data.shader == 'standard_cutout' or \ + mat.SR_data.shader == 'terrain_blend' or \ + mat.SR_data.shader == 'vertex_blend': #{ - layout.prop( obj.cv_data, "strp", text="Alias" ) + if 'tex_diffuse' in inf: + m.tex_diffuse = sr_compile_texture(inf['tex_diffuse']) #} -#} -# 300: Water -# ---------------------------------------------------------------------------- # + sr_compile.material_data.extend( bytearray(m) ) + return index +#} -# Purpose: Tells the game to draw water HERE, at this entity. -# -class classtype_water(Structure): +def sr_armature_bones( armature ): #{ - _pack_ = 1 - _fields_ = [("temp",c_uint32)] - - def encode_obj(_, node,node_def): + def _recurse_bone( b ): #{ - node.classtype = 300 - # no data, spooky + yield b + for c in b.children: yield from _recurse_bone( c ) #} -#} -# 400: Routes -# ---------------------------------------------------------------------------- # + for b in armature.data.bones: + if not b.parent: + yield from _recurse_bone( b ) +#} -# Purpose: Defines a route, its 'starting' point, and the colour to use for it -# -class classtype_route(Structure): +def sr_compile_mesh( obj ): #{ - _pack_ = 1 - _fields_ = [("id_start",c_uint32), - ("pstr_name",c_uint32), - ("colour",c_float*3)] + node=mdl_mesh() + compile_obj_transform(obj, node.transform) + node.pstr_name = sr_compile_string(obj.name) + node.flags = 0 - def encode_obj(_, node,node_def): - #{ - node.classtype = 400 - obj = node_def['obj'] + can_use_cache = True + armature = None + + for mod in obj.modifiers:#{ + if mod.type == 'DATA_TRANSFER' or mod.type == 'SHRINKWRAP' or \ + mod.type == 'BOOLEAN' or mod.type == 'CURVE' or \ + mod.type == 'ARRAY': + #{ + can_use_cache = False + #} - _.colour[0] = obj.cv_data.colour[0] - _.colour[1] = obj.cv_data.colour[1] - _.colour[2] = obj.cv_data.colour[2] - _.pstr_name = encoder_process_pstr( obj.cv_data.strp ) + if mod.type == 'ARMATURE': #{ + node.flags = 1 + armature = mod.object + rig_weight_groups = \ + ['0 [ROOT]']+[_.name for _ in sr_armature_bones(mod.object)] + node.armature_id = sr_compile.entity_ids[armature.name] - if obj.cv_data.target != None: - _.id_start = obj.cv_data.target.cv_data.uid + POSE_OR_REST_CACHE = armature.data.pose_position + armature.data.pose_position = 'REST' + #} #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours, cv_view_course_i + # Check the cache first + # + if can_use_cache and (obj.data.name in sr_compile.mesh_cache):#{ + ref = sr_compile.mesh_cache[obj.data.name] + node.submesh_start = ref[0] + node.submesh_count = ref[1] + sr_compile.mesh_data.extend(bytearray(node)) + return + #} + + # Compile a whole new mesh + # + node.submesh_start = len(sr_compile.submesh_data)//sizeof(mdl_submesh) + node.submesh_count = 0 + + dgraph = bpy.context.evaluated_depsgraph_get() + data = obj.evaluated_get(dgraph).data + data.calc_loop_triangles() + data.calc_normals_split() + + # Mesh is split into submeshes based on their material + # + mat_list = data.materials if len(data.materials) > 0 else [None] + for material_id, mat in enumerate(mat_list): #{ + 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.vertex_count = 0 + sm.indice_count = 0 + sm.material_id = sr_compile_material( mat ) - if obj.cv_data.target: - cv_draw_arrow( obj.location, obj.cv_data.target.location, [1,1,1,1] ) + INF=99999999.99999999 + for i in range(3):#{ + sm.bbx[0][i] = INF + sm.bbx[1][i] = -INF + #} - # Tries to simulate how we do it in the game + # Keep a reference to very very very similar vertices + # i have no idea how to speed it up. # - stack = [None]*64 - stack_i = [0]*64 - stack[0] = obj.cv_data.target - si = 1 - loop_complete = False + vertex_reference = {} - while si > 0: - #{ - if stack_i[si-1] == 2: - #{ - si -= 1 + # Write the vertex / indice data + # + for tri_index, tri in enumerate(data.loop_triangles):#{ + if tri.material_index != material_id: continue - if si == 0: # Loop failed to complete - break - #} - - node = stack[si-1] + for j in range(3):#{ + vert = data.vertices[tri.vertices[j]] + li = tri.loops[j] + vi = data.loops[li].vertex_index + + # Gather vertex information + # + co = vert.co + norm = data.loops[li].normal + uv = (0,0) + colour = (255,255,255,255) + groups = [0,0,0,0] + weights = [0,0,0,0] - targets = [None,None] - targets[0] = node.cv_data.target + # Uvs + # + if data.uv_layers: + uv = data.uv_layers.active.data[li].uv + + # Vertex Colours + # + if data.vertex_colors:#{ + colour = data.vertex_colors.active.data[li].color + colour = (int(colour[0]*255.0),\ + int(colour[1]*255.0),\ + int(colour[2]*255.0),\ + int(colour[3]*255.0)) + #} + + # Weight groups: truncates to the 3 with the most influence. The + # fourth bone ID is never used by the shader so it + # is always 0 + # + if armature:#{ + src_groups = [_ for _ in data.vertices[vi].groups \ + if obj.vertex_groups[_.group].name in \ + rig_weight_groups ] - if node.cv_data.classtype == 'classtype_route_node': - #{ - targets[1] = node.cv_data.target1 - #} - - nextnode = targets[stack_i[si-1]] - stack_i[si-1] += 1 - - if nextnode != None: # branch - #{ - if nextnode == stack[0]: # Loop completed - #{ - loop_complete = True - break + weight_groups = sorted( src_groups, key = \ + lambda a: a.weight, reverse=True ) + tot = 0.0 + for ml in range(3):#{ + if len(weight_groups) > ml:#{ + g = weight_groups[ml] + name = obj.vertex_groups[g.group].name + weight = g.weight + weights[ml] = weight + groups[ml] = rig_weight_groups.index(name) + tot += weight + #} + #} + + if len(weight_groups) > 0:#{ + inv_norm = (1.0/tot) * 65535.0 + for ml in range(3):#{ + weights[ml] = int( weights[ml] * inv_norm ) + weights[ml] = min( weights[ml], 65535 ) + weights[ml] = max( weights[ml], 0 ) + #} + #} #} + else:#{ + li1 = tri.loops[(j+1)%3] + vi1 = data.loops[li1].vertex_index + e0 = data.edges[ data.loops[li].edge_index ] - valid=True - for sj in range(si): - #{ - if stack[sj] == nextnode: # invalidated path + if e0.use_freestyle_mark and \ + ((e0.vertices[0] == vi and e0.vertices[1] == vi1) or \ + (e0.vertices[0] == vi1 and e0.vertices[1] == vi)): #{ - valid=False - break + weights[0] = 1 #} #} - if valid: - #{ - stack_i[si] = 0 - stack[si] = nextnode - si += 1 - continue - #} - #} - #} + TOLERENCE = float(10**4) + key = (int(co[0]*TOLERENCE+0.5), + int(co[1]*TOLERENCE+0.5), + int(co[2]*TOLERENCE+0.5), + int(norm[0]*TOLERENCE+0.5), + int(norm[1]*TOLERENCE+0.5), + int(norm[2]*TOLERENCE+0.5), + int(uv[0]*TOLERENCE+0.5), + int(uv[1]*TOLERENCE+0.5), + colour[0], # these guys are already quantized + colour[1], # . + colour[2], # . + colour[3], # . + weights[0], # v + weights[1], + weights[2], + weights[3], + groups[0], + groups[1], + groups[2], + groups[3]) + + if key in vertex_reference: + index = vertex_reference[key] + else:#{ + index = bytearray(c_uint32(sm.vertex_count)) + sm.vertex_count+=1 + + vertex_reference[key] = index + v = mdl_vert() + v.co[0] = co[0] + v.co[1] = co[2] + v.co[2] = -co[1] + v.norm[0] = norm[0] + v.norm[1] = norm[2] + v.norm[2] = -norm[1] + v.uv[0] = uv[0] + v.uv[1] = uv[1] + v.colour[0] = colour[0] + v.colour[1] = colour[1] + v.colour[2] = colour[2] + v.colour[3] = colour[3] + v.weights[0] = weights[0] + v.weights[1] = weights[1] + v.weights[2] = weights[2] + v.weights[3] = weights[3] + v.groups[0] = groups[0] + v.groups[1] = groups[1] + v.groups[2] = groups[2] + v.groups[3] = groups[3] + + for i in range(3):#{ + sm.bbx[0][i] = min( sm.bbx[0][i], v.co[i] ) + sm.bbx[1][i] = max( sm.bbx[1][i], v.co[i] ) + #} - if loop_complete: - #{ - cc = Vector((obj.cv_data.colour[0],\ - obj.cv_data.colour[1],\ - obj.cv_data.colour[2],\ - 1.0)) - - for sj in range(si): - #{ - sk = (sj+1)%si - - if stack[sj].cv_data.classtype == 'classtype_gate' and \ - stack[sk].cv_data.classtype == 'classtype_gate': - #{ - dist = (stack[sj].location-stack[sk].location).magnitude - cv_draw_sbpath( stack[sj], stack[sk], cc*0.4, cc, dist, dist ) + sr_compile.vertex_data.extend(bytearray(v)) #} - else: - cv_draw_bpath( stack[sj], stack[sk], cc, cc ) + + sm.indice_count += 1 + sr_compile.indice_data.extend( index ) #} - - cv_view_course_i += 1 #} + + # Make sure bounding box isn't -inf -> inf if no vertices + # + if sm.vertex_count == 0: + for j in range(2): + for i in range(3): + sm.bbx[j][i] = 0 + + # Add submesh to encoder + # + sr_compile.submesh_data.extend( bytearray(sm) ) + node.submesh_count += 1 #} - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "target", text="'Start' from" ) - layout.prop( obj.cv_data, "colour" ) - layout.prop( obj.cv_data, "strp", text="Name" ) + if armature:#{ + armature.data.pose_position = POSE_OR_REST_CACHE #} + + # Save a reference to this node since we want to reuse the submesh indices + # later. + sr_compile.mesh_cache[obj.data.name]=(node.submesh_start,node.submesh_count) + sr_compile.mesh_data.extend(bytearray(node)) #} -# Purpose: Defines a route node and links to up to two more nodes -# -class classtype_route_node(Structure): +def sr_compile_armature( obj ): #{ - _pack_ = 1 - _fields_ = [("target",c_uint32), - ("target1",c_uint32)] + node = mdl_armature() + node.bone_start = len(sr_compile.bone_data)//sizeof(mdl_bone) + node.bone_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:#{ + 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:#{ + 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] + bone.hitbox[1][0] = b.SR_data.collider_max[0] + bone.hitbox[1][1] = b.SR_data.collider_max[2] + bone.hitbox[1][2] = -b.SR_data.collider_min[1] + #} + + 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] + bone.conevx[2] = -b.SR_data.conevx[1] + bone.conevy[0] = b.SR_data.conevy[0] + bone.conevy[1] = b.SR_data.conevy[2] + bone.conevy[2] = -b.SR_data.conevy[1] + bone.coneva[0] = b.SR_data.coneva[0] + bone.coneva[1] = b.SR_data.coneva[2] + bone.coneva[2] = -b.SR_data.coneva[1] + bone.conet = b.SR_data.conet + #} - def encode_obj(_, node,node_def): - #{ - node.classtype = 401 - obj = node_def['obj'] + bone.co[0] = b.head_local[0] + bone.co[1] = b.head_local[2] + bone.co[2] = -b.head_local[1] + bone.end[0] = b.tail_local[0] - bone.co[0] + bone.end[1] = b.tail_local[2] - bone.co[1] + 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':#{ + bone.flags |= 0x2 + bone.ik_target = bones_names.index(c.subtarget) + bone.ik_pole = bones_names.index(c.pole_subtarget) + #} + #} - if obj.cv_data.target != None: - _.target = obj.cv_data.target.cv_data.uid - if obj.cv_data.target1 != None: - _.target1 = obj.cv_data.target1.cv_data.uid + node.bone_count += 1 + sr_compile.bone_data.extend(bytearray(bone)) #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours + # 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) - sw = Vector((0.4,0.4,0.4,0.2)) - sw2 = Vector((1.5,0.2,0.2,0.0)) - if obj.cv_data.target != None: - cv_draw_bpath( obj, obj.cv_data.target, sw, sw ) - if obj.cv_data.target1 != None: - cv_draw_bpath( obj, obj.cv_data.target1, sw, sw ) + # 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 + #} - cv_draw_bhandle( obj, 1.0, (0.8,0.8,0.8,1.0) ) - cv_draw_bhandle( obj, -1.0, (0.4,0.4,0.4,1.0) ) + 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() + + 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 - p1 = obj.location+ \ - obj.matrix_world.to_quaternion() @ Vector((0,0,-6+1.5)) - cv_draw_arrow( obj.location, p1, sw ) + # 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 #} - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "target", text="Left" ) - layout.prop( obj.cv_data, "target1", text="Right" ) - #} + sr_compile.armature_data.extend(bytearray(node)) #} +def sr_ent_push( struct ): +#{ + clase = type(struct).__name__ -# 500: Audio -# ---------------------------------------------------------------------------- # + if clase not in sr_compile.entity_data:#{ + sr_compile.entity_data[ clase ] = bytearray() + sr_compile.entity_info[ clase ] = { 'size': sizeof(struct) } + #} -AUDIO_SPRITE_CATEGORIES_ENUM = [ - ('0', "Bird", ""), - ('1', "Nocturnal Bird", ""), - ('2', "Grass", ""), - ('3', "Wave",""), - ('4', "Wind",""), - ('5', "Wood Creaks", ""), - ] - -# flags: -# AUDIO_FLAG_LOOP 0x1 -# AUDIO_FLAG_SPACIAL_3D 0x4 (Probably what you want) -# -class classtype_audio(Structure): + 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 ): #{ - _pack_ = 1 - _fields_ = [("pstr_file",c_uint32), - ("flags",c_uint32), - ("volume",c_float)] + for i in range(len(name)):#{ + arr.name[i] = ord(name[i]) + #} + arr.file_offset = offset + arr.item_count = count + arr.item_size = size +#} - dynamic_enum = [ - ('0', "mono", ""), - ('1', "stereo", ""), - ('2', "remain compressed", ""), - ('3', "synthetic bird",""), - ] +def sr_compile( collection ): +#{ + print( F"[SR] compiler begin ({collection.name}.mdl)" ) - def encode_obj(_, node,node_def ): - #{ - node.classtype = 500 + #settings + sr_compile.pack_textures = collection.SR_data.pack_textures + sr_compile.pack_animations = collection.SR_data.animations - obj = node_def['obj'] + # caches + sr_compile.string_cache = {} + 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.armature_data = bytearray() + sr_compile.anim_data = bytearray() + sr_compile.keyframe_data = bytearray() + sr_compile.texture_data = bytearray() + + # just bytes not structures + sr_compile.string_data = bytearray() + sr_compile.pack_data = bytearray() - _.pstr_file = encoder_process_pstr( obj.cv_data.strp ) + # variable + sr_compile.entity_data = {} + sr_compile.entity_info = {} - flags = 0x00 - if obj.cv_data.bp0: flags |= 0x1 - if obj.cv_data.bp1: flags |= 0x4 - if obj.cv_data.bp2: flags |= 0x8 + print( F"[SR] assign entity ID's" ) + sr_compile.entities = {} + sr_compile.entity_ids = {} - if obj.cv_data.dynamic_enum == '1': flags |= 0x200 - if obj.cv_data.dynamic_enum == '2': flags |= 0x400 - if obj.cv_data.dynamic_enum == '3': flags |= 0x1000 + mesh_count = 0 + for obj in collection.all_objects: #{ + if obj.type == 'MESH': mesh_count += 1 - _.flags = flags - _.volume = obj.cv_data.fltp - #} - - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "strp", text = "File (.ogg/DATA)" ) + ent_type = obj_ent_type( obj ) + if ent_type == 'none': continue - layout.prop( obj.cv_data, "bp0", text = "Looping" ) - layout.prop( obj.cv_data, "bp1", text = "3D Audio" ) - layout.prop( obj.cv_data, "bp2", text = "Play here" ) - layout.prop( obj.cv_data, "dynamic_enum" ) + if ent_type not in sr_compile.entities: sr_compile.entities[ent_type] = [] + sr_compile.entity_ids[obj.name] = len( sr_compile.entities[ent_type] ) + sr_compile.entities[ent_type] += [obj] + #} - layout.prop( obj.cv_data, "fltp", text = "Volume (0-1)" ) + print( F"[SR] Compiling geometry" ) + i=0 + for obj in collection.all_objects:#{ + if obj.type == 'MESH':#{ + i+=1 + print( F'[SR] {i: 3}/{mesh_count} {obj.name:<40}', end='\r' ) + sr_compile_mesh( obj ) + #} #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours + checkpoint_count = 0 + pathindice_count = 0 - if bpy.context.active_object == obj: - cv_draw_sphere( obj.location, obj.scale[0], [1,1,0,1] ) - #} -#} + for ent_type, arr in sr_compile.entities.items():#{ + print(F"[SR] Compiling {len(arr)} {ent_type}{'s' if len(arr)>1 else ''}") -class classtype_audio_sprite(Structure): -#{ - _pack_ = 1 - _fields_ = [("audio",c_uint32), - ("category",c_uint32), - ("probability",c_float)] + for i in range(len(arr)):#{ + obj = arr[i] - dynamic_enum = AUDIO_SPRITE_CATEGORIES_ENUM + print( F"[SR] {i+1: 3}/{len(arr)} {obj.name:<40} ",end='\r' ) - def encode_obj(_, node,node_def ): - #{ - node.classtype = 501 - obj = node_def['obj'] + if ent_type == 'mdl_armature': sr_compile_armature(obj) + elif ent_type == 'ent_light': #{ + light = ent_light() + compile_obj_transform( obj, light.transform ) + light.daytime = obj.data.SR_data.daytime + if obj.data.type == 'POINT':#{ + light.type = 0 + #} + elif obj.data.type == 'SPOT':#{ + light.type = 1 + light.angle = obj.data.spot_size*0.5 + #} + light.range = obj.data.cutoff_distance + light.colour[0] = obj.data.color[0] + light.colour[1] = obj.data.color[1] + light.colour[2] = obj.data.color[2] + light.colour[3] = obj.data.energy + sr_ent_push( light ) + #} + elif ent_type == 'ent_gate': #{ + gate = ent_gate() + gate.type = 0 + obj_data = obj.SR_data.ent_gate[0] + mesh_data = obj.data.SR_data.ent_gate[0] + if obj_data.target:#{ + gate.target = sr_compile.entity_ids[obj_data.target.name] + gate.type = 1 + #} + gate.dimensions[0] = mesh_data.dimensions[0] + gate.dimensions[1] = mesh_data.dimensions[1] + gate.dimensions[2] = mesh_data.dimensions[2] - _.category = int( obj.cv_data.dynamic_enum ) - _.probability = obj.cv_data.fltp + q = [obj.matrix_local.to_quaternion(), (0,0,0,1)] + co = [obj.matrix_world @ Vector((0,0,0)), (0,0,0)] - if obj.cv_data.target: - _.audio = obj.cv_data.target.cv_data.uid - #} + if obj_data.target:#{ + q[1] = obj_data.target.matrix_local.to_quaternion() + co[1]= obj_data.target.matrix_world @ Vector((0,0,0)) + #} + + # Setup transform + # + for x in range(2):#{ + gate.co[x][0] = co[x][0] + gate.co[x][1] = co[x][2] + gate.co[x][2] = -co[x][1] + gate.q[x][0] = q[x][1] + gate.q[x][1] = q[x][3] + gate.q[x][2] = -q[x][2] + gate.q[x][3] = q[x][0] + #} - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "dynamic_enum", text="Category" ) - layout.prop( obj.cv_data, "target", text="Sound" ) - layout.prop( obj.cv_data, "fltp", text="Probability" ) - #} + sr_ent_push( gate ) + #} + elif ent_type == 'ent_spawn': #{ + spawn = ent_spawn() + compile_obj_transform( obj, spawn.transform ) + obj_data = obj.SR_data.ent_spawn[0] + spawn.pstr_name = sr_compile_string( obj_data.name ) + sr_ent_push( spawn ) + #} + elif ent_type == 'ent_route': #{ + obj_data = obj.SR_data.ent_route[0] + route = ent_route() + route.pstr_name = sr_compile_string( obj_data.alias ) #TODO + route.checkpoints_start = checkpoint_count + route.checkpoints_count = 0 + + for ci in range(3): + route.colour[ci] = obj_data.colour[ci] + route.colour[3] = 1.0 + + compile_obj_transform( obj, route.transform ) + + checkpoints = obj_data.gates + route_nodes = [] + + for uc in obj.users_collection[0].objects:#{ + uc_type = obj_ent_type( uc ) + if uc_type == 'ent_gate' or uc_type == 'ent_route_node': + route_nodes += [uc] + #} + graph = node_graph( route_nodes ) - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours + for i in range(len(checkpoints)):#{ + gi = checkpoints[i].target + gj = checkpoints[(i+1)%len(checkpoints)].target + gate = gi - purple = (0.5,0.2,1,1) - if obj.cv_data.target: - cv_draw_arrow( obj.location, obj.cv_data.target.location, purple, 0.1 ) - #} -#} + if gi:#{ + dest = gi.SR_data.ent_gate[0].target + gi = dest + #} + if gi==gj: continue # error? + if not gi or not gj: continue -# 600: Volumes -# ---------------------------------------------------------------------------- # + checkpoint = ent_checkpoint() + checkpoint.gate_index = sr_compile.entity_ids[gate.name] + checkpoint.path_start = pathindice_count + checkpoint.path_count = 0 + + path = dijkstra( graph, gj.name, gi.name ) + if path:#{ + for pi in range(1,len(path)-1):#{ + pathindice = ent_path_index() + pathindice.index = sr_compile.entity_ids[path[pi]] + sr_ent_push( pathindice ) + + checkpoint.path_count += 1 + pathindice_count += 1 + #} + #} + + sr_ent_push( checkpoint ) + route.checkpoints_count += 1 + checkpoint_count += 1 + #} -class classtype_volume_audio(Structure): -#{ - _pack_ = 1 - _fields_ = [("category",c_uint32)] + sr_ent_push( route ) + #} + elif ent_type == 'ent_route_node':#{ + rn = ent_route_node() + rn.co[0] = obj.location[0] + rn.co[1] = obj.location[2] + rn.co[2] = -obj.location[1] + sr_ent_push( rn ) + #} + #} + #} + + print( F"[SR] Writing file" ) - dynamic_enum = AUDIO_SPRITE_CATEGORIES_ENUM + file_array_instructions = {} + file_offset = 0 - def encode_obj(_, node,node_def ): - #{ - node.classtype = 600 + def _write_array( name, item_size, data ):#{ + nonlocal file_array_instructions, file_offset - obj = node_def['obj'] - _.category = int(obj.cv_data.dynamic_enum) + 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 ) #} - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours - cv_draw_ucube( obj.matrix_world, [1,0.8,0,1] ) - #} + _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 ) - @staticmethod - def editor_interface( layout, obj ): - #{ - layout.prop( obj.cv_data, "dynamic_enum", text="Category" ) + for name, buffer in sr_compile.entity_data.items():#{ + _write_array( name, sr_compile.entity_info[name]['size'], buffer ) #} -#} -class classtype_volume_event(Structure): -#{ - _pack_ = 1 - _fields_ = [("event",c_uint32)] + _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 ) - def encode_obj(_, node,node_def ): - #{ - node.classtype = 601 - obj = node_def['obj'] - _.event = encoder_process_pstr( obj.cv_data.strp ) - #} + header_size = int_align_to( sizeof(mdl_header), 8 ) + index_size = int_align_to( sizeof(mdl_array)*len(file_array_instructions),8 ) - @staticmethod - def draw_scene_helpers( obj ): - #{ - global cv_view_verts, cv_view_colours - cv_draw_ucube( obj.matrix_world, [0.0,1.0,0,1] ) - #} -#} + folder = bpy.path.abspath(bpy.context.scene.SR_data.export_dir) + path = F"{folder}{collection.name}.mdl" + print( path ) -# ---------------------------------------------------------------------------- # -# # -# Compiler section # -# # -# ---------------------------------------------------------------------------- # + fp = open( path, "wb" ) + header = mdl_header() + header.version = 40 + sr_array_title( header.arrays, \ + 'index', len(file_array_instructions), \ + sizeof(mdl_array), header_size ) -# Current encoder state -# -g_encoder = None + fp.write( bytearray_align_to( bytearray(header), 8 ) ) -# Reset encoder -# -def encoder_init( collection ): -#{ - global g_encoder + 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) ) - g_encoder = \ - { - # The actual file header - # - 'header': mdl_header(), + print( F'[SR] {name:>16}| {info["count"]: 8} '+\ + F' 0x{info["offset"]:02x}' ) + #} + fp.write( bytearray_align_to( index, 8 ) ) + #bytearray_print_hex( index ) - # Options - # - 'pack_textures': collection.cv_data.pack_textures, + for name,info in file_array_instructions.items():#{ + fp.write( bytearray_align_to( info['data'], 8 ) ) + #} - # Compiled data chunks (each can be read optionally by the client) - # - 'data': - { - #1--------------------------------- - 'node': [], # Metadata 'chunk' - 'submesh': [], - 'material': [], - 'texture': [], - 'anim': [], - 'entdata': bytearray(), # variable width - 'strings': bytearray(), # . - #2--------------------------------- - 'keyframe': [], # Animations - #3--------------------------------- - 'vertex': [], # Mesh data - 'indice': [], - #4--------------------------------- - 'pack': bytearray() # Other generic packed data - }, + fp.close() - # All objects of the model in their final heirachy - # - "uid_count": 1, - "scene_graph":{}, - "graph_lookup":{}, - - # Allows us to reuse definitions - # - 'string_cache':{}, - 'mesh_cache': {}, - 'material_cache': {}, - 'texture_cache': {} - } + print( '[SR] done' ) +#} - g_encoder['header'].identifier = 0xABCD0000 - g_encoder['header'].version = 1 +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' ) + gizmos: bpy.props.BoolProperty( name="Draw Gizmos", default=True ) - # Add fake NoneID material and texture - # - none_material = mdl_material() - none_material.pstr_name = encoder_process_pstr( "" ) - none_material.texture_id = 0 - - none_texture = mdl_texture() - none_texture.pstr_name = encoder_process_pstr( "" ) - none_texture.pack_offset = 0 - none_texture.pack_length = 0 - - g_encoder['data']['material'] += [none_material] - g_encoder['data']['texture'] += [none_texture] + panel: bpy.props.EnumProperty( + name='Panel', + description='', + items=[ + ('EXPORT', 'Export', '', 'MOD_BUILD',0), + ('ENTITY', 'Entity', '', 'MONKEY',1), + ('SETTINGS', 'Settings', 'Settings', 'PREFERENCES',2), + ], + ) +#} - g_encoder['data']['pack'].extend( b'datapack\0\0\0\0\0\0\0\0' ) +class SR_COLLECTION_SETTINGS(bpy.types.PropertyGroup): +#{ + pack_textures: bpy.props.BoolProperty( name="Pack Textures", default=False ) + animations: bpy.props.BoolProperty( name="Export animation", default=True) +#} - # Add root node - # - root = mdl_node() - root.co[0] = 0 - root.co[1] = 0 - root.co[2] = 0 - root.q[0] = 0 - root.q[1] = 0 - root.q[2] = 0 - root.q[3] = 1 - root.s[0] = 1 - root.s[1] = 1 - root.s[2] = 1 - root.pstr_name = encoder_process_pstr('') - root.submesh_start = 0 - root.submesh_count = 0 - root.offset = 0 - root.classtype = 0 - root.parent = 0xffffffff - - g_encoder['data']['node'] += [root] -#} - - -# fill with 0x00 until a multiple of align. Returns how many bytes it added -# -def bytearray_align_to( buffer, align, offset=0 ): +def sr_get_mirror_bone( bones ): #{ - count = 0 + side = bones.active.name[-1:] + other_name = bones.active.name[:-1] + if side == 'L': other_name += 'R' + elif side == 'R': other_name += 'L' + else: return None - while ((len(buffer)+offset) % align) != 0: - #{ - buffer.extend( b'\0' ) - count += 1 + for b in bones:#{ + if b.name == other_name: + return b #} - - return count + + return None #} -# Add a string to the string buffer except if it already exists there then we -# just return its ID. -# -def encoder_process_pstr( s ): +class SR_MIRROR_BONE_X(bpy.types.Operator): #{ - global g_encoder + bl_idname="skaterift.mirror_bone" + bl_label="Mirror bone attributes - SkateRift" - cache = g_encoder['string_cache'] + def execute(_,context): + #{ + active_object = context.active_object + bones = active_object.data.bones + a = bones.active + b = sr_get_mirror_bone( bones ) - if s in cache: - return cache[s] - - cache[s] = len( g_encoder['data']['strings'] ) + if not b: return {'FINISHED'} - buffer = g_encoder['data']['strings'] - buffer.extend( s.encode('utf-8') ) - buffer.extend( b'\0' ) - - bytearray_align_to( buffer, 4 ) - return cache[s] -#} + b.SR_data.collider = a.SR_data.collider -def get_texture_resource_name( img ): -#{ - return os.path.splitext( img.name )[0] -#} + def _v3copyflipy( a, b ):#{ + b[0] = a[0] + b[1] = -a[1] + b[2] = a[2] + #} -# Pack a texture -# -def encoder_process_texture( img ): -#{ - global g_encoder + _v3copyflipy( a.SR_data.collider_min, b.SR_data.collider_min ) + _v3copyflipy( a.SR_data.collider_max, b.SR_data.collider_max ) + b.SR_data.collider_min[1] = -a.SR_data.collider_max[1] + b.SR_data.collider_max[1] = -a.SR_data.collider_min[1] - if img == None: - return 0 + b.SR_data.cone_constraint = a.SR_data.cone_constraint - cache = g_encoder['texture_cache'] - buffer = g_encoder['data']['texture'] - pack = g_encoder['data']['pack'] + _v3copyflipy( a.SR_data.conevx, b.SR_data.conevy ) + _v3copyflipy( a.SR_data.conevy, b.SR_data.conevx ) + _v3copyflipy( a.SR_data.coneva, b.SR_data.coneva ) - name = get_texture_resource_name( img ) + b.SR_data.conet = a.SR_data.conet - if name in cache: - return cache[name] - - cache[name] = len( buffer ) - - tex = mdl_texture() - tex.pstr_name = encoder_process_pstr( name ) + # redraw + ob = bpy.context.scene.objects[0] + ob.hide_render = ob.hide_render + return {'FINISHED'} + #} +#} + +class SR_COMPILE(bpy.types.Operator): +#{ + bl_idname="skaterift.compile_all" + bl_label="Compile All" - if g_encoder['pack_textures']: + def execute(_,context): #{ - tex.pack_offset = len( pack ) - pack.extend( qoi_encode( img ) ) - tex.pack_length = len( pack ) - tex.pack_offset - #} - else: - tex.pack_offset = 0 + 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] ) - buffer += [ tex ] - return cache[name] + return {'FINISHED'} + #} #} -def material_tex_image(v): +class SR_COMPILE_THIS(bpy.types.Operator): #{ - return { - "Image Texture": - { - "image": F"{v}" - } - } -#} + bl_idname="skaterift.compile_this" + bl_label="Compile This collection" -cxr_graph_mapping = \ -{ - # Default shader setup - "Principled BSDF": - { - "Base Color": - { - "Image Texture": - { - "image": "tex_diffuse" - }, - "Mix": - { - "A": material_tex_image("tex_diffuse"), - "B": material_tex_image("tex_decal") - }, - }, - "Normal": - { - "Normal Map": - { - "Color": material_tex_image("tex_normal") - } - } - } -} + def execute(_,context): + #{ + col = bpy.context.collection + sr_compile( col ) -# https://harrygodden.com/git/?p=convexer.git;a=blob;f=__init__.py;#l1164 -# -def material_info(mat): + return {'FINISHED'} + #} +#} + +class SR_INTERFACE(bpy.types.Panel): #{ - info = {} + bl_idname = "VIEW3D_PT_skate_rift" + bl_label = "Skate Rift" + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_category = "Skate Rift" - # Using the cv_graph_mapping as a reference, go through the shader - # graph and gather all $props from it. - # - def _graph_read( node_def, node=None, depth=0 ): + def draw(_, context): #{ - nonlocal mat - nonlocal info - - # Find rootnodes - # - if node == None: - #{ - _graph_read.extracted = [] + # Compiler section - for node_idname in node_def: - #{ - for n in mat.node_tree.nodes: - #{ - if n.name == node_idname: - #{ - node_def = node_def[node_idname] - node = n - break - #} + row = _.layout.row() + row.scale_y = 1.75 + row.prop( context.scene.SR_data, 'panel', expand=True ) + + if context.scene.SR_data.panel == 'SETTINGS': #{ + _.layout.prop( context.scene.SR_data, 'gizmos' ) + #} + 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 #} #} - #} - for link in node_def: - #{ - link_def = node_def[link] + box = _.layout.box() + row = box.row() + row.alignment = 'CENTER' + row.scale_y = 1.5 + + if found_in_export: #{ + row.label( text=col.name + ".mdl" ) + box.prop( col.SR_data, "pack_textures" ) + box.prop( col.SR_data, "animations" ) + box.operator( "skaterift.compile_this" ) + #} + else: #{ + row.enabled=False + row.label( text=col.name ) + + row = box.row() + row.enabled=False + row.alignment = 'CENTER' + row.scale_y = 1.5 + row.label( text="This collection is not in the export group" ) + #} - if isinstance( link_def, dict ): - #{ - node_link = None - for x in node.inputs: - #{ - if isinstance( x, bpy.types.NodeSocketColor ): - #{ - if link == x.name: - #{ - node_link = x - break - #} - #} - #} + box = _.layout.box() + row = box.row() - if node_link and node_link.is_linked: - #{ - # look for definitions for the connected node type - # - from_node = node_link.links[0].from_node - - node_name = from_node.name.split('.')[0] - if node_name in link_def: - #{ - from_node_def = link_def[ node_name ] + split = row.split( factor=0.3, align=True ) + split.prop( context.scene.SR_data, "use_hidden", text="hidden" ) + + row1 = split.row() + if export_count == 0: + row1.enabled=False + row1.operator( "skaterift.compile_all", \ + text=F"Compile all ({export_count} collections)" ) + #} + elif context.scene.SR_data.panel == 'ENTITY': #{ + active_object = context.active_object + if not active_object: return - _graph_read( from_node_def, from_node, depth+1 ) - #} - - # No definition! :( - # TODO: Make a warning for this? + box = _.layout.box() + row = box.row() + row.alignment = 'CENTER' + row.label( text=active_object.name ) + row.scale_y = 1.5 + + def _draw_prop_collection( data ): #{ + nonlocal box + row = box.row() + row.alignment = 'CENTER' + row.enabled = False + row.scale_y = 1.5 + row.label( text=F'{data[0]}' ) + + if hasattr(type(data[0]),'sr_inspector'):#{ + type(data[0]).sr_inspector( box, data ) #} - else: - #{ - if "default" in link_def: - #{ - prop = link_def['default'] - info[prop] = node_link.default_value + else:#{ + for a in data[0].__annotations__: + box.prop( data[0], a ) + #} + #} + + if active_object.type == 'ARMATURE': #{ + if active_object.mode == 'POSE': #{ + bones = active_object.data.bones + mb = sr_get_mirror_bone( bones ) + if mb:#{ + box.operator( "skaterift.mirror_bone", \ + text=F'Mirror attributes to {mb.name}' ) #} + + _draw_prop_collection( [bones.active.SR_data ] ) + #} + else: #{ + row = box.row() + row.alignment='CENTER' + row.scale_y=2.0 + row.enabled=False + row.label( text="Enter pose mode to modify bone properties" ) #} #} - else: - #{ - prop = link_def - info[prop] = getattr( node, link ) + elif active_object.type == 'LIGHT': #{ + _draw_prop_collection( [active_object.data.SR_data] ) + #} + elif active_object.type == 'EMPTY' or active_object.type == 'MESH': #{ + box.prop( active_object.SR_data, "ent_type" ) + ent_type = active_object.SR_data.ent_type + + col = getattr( active_object.SR_data, ent_type, None ) + if col != None and len(col)!=0: _draw_prop_collection( col ) + + if active_object.type == 'MESH':#{ + col = getattr( active_object.data.SR_data, ent_type, None ) + if col != None and len(col)!=0: _draw_prop_collection( col ) + #} #} #} #} - - _graph_read( cxr_graph_mapping ) - return info #} -# Add a material to the material buffer. Returns 0 (None ID) if invalid -# -def encoder_process_material( mat ): +class SR_MATERIAL_PANEL(bpy.types.Panel): #{ - global g_encoder - - if mat == None: - return 0 - - cache = g_encoder['material_cache'] - buffer = g_encoder['data']['material'] - - if mat.name in cache: - return cache[mat.name] - - cache[mat.name] = len( buffer ) - - dest = mdl_material() - dest.pstr_name = encoder_process_pstr( mat.name ) + bl_label="Skate Rift material" + bl_idname="MATERIAL_PT_sr_material" + bl_space_type='PROPERTIES' + bl_region_type='WINDOW' + bl_context="material" - flags = 0x00 - if mat.cv_data.collision: - flags |= 0x2 - if mat.cv_data.skate_surface: flags |= 0x1 - if mat.cv_data.grind_surface: flags |= (0x8|0x1) + def draw(_,context): + #{ + active_object = bpy.context.active_object + if active_object == None: return + active_mat = active_object.active_material + if active_mat == None: return - if mat.cv_data.grow_grass: flags |= 0x4 - dest.flags = flags + info = material_info( active_mat ) - if mat.cv_data.surface_prop == 'concrete': dest.surface_prop = 0 - if mat.cv_data.surface_prop == 'wood': dest.surface_prop = 1 - if mat.cv_data.surface_prop == 'grass': dest.surface_prop = 2 - if mat.cv_data.surface_prop == 'tiles': dest.surface_prop = 3 + if 'tex_diffuse' in info:#{ + _.layout.label( icon='INFO', \ + text=F"{info['tex_diffuse'].name} will be compiled" ) + #} - if mat.cv_data.shader == 'standard': dest.shader = 0 - if mat.cv_data.shader == 'standard_cutout': dest.shader = 1 - if mat.cv_data.shader == 'terrain_blend': - #{ - dest.shader = 2 + _.layout.prop( active_mat.SR_data, "shader" ) + _.layout.prop( active_mat.SR_data, "surface_prop" ) + _.layout.prop( active_mat.SR_data, "collision" ) - dest.colour[0] = pow( mat.cv_data.sand_colour[0], 1.0/2.2 ) - dest.colour[1] = pow( mat.cv_data.sand_colour[1], 1.0/2.2 ) - dest.colour[2] = pow( mat.cv_data.sand_colour[2], 1.0/2.2 ) - dest.colour[3] = 1.0 - - dest.colour1[0] = mat.cv_data.blend_offset[0] - dest.colour1[1] = mat.cv_data.blend_offset[1] - #} - - if mat.cv_data.shader == 'vertex_blend': - #{ - dest.shader = 3 - - dest.colour1[0] = mat.cv_data.blend_offset[0] - dest.colour1[1] = mat.cv_data.blend_offset[1] - #} - - if mat.cv_data.shader == 'water': - #{ - dest.shader = 4 - - dest.colour[0] = pow( mat.cv_data.shore_colour[0], 1.0/2.2 ) - dest.colour[1] = pow( mat.cv_data.shore_colour[1], 1.0/2.2 ) - dest.colour[2] = pow( mat.cv_data.shore_colour[2], 1.0/2.2 ) - dest.colour[3] = 1.0 - dest.colour1[0] = pow( mat.cv_data.ocean_colour[0], 1.0/2.2 ) - dest.colour1[1] = pow( mat.cv_data.ocean_colour[1], 1.0/2.2 ) - dest.colour1[2] = pow( mat.cv_data.ocean_colour[2], 1.0/2.2 ) - dest.colour1[3] = 1.0 - #} - - inf = material_info( mat ) - - if mat.cv_data.shader == 'standard' or \ - mat.cv_data.shader == 'standard_cutout' or \ - mat.cv_data.shader == 'terrain_blend' or \ - mat.cv_data.shader == 'vertex_blend': - #{ - if 'tex_diffuse' in inf: - dest.tex_diffuse = encoder_process_texture(inf['tex_diffuse']) - #} - - buffer += [dest] - return cache[mat.name] -#} - -# Create a tree structure containing all the objects in the collection -# -def encoder_build_scene_graph( collection ): -#{ - global g_encoder - - print( " creating scene graph" ) - - # initialize root - # - graph = g_encoder['scene_graph'] - graph_lookup = g_encoder['graph_lookup'] - graph["obj"] = None - graph["depth"] = 0 - graph["children"] = [] - graph["uid"] = 0 - graph["parent"] = None - - def _new_uid(): - #{ - global g_encoder - uid = g_encoder['uid_count'] - g_encoder['uid_count'] += 1 - return uid - #} - - for obj in collection.all_objects: - #{ - #if obj.parent: continue - - def _extend( p, n, d ): - #{ - nonlocal collection - - uid = _new_uid() - tree = {} - tree["uid"] = uid - tree["children"] = [] - tree["depth"] = d - tree["obj"] = n - tree["parent"] = p - n.cv_data.uid = uid - - # Descend into amature - # - if n.type == 'ARMATURE': - #{ - tree["bones"] = [None] # None is the root transform - tree["ik_count"] = 0 - tree["collider_count"] = 0 - tree["compile_animation"] = collection.cv_data.animations - - # Here also collects some information about constraints, ik and - # counts colliders for the armature. - # - def _extendb( p, n, d ): - #{ - nonlocal tree - - btree = {} - btree["bone"] = n - btree["linked_armature"] = tree - btree["uid"] = _new_uid() - btree["children"] = [] - btree["depth"] = d - btree["parent"] = p - tree["bones"] += [n.name] - - for c in n.children: - #{ - _extendb( btree, c, d+1 ) - #} - - for c in tree['obj'].pose.bones[n.name].constraints: - #{ - if c.type == 'IK': - #{ - btree["ik_target"] = c.subtarget - btree["ik_pole"] = c.pole_subtarget - tree["ik_count"] += 1 - #} - #} - - if n.cv_data.collider != 'collider_none': - tree['collider_count'] += 1 - - btree['deform'] = n.use_deform - p['children'] += [btree] - #} - - for b in n.data.bones: - if not b.parent: - _extendb( tree, b, d+1 ) - #} - - # Recurse into children of this object - # - for obj1 in n.children: - #{ - for c1 in obj1.users_collection: - #{ - if c1 == collection: - #{ - _extend( tree, obj1, d+1 ) - break - #} - #} - #} - - p["children"] += [tree] - graph_lookup[n] = tree + if active_mat.SR_data.collision:#{ + _.layout.prop( active_mat.SR_data, "skate_surface" ) + _.layout.prop( active_mat.SR_data, "grind_surface" ) + _.layout.prop( active_mat.SR_data, "grow_grass" ) + #} + if active_mat.SR_data.shader == "terrain_blend":#{ + box = _.layout.box() + box.prop( active_mat.SR_data, "blend_offset" ) + box.prop( active_mat.SR_data, "sand_colour" ) + #} + elif active_mat.SR_data.shader == "vertex_blend":#{ + box = _.layout.box() + box.label( icon='INFO', text="Uses vertex colours, the R channel" ) + box.prop( active_mat.SR_data, "blend_offset" ) + #} + elif active_mat.SR_data.shader == "water":#{ + box = _.layout.box() + box.label( icon='INFO', text="Depth scale of 16 meters" ) + box.prop( active_mat.SR_data, "shore_colour" ) + box.prop( active_mat.SR_data, "ocean_colour" ) #} - - _extend( graph, obj, 1 ) - - #} -#} - - -# Kind of a useless thing i made but it looks cool and adds complexity!!1 -# -def encoder_graph_iterator( root ): -#{ - for c in root['children']: - #{ - yield c - yield from encoder_graph_iterator(c) #} #} - -# Push a vertex into the model file, or return a cached index (c_uint32) -# -def encoder_vertex_push( vertex_reference, co,norm,uv,colour,groups,weights ): +def sr_get_type_enum( scene, context ): #{ - global g_encoder - buffer = g_encoder['data']['vertex'] - - TOLERENCE = 4 - m = float(10**TOLERENCE) - - # Would be nice to know if this can be done faster than it currently runs, - # its quite slow. - # - key = (int(co[0]*m+0.5), - int(co[1]*m+0.5), - int(co[2]*m+0.5), - int(norm[0]*m+0.5), - int(norm[1]*m+0.5), - int(norm[2]*m+0.5), - int(uv[0]*m+0.5), - int(uv[1]*m+0.5), - colour[0], # these guys are already quantized - colour[1], # . - colour[2], # . - colour[3], # . - weights[0], # v - weights[1], - weights[2], - weights[3], - groups[0], - groups[1], - groups[2], - groups[3]) - - if key in vertex_reference: - return vertex_reference[key] - else: - #{ - index = c_uint32( len(vertex_reference) ) - vertex_reference[key] = index - - v = mdl_vert() - v.co[0] = co[0] - v.co[1] = co[2] - v.co[2] = -co[1] - v.norm[0] = norm[0] - v.norm[1] = norm[2] - v.norm[2] = -norm[1] - v.uv[0] = uv[0] - v.uv[1] = uv[1] - v.colour[0] = colour[0] - v.colour[1] = colour[1] - v.colour[2] = colour[2] - v.colour[3] = colour[3] - v.weights[0] = weights[0] - v.weights[1] = weights[1] - v.weights[2] = weights[2] - v.weights[3] = weights[3] - v.groups[0] = groups[0] - v.groups[1] = groups[1] - v.groups[2] = groups[2] - v.groups[3] = groups[3] - - buffer += [v] - return index - #} -#} + items = [('none','None',"")] + mesh_entities=['ent_gate'] + point_entities=['ent_spawn','ent_route_node','ent_route'] + for e in point_entities: items += [(e,e,'')] -# Compile a mesh (or use one from the cache) onto node, based on node_def -# No return value -# -def encoder_compile_mesh( node, node_def ): -#{ - global g_encoder - - graph = g_encoder['scene_graph'] - graph_lookup = g_encoder['graph_lookup'] - mesh_cache = g_encoder['mesh_cache'] - obj = node_def['obj'] - armature_def = None - can_use_cache = True - - # Check for modifiers that typically change the data per-instance - # there is no well defined rule for the choices here, its just what i've - # needed while producing the game. - # - # It may be possible to detect these cases automatically. - # - for mod in obj.modifiers: - #{ - if mod.type == 'DATA_TRANSFER' or mod.type == 'SHRINKWRAP' or \ - mod.type == 'BOOLEAN' or mod.type == 'CURVE' or \ - mod.type == 'ARRAY': - #{ - can_use_cache = False + if context.scene.SR_data.panel == 'ENTITY': #{ + if context.active_object.type == 'MESH': #{ + for e in mesh_entities: items += [(e,e,'')] #} - - if mod.type == 'ARMATURE': - armature_def = graph_lookup[mod.object] - - # Check the cache first - # - if can_use_cache and (obj.data.name in mesh_cache): - #{ - ref = mesh_cache[obj.data.name] - node.submesh_start = ref.submesh_start - node.submesh_count = ref.submesh_count - return #} - - # Compile a whole new mesh - # - node.submesh_start = len( g_encoder['data']['submesh'] ) - node.submesh_count = 0 - - dgraph = bpy.context.evaluated_depsgraph_get() - data = obj.evaluated_get(dgraph).data - data.calc_loop_triangles() - data.calc_normals_split() - - # Mesh is split into submeshes based on their material - # - mat_list = data.materials if len(data.materials) > 0 else [None] - for material_id, mat in enumerate(mat_list): - #{ - mref = {} - - sm = mdl_submesh() - sm.indice_start = len( g_encoder['data']['indice'] ) - sm.vertex_start = len( g_encoder['data']['vertex'] ) - sm.vertex_count = 0 - sm.indice_count = 0 - sm.material_id = encoder_process_material( mat ) - - for i in range(3): - #{ - sm.bbx[0][i] = 999999 - sm.bbx[1][i] = -999999 - #} - - # Keep a reference to very very very similar vertices - # - vertex_reference = {} - - # Write the vertex / indice data - # - for tri_index, tri in enumerate(data.loop_triangles): - #{ - if tri.material_index != material_id: - continue - - for j in range(3): - #{ - vert = data.vertices[tri.vertices[j]] - li = tri.loops[j] - vi = data.loops[li].vertex_index - - # Gather vertex information - # - co = vert.co - norm = data.loops[li].normal - uv = (0,0) - colour = (255,255,255,255) - groups = [0,0,0,0] - weights = [0,0,0,0] - - # Uvs - # - if data.uv_layers: - uv = data.uv_layers.active.data[li].uv - - # Vertex Colours - # - if data.vertex_colors: - #{ - colour = data.vertex_colors.active.data[li].color - colour = (int(colour[0]*255.0),\ - int(colour[1]*255.0),\ - int(colour[2]*255.0),\ - int(colour[3]*255.0)) - #} - - # Weight groups: truncates to the 3 with the most influence. The - # fourth bone ID is never used by the shader so it is - # always 0 - # - if armature_def: - #{ - src_groups = [_ for _ in data.vertices[vi].groups \ - if obj.vertex_groups[_.group].name in \ - armature_def['bones']] - - weight_groups = sorted( src_groups, key = \ - lambda a: a.weight, reverse=True ) - tot = 0.0 - for ml in range(3): - #{ - if len(weight_groups) > ml: - #{ - g = weight_groups[ml] - name = obj.vertex_groups[g.group].name - weight = g.weight - - weights[ml] = weight - groups[ml] = armature_def['bones'].index(name) - tot += weight - #} - #} - - if len(weight_groups) > 0: - #{ - inv_norm = (1.0/tot) * 65535.0 - for ml in range(3): - #{ - weights[ml] = int( weights[ml] * inv_norm ) - weights[ml] = min( weights[ml], 65535 ) - weights[ml] = max( weights[ml], 0 ) - #} - #} - #} - else: - #{ - li1 = tri.loops[(j+1)%3] - vi1 = data.loops[li1].vertex_index - e0 = data.edges[ data.loops[li].edge_index ] - - if e0.use_freestyle_mark and \ - ((e0.vertices[0] == vi and e0.vertices[1] == vi1) or \ - (e0.vertices[0] == vi1 and e0.vertices[1] == vi)): - #{ - weights[0] = 1 - #} - #} - - # Add vertex and expand bound box - # - index = encoder_vertex_push( vertex_reference, co, \ - norm, \ - uv, \ - colour, \ - groups, \ - weights ) - g_encoder['data']['indice'] += [index] - #} - #} - - # How many unique verts did we add in total - # - sm.vertex_count = len(g_encoder['data']['vertex']) - sm.vertex_start - sm.indice_count = len(g_encoder['data']['indice']) - sm.indice_start - - # Make sure bounding box isn't -inf -> inf if no vertices - # - if sm.vertex_count == 0: - for j in range(2): - for i in range(3): - sm.bbx[j][i] = 0 - else: - #{ - for j in range(sm.vertex_count): - #{ - vert = g_encoder['data']['vertex'][ sm.vertex_start + j ] - - for i in range(3): - #{ - sm.bbx[0][i] = min( sm.bbx[0][i], vert.co[i] ) - sm.bbx[1][i] = max( sm.bbx[1][i], vert.co[i] ) - #} - #} - #} - - # Add submesh to encoder - # - g_encoder['data']['submesh'] += [sm] - node.submesh_count += 1 - + else: #{ + for e in mesh_entities: items += [(e,e,'')] #} - # Save a reference to this node since we want to reuse the submesh indices - # later. - g_encoder['mesh_cache'][obj.data.name] = node + return items #} - -def encoder_compile_ent_as( name, node, node_def ): +def sr_on_type_change( _, context ): #{ - global g_encoder - - if name == 'classtype_none': - #{ - node.offset = 0 - node.classtype = 0 - return - #} - elif name not in globals(): - #{ - print( "Classtype '" +name + "' is unknown!" ) - return + obj = context.active_object + ent_type = obj.SR_data.ent_type + if ent_type == 'none': return + if obj.type == 'MESH':#{ + col = getattr( obj.data.SR_data, ent_type, None ) + if col != None and len(col)==0: col.add() #} - buffer = g_encoder['data']['entdata'] - node.offset = len(buffer) - - cl = globals()[ name ] - inst = cl() - inst.encode_obj( node, node_def ) - - buffer.extend( bytearray(inst) ) - bytearray_align_to( buffer, 4 ) + col = getattr( obj.SR_data, ent_type, None ) + if col != None and len(col)==0: col.add() #} -# Compiles animation data into model and gives us some extra node_def entries -# -def encoder_compile_armature( node, node_def ): +class SR_OBJECT_ENT_SPAWN(bpy.types.PropertyGroup): #{ - global g_encoder - - entdata = g_encoder['data']['entdata'] - animdata = g_encoder['data']['anim'] - keyframedata = g_encoder['data']['keyframe'] - mesh_cache = g_encoder['mesh_cache'] - obj = node_def['obj'] - bones = node_def['bones'] - - # extra info - node_def['anim_start'] = len(animdata) - node_def['anim_count'] = 0 - - if not node_def['compile_animation']: - #{ - return - #} - - # Compile anims - # - if obj.animation_data: - #{ - # 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 = encoder_process_pstr( NLAStrip.action.name ) - anim.rate = 30.0 - anim.offset = len(keyframedata) - anim.length = anim_end-anim_start - - # Export the keyframes - for frame in range(anim_start,anim_end): - #{ - bpy.context.scene.frame_set(frame) - - for bone_name in bones: - #{ - for pb in obj.pose.bones: - #{ - if pb.name != bone_name: continue - - rb = obj.data.bones[ bone_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() - - # local position - final_pos = Vector(( loc[0], loc[2], -loc[1] )) - - # 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() - - kf = mdl_keyframe() - kf.co[0] = final_pos[0] - kf.co[1] = final_pos[1] - kf.co[2] = final_pos[2] - - kf.q[0] = rq[1] - kf.q[1] = rq[3] - kf.q[2] = -rq[2] - kf.q[3] = rq[0] - - # scale - kf.s[0] = sca[0] - kf.s[1] = sca[2] - kf.s[2] = sca[1] - - keyframedata += [kf] - break - #} - #} - #} - - # Add to animation buffer - # - animdata += [anim] - node_def['anim_count'] += 1 + alias: bpy.props.StringProperty( name='alias' ) +#} - # Report progress - # - status_name = F" " + " |"*(node_def['depth']-1) - print( F"{status_name} | *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 - #} +class SR_OBJECT_ENT_GATE(bpy.types.PropertyGroup): +#{ + target: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="destination", \ + poll=lambda self,obj: sr_filter_ent_type(obj,'ent_gate')) #} -# We are trying to compile this node_def -# -def encoder_process_definition( node_def ): +class SR_MESH_ENT_GATE(bpy.types.PropertyGroup): #{ - global g_encoder + dimensions: bpy.props.FloatVectorProperty(name="dimensions",size=3) +#} - # data sources for object/bone are taken differently - # - if 'obj' in node_def: - #{ - obj = node_def['obj'] - obj_type = obj.type - obj_co = obj.matrix_world @ Vector((0,0,0)) +class SR_OBJECT_ENT_ROUTE_ENTRY(bpy.types.PropertyGroup): +#{ + target: bpy.props.PointerProperty( \ + type=bpy.types.Object, name='target', \ + poll=lambda self,obj: sr_filter_ent_type(obj,'ent_gate')) +#} - if obj_type == 'ARMATURE': - obj_classtype = 'classtype_skeleton' - elif obj_type == 'LIGHT': - #{ - obj_classtype = 'classtype_world_light' - #} - else: - #{ - obj_classtype = obj.cv_data.classtype - - # Check for armature deform - # - for mod in obj.modifiers: - #{ - if mod.type == 'ARMATURE': - #{ - obj_classtype = 'classtype_skin' - - # Make sure to freeze armature in rest while we collect - # vertex information - # - armature_def = g_encoder['graph_lookup'][mod.object] - POSE_OR_REST_CACHE = armature_def['obj'].data.pose_position - armature_def['obj'].data.pose_position = 'REST' - node_def['linked_armature'] = armature_def - break - #} - #} - #} - #} +class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList): +#{ + bl_idname = 'SR_UL_ROUTE_NODE_LIST' - elif 'bone' in node_def: + def draw_item(_,context,layout,data,item,icon,active_data,active_propname): #{ - obj = node_def['bone'] - obj_type = 'BONE' - obj_co = obj.head_local - obj_classtype = 'classtype_bone' + layout.prop( item, 'target', text='', emboss=False ) #} +#} - # Create node - # - node = mdl_node() - node.pstr_name = encoder_process_pstr( obj.name ) - - if node_def["parent"]: - node.parent = node_def["parent"]["uid"] - - # Setup transform - # - node.co[0] = obj_co[0] - node.co[1] = obj_co[2] - node.co[2] = -obj_co[1] - - # Convert rotation quat to our space type - # - quat = obj.matrix_local.to_quaternion() - node.q[0] = quat[1] - node.q[1] = quat[3] - node.q[2] = -quat[2] - node.q[3] = quat[0] +class SR_OT_ROUTE_LIST_NEW_ITEM(bpy.types.Operator): +#{ + bl_idname = "skaterift.new_entry" + bl_label = "Add gate" - # Bone scale is just a vector to the tail - # - if obj_type == 'BONE': - #{ - node.s[0] = obj.tail_local[0] - node.co[0] - node.s[1] = obj.tail_local[2] - node.co[1] - node.s[2] = -obj.tail_local[1] - node.co[2] + def execute(self, context):#{ + active_object = context.active_object + active_object.SR_data.ent_route[0].gates.add() + return{'FINISHED'} #} - else: - #{ - node.s[0] = obj.scale[0] - node.s[1] = obj.scale[2] - node.s[2] = obj.scale[1] +#} + +class SR_OT_ROUTE_LIST_DEL_ITEM(bpy.types.Operator): +#{ + bl_idname = "skaterift.del_entry" + bl_label = "Remove gate" + + @classmethod + def poll(cls, context):#{ + active_object = context.active_object + if obj_ent_type == 'ent_gate':#{ + return active_object.SR_data.ent_route[0].gates + #} + else: return False #} - # Report status - # - tot_uid = g_encoder['uid_count']-1 - obj_uid = node_def['uid'] - obj_depth = node_def['depth']-1 + def execute(self, context):#{ + active_object = context.active_object + lista = active_object.SR_data.ent_route[0].gates + index = active_object.SR_data.ent_route[0].gates_index + lista.remove(index) + active_object.SR_data.ent_route[0].gates_index = \ + min(max(0, index-1), len(lista) - 1) + return{'FINISHED'} + #} +#} - status_id = F" [{obj_uid: 3}/{tot_uid}]" + " |"*obj_depth - status_name = status_id + F" L {obj.name}" +class SR_OBJECT_ENT_ROUTE(bpy.types.PropertyGroup): +#{ + gates: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_ROUTE_ENTRY) + gates_index: bpy.props.IntProperty() - if obj_classtype != 'classtype_none': status_type = obj_classtype - else: status_type = obj_type + colour: bpy.props.FloatVectorProperty( \ + name="Colour",\ + subtype='COLOR',\ + min=0.0,max=1.0,\ + default=Vector((0.79,0.63,0.48)),\ + description="Route colour"\ + ) - status_parent = F"{node.parent: 3}" - status_armref = "" + alias: bpy.props.StringProperty(\ + name="Alias",\ + default="Untitled Course") - if obj_classtype == 'classtype_skin': - status_armref = F" [armature -> {armature_def['obj'].cv_data.uid}]" + @staticmethod + def sr_inspector( layout, data ): + #{ + layout.prop( data[0], 'alias' ) + layout.prop( data[0], 'colour' ) - print(F"{status_name:<32} {status_type:<22} {status_parent} {status_armref}") + layout.label( text='Checkpoints' ) + layout.template_list('SR_UL_ROUTE_NODE_LIST', 'Checkpoints', \ + data[0], 'gates', data[0], 'gates_index', rows=5) - # Process mesh if needed - # - if obj_type == 'MESH': - #{ - encoder_compile_mesh( node, node_def ) - #} - elif obj_type == 'ARMATURE': - #{ - encoder_compile_armature( node, node_def ) + row = layout.row() + row.operator( 'skaterift.new_entry', text='Add' ) + row.operator( 'skaterift.del_entry', text='Remove' ) #} +#} - encoder_compile_ent_as( obj_classtype, node, node_def ) +class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): +#{ + ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE) + ent_spawn: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_SPAWN) + ent_route: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_ROUTE) - # Make sure to reset the armature we just mucked about with - # - if obj_classtype == 'classtype_skin': - armature_def['obj'].data.pose_position = POSE_OR_REST_CACHE + ent_type: bpy.props.EnumProperty( + name="Type", + items=[('none', 'None', '', 0), + ('ent_gate','Gate','', 1), + ('ent_spawn','Spawn','', 2), + ('ent_route_node', 'Route Node', '', 3 ), + ('ent_route', 'Route', '', 4)], + update=sr_on_type_change + ) +#} - g_encoder['data']['node'] += [node] +class SR_MESH_PROPERTIES(bpy.types.PropertyGroup): +#{ + ent_gate: bpy.props.CollectionProperty(type=SR_MESH_ENT_GATE) #} -# The post processing step or the pre processing to the writing step -# -def encoder_write_to_file( path ): +class SR_LIGHT_PROPERTIES(bpy.types.PropertyGroup): #{ - global g_encoder - - # Compile down to a byte array - # - header = g_encoder['header'] - file_pos = sizeof(header) - file_data = bytearray() - print( " Compositing data arrays" ) - - for array_name in g_encoder['data']: - #{ - file_pos += bytearray_align_to( file_data, 16, sizeof(header) ) - arr = g_encoder['data'][array_name] + daytime: bpy.props.BoolProperty( name='Daytime' ) +#} - setattr( header, array_name + "_offset", file_pos ) +class SR_BONE_PROPERTIES(bpy.types.PropertyGroup): +#{ + collider: bpy.props.EnumProperty( name='Collider Type', + items=[('0','none',''), + ('1','box',''), + ('2','capsule','')]) - print( F" {array_name:<16} @{file_pos:> 8X}[{len(arr)}]" ) + collider_min: bpy.props.FloatVectorProperty( name='Collider Min', size=3 ) + collider_max: bpy.props.FloatVectorProperty( name='Collider Max', size=3 ) - if isinstance( arr, bytearray ): - #{ - setattr( header, array_name + "_size", len(arr) ) + cone_constraint: bpy.props.BoolProperty( name='Cone constraint' ) - file_data.extend( arr ) - file_pos += len(arr) - #} - else: - #{ - setattr( header, array_name + "_count", len(arr) ) + conevx: bpy.props.FloatVectorProperty( name='vx' ) + conevy: bpy.props.FloatVectorProperty( name='vy' ) + coneva: bpy.props.FloatVectorProperty( name='va' ) + conet: bpy.props.FloatProperty( name='t' ) - for item in arr: - #{ - bbytes = bytearray(item) - file_data.extend( bbytes ) - file_pos += sizeof(item) - #} + @staticmethod + def sr_inspector( layout, data ): + #{ + data = data[0] + box = layout.box() + box.prop( data, 'collider' ) + + if int(data.collider)>0:#{ + row = box.row() + row.prop( data, 'collider_min' ) + row = box.row() + row.prop( data, 'collider_max' ) + #} + + box = layout.box() + box.prop( data, 'cone_constraint' ) + if data.cone_constraint:#{ + row = box.row() + row.prop( data, 'conevx' ) + row = box.row() + row.prop( data, 'conevy' ) + row = box.row() + row.prop( data, 'coneva' ) + box.prop( data, 'conet' ) #} #} - - # This imperitive for this field to be santized in the future! - # - header.file_length = file_pos - - print( " Writing file" ) - # Write header and data chunk to file - # - fp = open( path, "wb" ) - fp.write( bytearray( header ) ) - fp.write( file_data ) - fp.close() #} -# Main compiler, uses string as the identifier for the collection -# -def write_model(collection_name): +class SR_MATERIAL_PROPERTIES(bpy.types.PropertyGroup): #{ - global g_encoder - print( F"Model graph | Create mode '{collection_name}'" ) - folder = bpy.path.abspath(bpy.context.scene.cv_data.export_dir) - path = F"{folder}{collection_name}.mdl" - print( path ) - - collection = bpy.data.collections[collection_name] - - encoder_init( collection ) - encoder_build_scene_graph( collection ) - - # Compile - # - print( " Comping objects" ) - it = encoder_graph_iterator( g_encoder['scene_graph'] ) - for node_def in it: - encoder_process_definition( node_def ) - - # Write - # - encoder_write_to_file( path ) + shader: bpy.props.EnumProperty( + name="Format", + items = [ + ('standard',"standard",''), + ('standard_cutout', "standard_cutout", ''), + ('terrain_blend', "terrain_blend", ''), + ('vertex_blend', "vertex_blend", ''), + ('water',"water",'') + ]) - print( F"Completed {collection_name}.mdl" ) + surface_prop: bpy.props.EnumProperty( + name="Surface Property", + items = [ + ('0','concrete',''), + ('1','wood',''), + ('2','grass',''), + ('3','tiles','') + ]) + + collision: bpy.props.BoolProperty( \ + name="Collisions Enabled",\ + default=True,\ + description = "Can the player collide with this material"\ + ) + skate_surface: bpy.props.BoolProperty( \ + name="Skate Surface", \ + default=True,\ + description = "Should the game try to target this surface?" \ + ) + grind_surface: bpy.props.BoolProperty( \ + name="Grind Surface", \ + default=False,\ + description = "Grind face?" \ + ) + grow_grass: bpy.props.BoolProperty( \ + name="Grow Grass", \ + default=False,\ + description = "Spawn grass sprites on this surface?" \ + ) + blend_offset: bpy.props.FloatVectorProperty( \ + name="Blend Offset", \ + size=2, \ + default=Vector((0.5,0.0)),\ + description="When surface is more than 45 degrees, add this vector " +\ + "to the UVs" \ + ) + sand_colour: bpy.props.FloatVectorProperty( \ + name="Sand Colour",\ + subtype='COLOR',\ + min=0.0,max=1.0,\ + default=Vector((0.79,0.63,0.48)),\ + description="Blend to this colour near the 0 coordinate on UP axis"\ + ) + shore_colour: bpy.props.FloatVectorProperty( \ + name="Shore Colour",\ + subtype='COLOR',\ + min=0.0,max=1.0,\ + default=Vector((0.03,0.32,0.61)),\ + description="Water colour at the shoreline"\ + ) + ocean_colour: bpy.props.FloatVectorProperty( \ + name="Ocean Colour",\ + subtype='COLOR',\ + min=0.0,max=1.0,\ + default=Vector((0.0,0.006,0.03)),\ + description="Water colour in the deep bits"\ + ) #} # ---------------------------------------------------------------------------- # @@ -2142,12 +1881,12 @@ def cv_draw_halfsphere( pos, tx, ty, tz, radius, colour ): # Draw transformed -1 -> 1 cube # -def cv_draw_ucube( transform, colour ): +def cv_draw_ucube( transform, colour, s=Vector((1,1,1)), o=Vector((0,0,0)) ): #{ global cv_view_verts, cv_view_colours - a = Vector((-1,-1,-1)) - b = Vector((1,1,1)) + a = o + -1.0 * s + b = o + 1.0 * s vs = [None]*8 vs[0] = transform @ Vector((a[0], a[1], a[2])) @@ -2239,6 +1978,23 @@ def cv_draw_arrow( p0, p1, c0, size=0.15 ): cv_draw_lines() #} +def cv_draw_line_dotted( p0, p1, c0, dots=10 ): +#{ + global cv_view_verts, cv_view_colours + + for i in range(dots):#{ + t0 = i/dots + t1 = (i+0.25)/dots + + p2 = p0*(1.0-t0)+p1*t0 + p3 = p0*(1.0-t1)+p1*t1 + + cv_view_verts += [p2,p3] + cv_view_colours += [c0,c0] + #} + cv_draw_lines() +#} + # Drawhandles of a bezier control point # def cv_draw_bhandle( obj, direction, colour ): @@ -2332,8 +2088,7 @@ def draw_limit( obj, center, major, minor, amin, amax, colour ): ay = major*f ax = minor*f - for x in range(16): - #{ + for x in range(16):#{ t0 = x/16 t1 = (x+1)/16 a0 = amin*(1.0-t0)+amax*t0 @@ -2347,13 +2102,11 @@ def draw_limit( obj, center, major, minor, amin, amax, colour ): cv_view_verts += [p0,p1] cv_view_colours += [colour,colour] - if x == 0: - #{ + if x == 0:#{ cv_view_verts += [p0,center] cv_view_colours += [colour,colour] #} - if x == 15: - #{ + if x == 15:#{ cv_view_verts += [p1,center] cv_view_colours += [colour,colour] #} @@ -2378,8 +2131,7 @@ def draw_cone_twist( center, vx, vy, va ): cv_view_verts += [center, center+va*size] cv_view_colours += [ (1,1,1,1), (1,1,1,1) ] - for x in range(32): - #{ + for x in range(32):#{ t0 = (x/32) * math.tau t1 = ((x+1)/32) * math.tau @@ -2407,20 +2159,20 @@ def draw_skeleton_helpers( obj ): #{ global cv_view_verts, cv_view_colours - if obj.data.pose_position != 'REST': - #{ + if obj.data.pose_position != 'REST':#{ return #} - for bone in obj.data.bones: - #{ + for bone in obj.data.bones:#{ c = bone.head_local - a = Vector((bone.cv_data.v0[0], bone.cv_data.v0[1], bone.cv_data.v0[2])) - b = Vector((bone.cv_data.v1[0], bone.cv_data.v1[1], bone.cv_data.v1[2])) - - if bone.cv_data.collider == 'collider_box': - #{ - + a = Vector((bone.SR_data.collider_min[0], + bone.SR_data.collider_min[1], + bone.SR_data.collider_min[2])) + b = Vector((bone.SR_data.collider_max[0], + bone.SR_data.collider_max[1], + bone.SR_data.collider_max[2])) + + if bone.SR_data.collider == '1':#{ vs = [None]*8 vs[0]=obj.matrix_world@Vector((c[0]+a[0],c[1]+a[1],c[2]+a[2])) vs[1]=obj.matrix_world@Vector((c[0]+a[0],c[1]+b[1],c[2]+a[2])) @@ -2434,8 +2186,7 @@ def draw_skeleton_helpers( obj ): indices = [(0,1),(1,2),(2,3),(3,0),(4,5),(5,6),(6,7),(7,4),\ (0,4),(1,5),(2,6),(3,7)] - for l in indices: - #{ + for l in indices:#{ v0 = vs[l[0]] v1 = vs[l[1]] @@ -2444,593 +2195,318 @@ def draw_skeleton_helpers( obj ): cv_view_colours += [(0.5,0.5,0.5,0.5),(0.5,0.5,0.5,0.5)] #} #} - elif bone.cv_data.collider == 'collider_capsule': - #{ + elif bone.SR_data.collider == '2':#{ v0 = b-a major_axis = 0 - largest = -1.0 - - for i in range(3): - #{ - if abs(v0[i]) > largest: - #{ - largest = abs(v0[i]) - major_axis = i - #} - #} - - v1 = Vector((0,0,0)) - v1[major_axis] = 1.0 - - tx = Vector((0,0,0)) - ty = Vector((0,0,0)) - - cv_tangent_basis( v1, tx, ty ) - r = (abs(tx.dot( v0 )) + abs(ty.dot( v0 ))) * 0.25 - l = v0[ major_axis ] - r*2 - - p0 = obj.matrix_world@Vector( c + (a+b)*0.5 + v1*l*-0.5 ) - p1 = obj.matrix_world@Vector( c + (a+b)*0.5 + v1*l* 0.5 ) - - colour = [0.2,0.2,0.2,1.0] - colour[major_axis] = 0.5 - - cv_draw_halfsphere( p0, -v1, ty, tx, r, colour ) - cv_draw_halfsphere( p1, v1, ty, tx, r, colour ) - cv_draw_line( p0+tx* r, p1+tx* r, colour ) - cv_draw_line( p0+tx*-r, p1+tx*-r, colour ) - cv_draw_line( p0+ty* r, p1+ty* r, colour ) - cv_draw_line( p0+ty*-r, p1+ty*-r, colour ) - #} - else: - #{ - continue - #} - - center = obj.matrix_world @ c - if bone.cv_data.con0: - #{ - vx = Vector([bone.cv_data.conevx[_] for _ in range(3)]) - vy = Vector([bone.cv_data.conevy[_] for _ in range(3)]) - va = Vector([bone.cv_data.coneva[_] for _ in range(3)]) - draw_cone_twist( center, vx, vy, va ) - - #draw_limit( obj, c, Vector((0,0,1)),Vector((0,-1,0)), \ - # bone.cv_data.mins[0], bone.cv_data.maxs[0], \ - # (1,0,0,1)) - #draw_limit( obj, c, Vector((0,-1,0)),Vector((1,0,0)), \ - # bone.cv_data.mins[1], bone.cv_data.maxs[1], \ - # (0,1,0,1)) - #draw_limit( obj, c, Vector((1,0,0)),Vector((0,0,1)), \ - # bone.cv_data.mins[2], bone.cv_data.maxs[2], \ - # (0,0,1,1)) - #} - #} -#} - -def cv_draw(): -#{ - global cv_view_shader - global cv_view_verts - global cv_view_colours - global cv_view_course_i - - cv_view_course_i = 0 - cv_view_verts = [] - cv_view_colours = [] - - cv_view_shader.bind() - gpu.state.depth_mask_set(False) - gpu.state.line_width_set(2.0) - gpu.state.face_culling_set('BACK') - gpu.state.depth_test_set('LESS') - gpu.state.blend_set('NONE') - - for obj in bpy.context.collection.objects: - #{ - if obj.type == 'ARMATURE': - #{ - if obj.data.pose_position == 'REST': - draw_skeleton_helpers( obj ) - #} - else: - #{ - classtype = obj.cv_data.classtype - if (classtype != 'classtype_none') and (classtype in globals()): - #{ - cl = globals()[ classtype ] - - if getattr( cl, "draw_scene_helpers", None ): - #{ - cl.draw_scene_helpers( obj ) - #} - #} - #} - #} - - cv_draw_lines() - return -#} - - -# ---------------------------------------------------------------------------- # -# # -# Blender # -# # -# ---------------------------------------------------------------------------- # - -# Checks whether this object has a classtype assigned. we can only target other -# classes -def cv_poll_target(scene, obj): -#{ - if obj == bpy.context.active_object: - return False - if obj.cv_data.classtype == 'classtype_none': - return False - - return True -#} - -class CV_MESH_SETTINGS(bpy.types.PropertyGroup): -#{ - v0: bpy.props.FloatVectorProperty(name="v0",size=3) - v1: bpy.props.FloatVectorProperty(name="v1",size=3) - v2: bpy.props.FloatVectorProperty(name="v2",size=3) - v3: bpy.props.FloatVectorProperty(name="v3",size=3) -#} + largest = -1.0 -class CV_LIGHT_SETTINGS(bpy.types.PropertyGroup): -#{ - bp0: bpy.props.BoolProperty( name="bp0" ); -#} + for i in range(3):#{ + if abs(v0[i]) > largest:#{ + largest = abs(v0[i]) + major_axis = i + #} + #} -class CV_LIGHT_PANEL(bpy.types.Panel): -#{ - bl_label="[Skate Rift]" - bl_idname="SCENE_PT_cv_light" - bl_space_type='PROPERTIES' - bl_region_type='WINDOW' - bl_context='data' + v1 = Vector((0,0,0)) + v1[major_axis] = 1.0 - def draw(_,context): - #{ - active_object = context.active_object - if active_object == None: return + tx = Vector((0,0,0)) + ty = Vector((0,0,0)) - if active_object.type != 'LIGHT': return + cv_tangent_basis( v1, tx, ty ) + r = (abs(tx.dot( v0 )) + abs(ty.dot( v0 ))) * 0.25 + l = v0[ major_axis ] - r*2 - data = active_object.data.cv_data - _.layout.prop( data, "bp0", text="Only on during night" ) - #} -#} + p0 = obj.matrix_world@Vector( c + (a+b)*0.5 + v1*l*-0.5 ) + p1 = obj.matrix_world@Vector( c + (a+b)*0.5 + v1*l* 0.5 ) -def cv_variable_enum( scene, context ): -#{ - obj = context.object - invalid = [('0',"",""), - ('1',"",""), - ('2',"",""), - ('3',"",""), - ('4',"",""), - ('5',"",""), - ('6',"",""), - ('7',"",""), - ('8',"",""), - ('9',"","")] + colour = [0.2,0.2,0.2,1.0] + colour[major_axis] = 0.5 - classtype = obj.cv_data.classtype + cv_draw_halfsphere( p0, -v1, ty, tx, r, colour ) + cv_draw_halfsphere( p1, v1, ty, tx, r, colour ) + cv_draw_line( p0+tx* r, p1+tx* r, colour ) + cv_draw_line( p0+tx*-r, p1+tx*-r, colour ) + cv_draw_line( p0+ty* r, p1+ty* r, colour ) + cv_draw_line( p0+ty*-r, p1+ty*-r, colour ) + #} + else:#{ + continue + #} - if classtype in globals(): - #{ - cl = globals()[ classtype ] - if getattr( cl, "dynamic_enum", None ): - if len(cl.dynamic_enum)>0: - return cl.dynamic_enum + center = obj.matrix_world @ c + if bone.SR_data.cone_constraint:#{ + vx = Vector([bone.SR_data.conevx[_] for _ in range(3)]) + vy = Vector([bone.SR_data.conevy[_] for _ in range(3)]) + va = Vector([bone.SR_data.coneva[_] for _ in range(3)]) + draw_cone_twist( center, vx, vy, va ) + #} #} - - return invalid #} -class CV_OBJ_SETTINGS(bpy.types.PropertyGroup): +def cv_ent_gate( obj ): #{ - uid: bpy.props.IntProperty( name="" ) - - strp: bpy.props.StringProperty( name="strp" ) - intp: bpy.props.IntProperty( name="intp" ) - intp1: bpy.props.IntProperty( name="intp1" ) - fltp: bpy.props.FloatProperty( name="fltp" ) - bp0: bpy.props.BoolProperty( name="bp0" ) - bp1: bpy.props.BoolProperty( name="bp1" ) - bp2: bpy.props.BoolProperty( name="bp2" ) - bp3: bpy.props.BoolProperty( name="bp3" ) - - target: bpy.props.PointerProperty( type=bpy.types.Object, name="target", \ - poll=cv_poll_target ) - target1: bpy.props.PointerProperty( type=bpy.types.Object, name="target1", \ - poll=cv_poll_target ) - target2: bpy.props.PointerProperty( type=bpy.types.Object, name="target2", \ - poll=cv_poll_target ) - target3: bpy.props.PointerProperty( type=bpy.types.Object, name="target3", \ - poll=cv_poll_target ) + global cv_view_verts, cv_view_colours - colour: bpy.props.FloatVectorProperty( name="colour",subtype='COLOR',\ - min=0.0,max=1.0) + if obj.type != 'MESH': return - dynamic_enum: bpy.props.EnumProperty( - name="", - items = cv_variable_enum - ) + mesh_data = obj.data.SR_data.ent_gate[0] + data = obj.SR_data.ent_gate[0] + dims = mesh_data.dimensions - classtype: bpy.props.EnumProperty( - name="Class", - items = [ - ('classtype_none', "None", ""), #000 - ('classtype_gate', "Gate", ""), #100 - ('classtype_nonlocal_gate', "Gate:NonLocal", ""), #101 - ('classtype_spawn', "Spawn", ""), #200 - ('classtype_water', "Water Surface", ""), #300 - ('classtype_route', "Route", ""), #400 - ('classtype_route_node', "Route:Node", ""), #401 - ('classtype_audio', "Audio:File", ""), #500 - ('classtype_audio_player', "Audio:Player", ""), #501 - ('classtype_audio_sprite', "Audio:Sprite", ""), #502 - ('classtype_volume_audio', "Volume:Audio", ""), #600 - ('classtype_volume_event', "Volume:Event", ""), #601 - - ('300', "ERROR", "",300) - ]) -#} + vs = [None]*9 + c = Vector((0,0,dims[2])) -class CV_BONE_SETTINGS(bpy.types.PropertyGroup): -#{ - collider: bpy.props.EnumProperty( - name="Collider Type", - items = [ - ('collider_none', "collider_none", "", 0), - ('collider_box', "collider_box", "", 1), - ('collider_capsule', "collider_capsule", "", 2), - ]) + vs[0] = obj.matrix_world @ Vector((-dims[0],0.0,-dims[1]+dims[2])) + vs[1] = obj.matrix_world @ Vector((-dims[0],0.0, dims[1]+dims[2])) + vs[2] = obj.matrix_world @ Vector(( dims[0],0.0, dims[1]+dims[2])) + vs[3] = obj.matrix_world @ Vector(( dims[0],0.0,-dims[1]+dims[2])) + vs[4] = obj.matrix_world @ (c+Vector((-1,0,-2))) + vs[5] = obj.matrix_world @ (c+Vector((-1,0, 2))) + vs[6] = obj.matrix_world @ (c+Vector(( 1,0, 2))) + vs[7] = obj.matrix_world @ (c+Vector((-1,0, 0))) + vs[8] = obj.matrix_world @ (c+Vector(( 1,0, 0))) - v0: bpy.props.FloatVectorProperty(name="v0",size=3) - v1: bpy.props.FloatVectorProperty(name="v1",size=3) + indices = [(0,1),(1,2),(2,3),(3,0),(4,5),(5,6),(7,8)] - con0: bpy.props.BoolProperty(name="Constriant 0",default=False) - mins: bpy.props.FloatVectorProperty(name="mins",size=3) - maxs: bpy.props.FloatVectorProperty(name="maxs",size=3) + for l in indices:#{ + v0 = vs[l[0]] + v1 = vs[l[1]] + cv_view_verts += [(v0[0],v0[1],v0[2])] + cv_view_verts += [(v1[0],v1[1],v1[2])] + cv_view_colours += [(1,1,0,1),(1,1,0,1)] + #} - conevx: bpy.props.FloatVectorProperty(name="conevx",size=3) - conevy: bpy.props.FloatVectorProperty(name="conevy",size=3) - coneva: bpy.props.FloatVectorProperty(name="coneva",size=3) - conet: bpy.props.FloatProperty(name="conet") + sw = (0.4,0.4,0.4,0.2) + if data.target != None: + cv_draw_arrow( obj.location, data.target.location, sw ) #} -class CV_BONE_PANEL(bpy.types.Panel): +def dijkstra( graph, start_node, target_node ): #{ - bl_label="[Skate Rift]" - bl_idname="SCENE_PT_cv_bone" - bl_space_type='PROPERTIES' - bl_region_type='WINDOW' - bl_context='bone' - - def draw(_,context): - #{ - active_object = context.active_object - if active_object == None: return - - bone = active_object.data.bones.active - if bone == None: return + unvisited = [_ for _ in graph] + shortest_path = {} + previous_nodes = {} + + for n in unvisited: + shortest_path[n] = 9999999.999999 + shortest_path[start_node] = 0 + + while unvisited:#{ + current_min_node = None + for n in unvisited:#{ + if current_min_node == None: + current_min_node = n + elif shortest_path[n] < shortest_path[current_min_node]: + current_min_node = n + #} - _.layout.prop( bone.cv_data, "collider" ) - _.layout.prop( bone.cv_data, "v0" ) - _.layout.prop( bone.cv_data, "v1" ) + for branch in graph[current_min_node]:#{ + tentative_value = shortest_path[current_min_node] + tentative_value += graph[current_min_node][branch] + if tentative_value < shortest_path[branch]:#{ + shortest_path[branch] = tentative_value + previous_nodes[branch] = current_min_node + #} + #} - _.layout.label( text="Angle Limits" ) - _.layout.prop( bone.cv_data, "con0" ) + unvisited.remove(current_min_node) + #} + + path = [] + node = target_node + while node != start_node:#{ + path.append(node) - _.layout.prop( bone.cv_data, "conevx" ) - _.layout.prop( bone.cv_data, "conevy" ) - _.layout.prop( bone.cv_data, "coneva" ) - _.layout.prop( bone.cv_data, "conet" ) + if node not in previous_nodes: return None + node = previous_nodes[node] #} -#} -class CV_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' ) + # Add the start node manually + path.append(start_node) + return path #} -class CV_COLLECTION_SETTINGS(bpy.types.PropertyGroup): +def node_graph( route_nodes ): #{ - pack_textures: bpy.props.BoolProperty( name="Pack Textures", default=False ) - animations: bpy.props.BoolProperty( name="Export animation", default=True) -#} + graph = {} + for n in route_nodes: + graph[n.name] = {} -class CV_MATERIAL_SETTINGS(bpy.types.PropertyGroup): -#{ - shader: bpy.props.EnumProperty( - name="Format", - items = [ - ('standard',"standard","",0), - ('standard_cutout', "standard_cutout", "", 1), - ('terrain_blend', "terrain_blend", "", 2), - ('vertex_blend', "vertex_blend", "", 3), - ('water',"water","",4), - ]) + for i in range(len(route_nodes)-1):#{ + for j in range(i+1, len(route_nodes)):#{ + ni = route_nodes[i] + nj = route_nodes[j] - surface_prop: bpy.props.EnumProperty( - name="Surface Property", - items = [ - ('concrete','concrete','',0), - ('wood','wood','',1), - ('grass','grass','',2), - ('tiles','tiles','',3) - ]) - - collision: bpy.props.BoolProperty( \ - name="Collisions Enabled",\ - default=True,\ - description = "Can the player collide with this material"\ - ) - skate_surface: bpy.props.BoolProperty( \ - name="Skate Surface", \ - default=True,\ - description = "Should the game try to target this surface?" \ - ) - grind_surface: bpy.props.BoolProperty( \ - name="Grind Surface", \ - default=False,\ - description = "Grind face?" \ - ) - grow_grass: bpy.props.BoolProperty( \ - name="Grow Grass", \ - default=False,\ - description = "Spawn grass sprites on this surface?" \ - ) - blend_offset: bpy.props.FloatVectorProperty( \ - name="Blend Offset", \ - size=2, \ - default=Vector((0.5,0.0)),\ - description="When surface is more than 45 degrees, add this vector " +\ - "to the UVs" \ - ) - sand_colour: bpy.props.FloatVectorProperty( \ - name="Sand Colour",\ - subtype='COLOR',\ - min=0.0,max=1.0,\ - default=Vector((0.79,0.63,0.48)),\ - description="Blend to this colour near the 0 coordinate on UP axis"\ - ) - shore_colour: bpy.props.FloatVectorProperty( \ - name="Shore Colour",\ - subtype='COLOR',\ - min=0.0,max=1.0,\ - default=Vector((0.03,0.32,0.61)),\ - description="Water colour at the shoreline"\ - ) - ocean_colour: bpy.props.FloatVectorProperty( \ - name="Ocean Colour",\ - subtype='COLOR',\ - min=0.0,max=1.0,\ - default=Vector((0.0,0.006,0.03)),\ - description="Water colour in the deep bits"\ - ) -#} + v0 = ni.location - nj.location -class CV_MATERIAL_PANEL(bpy.types.Panel): -#{ - bl_label="Skate Rift material" - bl_idname="MATERIAL_PT_cv_material" - bl_space_type='PROPERTIES' - bl_region_type='WINDOW' - bl_context="material" - - def draw(_,context): - #{ - active_object = bpy.context.active_object - if active_object == None: return - active_mat = active_object.active_material - if active_mat == None: return + gate = None - info = material_info( active_mat ) + if ni.SR_data.ent_type == 'ent_gate': + gate = ni - if 'tex_diffuse' in info: - #{ - _.layout.label( icon='INFO', \ - text=F"{info['tex_diffuse'].name} will be compiled" ) - #} + if nj.SR_data.ent_type == 'ent_gate':#{ + if gate: continue + gate = nj + #} - _.layout.prop( active_mat.cv_data, "shader" ) - _.layout.prop( active_mat.cv_data, "surface_prop" ) - _.layout.prop( active_mat.cv_data, "collision" ) + if gate:#{ + v1 = gate.matrix_world.to_3x3() @ Vector((0,-1,0)) + if gate.SR_data.ent_gate[0].target: + if v1.dot(v0) > 0.0: continue + else: + if v1.dot(v0) < 0.0: continue + #} - if active_mat.cv_data.collision: - _.layout.prop( active_mat.cv_data, "skate_surface" ) - _.layout.prop( active_mat.cv_data, "grind_surface" ) - _.layout.prop( active_mat.cv_data, "grow_grass" ) + dist = v0.magnitude - if active_mat.cv_data.shader == "terrain_blend": - #{ - box = _.layout.box() - box.prop( active_mat.cv_data, "blend_offset" ) - box.prop( active_mat.cv_data, "sand_colour" ) - #} - elif active_mat.cv_data.shader == "vertex_blend": - #{ - box = _.layout.box() - box.label( icon='INFO', text="Uses vertex colours, the R channel" ) - box.prop( active_mat.cv_data, "blend_offset" ) - #} - elif active_mat.cv_data.shader == "water": - #{ - box = _.layout.box() - box.label( icon='INFO', text="Depth scale of 16 meters" ) - box.prop( active_mat.cv_data, "shore_colour" ) - box.prop( active_mat.cv_data, "ocean_colour" ) + if dist > 25.0: continue + graph[route_nodes[i].name][route_nodes[j].name] = dist + graph[route_nodes[j].name][route_nodes[i].name] = dist #} #} + + return graph #} -class CV_OBJ_PANEL(bpy.types.Panel): +def cv_draw_route( route, route_nodes ): #{ - bl_label="Entity Config" - bl_idname="SCENE_PT_cv_entity" - bl_space_type='PROPERTIES' - bl_region_type='WINDOW' - bl_context="object" - - def draw(_,context): - #{ - active_object = bpy.context.active_object - if active_object == None: return - if active_object.type == 'ARMATURE': - #{ - row = _.layout.row() - row.enabled = False - row.label( text="This object has the intrinsic classtype of skeleton" ) - return - #} + pole = Vector((0.2,0.2,20)) + hat = Vector((20,2.0,0.2)) + cc = route.SR_data.ent_route[0].colour - _.layout.prop( active_object.cv_data, "classtype" ) + cv_draw_ucube( route.matrix_world, cc, Vector((20,1,10)) ) + cv_draw_ucube( route.matrix_world, cc, pole, Vector((-20,1,-10)) ) + cv_draw_ucube( route.matrix_world, cc, pole, Vector(( 20,1,-10)) ) + cv_draw_ucube( route.matrix_world, cc, hat, Vector((0,-1, 10)) ) + cv_draw_ucube( route.matrix_world, cc, hat, Vector((0,-1,-10)) ) - classtype = active_object.cv_data.classtype + checkpoints = route.SR_data.ent_route[0].gates + graph = node_graph( route_nodes ) - if (classtype != 'classtype_none') and (classtype in globals()): - #{ - cl = globals()[ classtype ] + for i in range(len(checkpoints)):#{ + gi = checkpoints[i].target + gj = checkpoints[(i+1)%len(checkpoints)].target - if getattr( cl, "editor_interface", None ): - #{ - cl.editor_interface( _.layout, active_object ) - #} + if gi:#{ + dest = gi.SR_data.ent_gate[0].target + if dest: + cv_draw_line_dotted( gi.location, dest.location, cc ) + gi = dest #} - #} -#} -class CV_COMPILE(bpy.types.Operator): -#{ - bl_idname="carve.compile_all" - bl_label="Compile All" + if gi==gj: continue # error? + if not gi or not gj: continue - 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.cv_data.use_hidden: - write_model( col.name ) + path = dijkstra( graph, gj.name, gi.name ) - return {'FINISHED'} + if path:#{ + for sj in range(len(path)-1):#{ + o0 = bpy.data.objects[ path[sj] ] + o1 = bpy.data.objects[ path[sj+1] ] + cv_draw_arrow(o0.location,o1.location,cc,1.5) + #} + #} + else:#{ + cv_draw_line_dotted( gi.location, gj.location, cc ) + #} #} #} -class CV_COMPILE_THIS(bpy.types.Operator): +def cv_draw(): #{ - bl_idname="carve.compile_this" - bl_label="Compile This collection" - - def execute(_,context): - #{ - col = bpy.context.collection - write_model( col.name ) + global cv_view_shader + global cv_view_verts + global cv_view_colours + global cv_view_course_i - return {'FINISHED'} - #} -#} + cv_view_course_i = 0 + cv_view_verts = [] + cv_view_colours = [] -class CV_INTERFACE(bpy.types.Panel): -#{ - bl_idname = "VIEW3D_PT_carve" - bl_label = "Skate Rift" - bl_space_type = 'VIEW_3D' - bl_region_type = 'UI' - bl_category = "Skate Rift" + cv_view_shader.bind() + gpu.state.depth_mask_set(False) + gpu.state.line_width_set(2.0) + gpu.state.face_culling_set('BACK') + gpu.state.depth_test_set('LESS') + gpu.state.blend_set('NONE') - def draw(_, context): - #{ - layout = _.layout - layout.prop( context.scene.cv_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.cv_data.use_hidden: - export_count += 1 + route_nodes = [] + routes = [] - if c1.name == col.name: - #{ - found_in_export = True - #} + for obj in bpy.context.collection.objects:#{ + if obj.type == 'ARMATURE':#{ + if obj.data.pose_position == 'REST': + draw_skeleton_helpers( obj ) #} + else:#{ + ent_type = obj_ent_type( obj ) - box = layout.box() - if found_in_export: - #{ - box.label( text=col.name + ".mdl" ) - box.prop( col.cv_data, "pack_textures" ) - box.prop( col.cv_data, "animations" ) - box.operator( "carve.compile_this" ) - #} - else: - #{ - row = box.row() - row.enabled=False - row.label( text=col.name ) - box.label( text="This collection is not in the export group" ) + if ent_type == 'ent_gate':#{ + cv_ent_gate( obj ) + route_nodes += [obj] + #} + elif ent_type == 'ent_route_node': + route_nodes += [obj] + elif ent_type == 'ent_route': + routes += [obj] #} - - box = layout.box() - row = box.row() - - split = row.split( factor = 0.3, align=True ) - split.prop( context.scene.cv_data, "use_hidden", text="hidden" ) - - row1 = split.row() - if export_count == 0: - row1.enabled=False - row1.operator( "carve.compile_all", \ - text=F"Compile all ({export_count} collections)" ) #} -#} + + #cv_draw_route_map( route_nodes ) + for route in routes:#{ + cv_draw_route( route, route_nodes ) + #} + cv_draw_lines() + return +#} -classes = [CV_OBJ_SETTINGS,CV_OBJ_PANEL,CV_COMPILE,CV_INTERFACE,\ - CV_MESH_SETTINGS, CV_SCENE_SETTINGS, CV_BONE_SETTINGS,\ - CV_BONE_PANEL, CV_COLLECTION_SETTINGS, CV_COMPILE_THIS,\ - CV_MATERIAL_SETTINGS, CV_MATERIAL_PANEL, CV_LIGHT_SETTINGS,\ - CV_LIGHT_PANEL] +classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\ + SR_COLLECTION_SETTINGS, SR_SCENE_SETTINGS, \ + SR_COMPILE, SR_COMPILE_THIS, 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, \ + SR_OBJECT_ENT_ROUTE, SR_OT_ROUTE_LIST_NEW_ITEM, + SR_OT_ROUTE_LIST_DEL_ITEM,\ + \ + SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES, + SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \ + ] def register(): #{ - global cv_view_draw_handler - for c in classes: bpy.utils.register_class(c) - bpy.types.Object.cv_data = bpy.props.PointerProperty(type=CV_OBJ_SETTINGS) - bpy.types.Mesh.cv_data = bpy.props.PointerProperty(type=CV_MESH_SETTINGS) - bpy.types.Scene.cv_data = bpy.props.PointerProperty(type=CV_SCENE_SETTINGS) - bpy.types.Bone.cv_data = bpy.props.PointerProperty(type=CV_BONE_SETTINGS) - bpy.types.Collection.cv_data = \ - bpy.props.PointerProperty(type=CV_COLLECTION_SETTINGS) - bpy.types.Material.cv_data = \ - bpy.props.PointerProperty(type=CV_MATERIAL_SETTINGS) - bpy.types.Light.cv_data = bpy.props.PointerProperty(type=CV_LIGHT_SETTINGS) + bpy.types.Scene.SR_data = \ + bpy.props.PointerProperty(type=SR_SCENE_SETTINGS) + bpy.types.Collection.SR_data = \ + bpy.props.PointerProperty(type=SR_COLLECTION_SETTINGS) + + bpy.types.Object.SR_data = \ + bpy.props.PointerProperty(type=SR_OBJECT_PROPERTIES) + bpy.types.Light.SR_data = \ + bpy.props.PointerProperty(type=SR_LIGHT_PROPERTIES) + bpy.types.Bone.SR_data = \ + bpy.props.PointerProperty(type=SR_BONE_PROPERTIES) + bpy.types.Mesh.SR_data = \ + bpy.props.PointerProperty(type=SR_MESH_PROPERTIES) + bpy.types.Material.SR_data = \ + bpy.props.PointerProperty(type=SR_MATERIAL_PROPERTIES) + global cv_view_draw_handler cv_view_draw_handler = bpy.types.SpaceView3D.draw_handler_add(\ cv_draw,(),'WINDOW','POST_VIEW') #} def unregister(): #{ - global cv_view_draw_handler - for c in classes: bpy.utils.unregister_class(c) + global cv_view_draw_handler bpy.types.SpaceView3D.draw_handler_remove(cv_view_draw_handler,'WINDOW') #} @@ -3089,7 +2565,8 @@ def qoi_encode( img ): #{ data = bytearray() - print(F" . Encoding {img.name}.qoi[{img.size[0]},{img.size[1]}]") + print(F"{' ':<30}",end='\r') + print(F"[QOI] Encoding {img.name}.qoi[{img.size[0]},{img.size[1]}]",end='\r') index = [ qoi_rgba_t() for _ in range(64) ] @@ -3115,11 +2592,9 @@ def qoi_encode( img ): px.a = c_uint8(255) px_len = img.size[0] * img.size[1] - paxels = [ int(min(max(_,0),1)*255) for _ in img.pixels ] - for px_pos in range( px_len ): - #{ + for px_pos in range( px_len ): #{ idx = px_pos * img.channels nc = img.channels-1 @@ -3128,39 +2603,32 @@ def qoi_encode( img ): px.b = paxels[idx+min(2,nc)] px.a = paxels[idx+min(3,nc)] - if qoi_eq( px, px_prev ): - #{ + if qoi_eq( px, px_prev ): #{ run += 1 - if (run == 62) or (px_pos == px_len-1): - #{ + if (run == 62) or (px_pos == px_len-1): #{ data.extend( bytearray( c_uint8(QOI_OP_RUN | (run-1))) ) run = 0 #} #} - else: - #{ - if run > 0: - #{ + else: #{ + if run > 0: #{ data.extend( bytearray( c_uint8(QOI_OP_RUN | (run-1))) ) run = 0 #} index_pos = qoi_colour_hash(px) % 64 - if qoi_eq( index[index_pos], px ): - #{ + if qoi_eq( index[index_pos], px ): #{ data.extend( bytearray( c_uint8(QOI_OP_INDEX | index_pos)) ) #} - else: - #{ + else: #{ index[ index_pos ].r = px.r index[ index_pos ].g = px.g index[ index_pos ].b = px.b index[ index_pos ].a = px.a - if px.a == px_prev.a: - #{ + if px.a == px_prev.a: #{ vr = int(px.r) - int(px_prev.r) vg = int(px.g) - int(px_prev.g) vb = int(px.b) - int(px_prev.b) @@ -3184,16 +2652,14 @@ def qoi_encode( img ): data.extend( bytearray( c_uint8(op) ) ) data.extend( bytearray( c_uint8(delta) )) #} - else: - #{ + else: #{ data.extend( bytearray( c_uint8(QOI_OP_RGB) ) ) data.extend( bytearray( c_uint8(px.r) )) data.extend( bytearray( c_uint8(px.g) )) data.extend( bytearray( c_uint8(px.b) )) #} #} - else: - #{ + else: #{ data.extend( bytearray( c_uint8(QOI_OP_RGBA) ) ) data.extend( bytearray( c_uint8(px.r) )) data.extend( bytearray( c_uint8(px.g) )) @@ -3213,7 +2679,7 @@ def qoi_encode( img ): for i in range(7): data.extend( bytearray( c_uint8(0) )) data.extend( bytearray( c_uint8(1) )) - bytearray_align_to( data, 16, 0 ) + bytearray_align_to( data, 16, b'\x00' ) return data #} diff --git a/entity.h b/entity.h new file mode 100644 index 0000000..9af8e79 --- /dev/null +++ b/entity.h @@ -0,0 +1,100 @@ +#ifndef ENTITY_H +#define ENTITY_H + +#include "model.h" + +typedef struct ent_spawn ent_spawn; +typedef struct ent_light ent_light; +typedef struct ent_gate ent_gate; +typedef struct ent_route_node ent_route_node; +typedef struct ent_path_index ent_path_index; +typedef struct ent_checkpoint ent_checkpoint; +typedef struct ent_route ent_route; + +struct ent_spawn{ + mdl_transform transform; + u32 pstr_name; +}; + +enum light_type{ + k_light_type_point = 0, + k_light_type_spot = 1 +}; + +struct ent_light{ + mdl_transform transform; + u32 daytime, + type; + + v4f colour; + float angle, + range; + + m4x3f inverse_world; + v2f angle_sin_cos; +}; + +enum gate_type{ + k_gate_type_unlinked = 0, + k_gate_type_teleport = 1, + k_gate_type_nonlocal = 2 +}; + +struct ent_gate{ + u32 type, + target; + + /* TODO: World index */ + + v3f dimensions, + co[2]; + + v4f q[2]; + + /* runtime */ + m4x3f to_world, transport; + + union{ + u32 timing_version; + + struct{ + u8 ref_count, ref_total; + }; + }; + + double timing_time; + u16 routes[4]; /* routes that pass through this gate */ +}; + +struct ent_route_node{ + v3f co; + u8 ref_count, ref_total; +}; + +struct ent_path_index{ + u16 index; +}; + +struct ent_checkpoint{ + u16 gate_index, + path_start, + path_count; +}; + +struct ent_route{ + mdl_transform transform; + u32 pstr_name; + u16 checkpoints_start, + checkpoints_count; + + v4f colour; + + /* runtime */ + u32 active_checkpoint; + float factive; + m4x3f board_transform; + mdl_submesh sm; + double latest_pass; +}; + +#endif /* ENTITY_H */ diff --git a/maps_src/mp_arizona.mdl b/maps_src/mp_arizona.mdl index 9d1ce851515e95b27ec1076ecbd0ff9a40c7b0be..01ea7eb1cd276addd97f03637c8e57a230cf94bd 100644 GIT binary patch literal 2312 zcmdT^J#W)c6n%sUAw&=`6@f(ADiNU;f&x}s2gJ~gB7Q*SCT?mqaZ|@dt;Aq4pf`mt zA!TJN4*!Av0Kd#E-5FSzU;@tZ^Gi)t1qOz2q?`M3?tSn2`Z_a0h-t_<$Q6j^H{2a) zgS`_%%))^Z-7xU{X4g>S6M_YJ^N@CxNtgL9U!}-R;#8y$6Eljq04x4LqmC z+RqtxKC27eop3vFNr~?~5V!;3eNNDJ3~9Jd#;tDpx(Gfw-nRsC{cxq_HP=JfMD3*R z^8;*hP4toy_~{q5WqNUZ4;OlyevX@g&0aR#-L=4Jr?sp*jX38%`P4A$`m9IJVpvVzUZU&sP%o+ ztYaR9d4I~~JPEw6ze4_*Fs7LAkl=g`u73+_up{Yx5qs?8sFOV))1~yisHv$Fi@|grFwE8 zt>mS&4lY@$e8Ec2Oq4b3OZ7$;&}u9TiCs9b3+h^x*3eRu+3|C!`m&;4%lER9%vUC> k&tX-)l~q+KSCfm?VJua-q+VbJN=dmiVVz=83G<)$3udXe#Q*>R delta 342 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 Pym==3iH8i%-h-`L?-B=h$jm5Cq|h3W-Vs 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 Y2Al(w0OSA#KnW-XsPNt^^y9(*0|}>ClK=n! delta 301556 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

  • 9T)sjss2rN&uyRlYmp?!tm3d_y007{OdC}J92sClE|n9zaBGY jYLo%a07yVNpaM_{r~*_2WB@rp0jL2e$(b6|v$6jVlb+(2 diff --git a/model.h b/model.h index 6f99fb6..c92960f 100644 --- a/model.h +++ b/model.h @@ -7,44 +7,6 @@ #include "common.h" -typedef struct glmesh glmesh; - -typedef struct mdl_vert mdl_vert; -typedef struct mdl_submesh mdl_submesh; -typedef struct mdl_material mdl_material; -typedef struct mdl_node mdl_node; -typedef struct mdl_file_header mdl_file_header; -typedef struct mdl_animation mdl_animation; -typedef struct mdl_keyframe mdl_keyframe; -typedef struct mdl_texture mdl_texture; -typedef struct mdl_context mdl_context; - -#define MDL_SIZE_MAX 0x1000000 -#define MDL_VERT_MAX 1000000 -#define MDL_INDICE_MAX 1000000 -#define MDL_MATERIAL_MAX 32 -#define MDL_NODE_MAX 4000 -#define MDL_SUBMESH_MAX 8000 -#define MDL_STRING_LENGTH_MAX 64 - -enum classtype -{ - k_classtype_none = 000, - k_classtype_bone = 001, - k_classtype_skeleton = 002, - k_classtype_skin = 003, - k_classtype_world_light = 004, - - k_classtype_gate = 100, - k_classtype_nonlocal_gate = 101, - k_classtype_spawn = 200, - k_classtype_water = 300, - k_classtype_route = 400, - k_classtype_route_node = 401, - k_classtype_audio = 500, - k_classtype_audio_sprite = 502, - k_classtype_volume_audio = 600, -}; enum mdl_shader { @@ -71,26 +33,6 @@ enum material_flag k_material_flag_grind_surface = 0x8 }; -enum bone_flag -{ - k_bone_flag_deform = 0x1, - k_bone_flag_ik = 0x2, - k_bone_flag_collider_box = 0x4, - k_bone_flag_collider_capsule = 0x8, - k_bone_flag_collider_reserved0 = 0x10, - k_bone_flag_collider_reserved1 = 0x20, - k_bone_flag_collider_reserved2 = 0x40, - k_bone_flag_collider_reserved3 = 0x80, - k_bone_flag_collider_any = k_bone_flag_collider_box | - k_bone_flag_collider_capsule | - k_bone_flag_collider_reserved0 | - k_bone_flag_collider_reserved1 | - k_bone_flag_collider_reserved2 | - k_bone_flag_collider_reserved3, - k_bone_flag_cone_constraint = 0x100, - k_bone_flag_force_u32 = 0xffffffff -}; - #pragma pack(push,1) /* 48 byte */ @@ -105,24 +47,41 @@ struct mdl_vert u8 groups[4]; /* 4*8 */ }; +#pragma pack(pop) + +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; +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; + +struct mdl_transform +{ + v3f co, s; + v4f q; +}; + struct mdl_submesh { u32 indice_start, indice_count, vertex_start, vertex_count; - + boxf bbx; u32 material_id; }; -struct mdl_texture -{ - u32 pstr_name, - pack_offset, - pack_length; -}; - struct mdl_material { u32 pstr_name, @@ -134,193 +93,274 @@ struct mdl_material colour1; u32 tex_diffuse, - tex_decal, - tex_normal; + tex_none0, + tex_none1; }; -struct mdl_node +struct mdl_bone { - v3f co; - v4f q; - v3f s; - - u32 sub_uid, /* allocated in-file... too bad. */ - submesh_start, - submesh_count, - classtype, - offset, - parent, + v3f co, end; + u32 parent, + collider, + ik_target, + ik_pole, + flags, pstr_name; + + boxf hitbox; + v3f conevx, conevy, coneva; + float conet; }; -struct mdl_keyframe +enum bone_flag { - v3f co; - v4f q; - v3f s; + k_bone_flag_deform = 0x1, + k_bone_flag_ik = 0x2, + k_bone_flag_cone_constraint = 0x4 +}; + +enum bone_collider +{ + k_bone_collider_none = 0, + k_bone_collider_box = 1, + k_bone_collider_capsule = 2 +}; + +struct mdl_armature +{ + mdl_transform transform; + u32 bone_start, + bone_count, + anim_start, + anim_count; }; struct mdl_animation { u32 pstr_name, length; - float rate; - u32 offset; }; -struct mdl_file_header +struct mdl_mesh { - u32 identifier, version, file_length, pad0; - - u32 - node_count, node_offset, - submesh_count, submesh_offset, - material_count, material_offset, - texture_count, texture_offset, - anim_count, anim_offset, - entdata_size, entdata_offset, - strings_size, strings_offset, - - keyframe_count, keyframe_offset, - - vertex_count, vertex_offset, - indice_count, indice_offset, - - pack_size, pack_offset; + mdl_transform transform; + u32 submesh_start, + submesh_count, + pstr_name, + flags, + armature_id; }; -/* - * Entity data structures - */ - -struct classtype_bone /* 001 */ +struct mdl_file { - u32 flags, - ik_target, - ik_pole; - - boxf hitbox; + u32 pstr_path, + pack_offset, + pack_size; +}; - v3f conevx, conevy, coneva; - float conet; +struct mdl_texture +{ + mdl_file file; + u32 type; }; -struct classtype_skeleton /* 002 */ +struct mdl_array { - u32 channels, - ik_count, - collider_count, - anim_start, - anim_count; + u32 file_offset, + item_count, + item_size; + + char name[16]; }; -struct classtype_skin /* 003 */ +struct mdl_header { - u32 skeleton; + u32 version; + mdl_array index; }; -struct classtype_world_light /* 004 */ +struct mdl_context { - enum light_type + FILE *file; + mdl_header info; + + struct mdl_array_ptr { - k_light_type_point, - k_light_type_spot, - k_light_type_point_nighttime_only, - k_light_type_spot_nighttime_only - } - type; - - v4f colour; /* RGB, Energy */ - float angle, range; + void *data; + u32 count, stride; + } + index, + + /* metadata */ + strings, + meshs, + submeshs, + materials, + textures, + armatures, + bones, + animations, + + /* animation buffers */ + keyframes, + + /* mesh buffers */ + verts, + indices, + + /* pack data */ + pack; }; -struct classtype_gate /* 100, 101 */ +VG_STATIC void mdl_load_fatal_corrupt( mdl_context *mdl ) { - u32 target; - v3f dims; -}; + fclose( mdl->file ); + vg_file_print_invalid( mdl->file ); + vg_fatal_exit_loop( "Corrupt model" ); +} + +/* + * Model implementation + */ -struct classtype_spawn /* 200 */ +VG_STATIC void mdl_load_array_file( mdl_context *mdl, mdl_array_ptr *ptr, + mdl_array *arr, void *lin_alloc ) { - u32 pstr_alias; -}; + if( arr->item_count ){ + u32 size = arr->item_size*arr->item_count; + ptr->data = vg_linear_alloc( lin_alloc, vg_align8(size) ); + + fseek( mdl->file, arr->file_offset, SEEK_SET ); + u64 l = fread( ptr->data, arr->item_size*arr->item_count, 1, mdl->file ); -struct classtype_water /* 300 */ + if( l != 1 ) + mdl_load_fatal_corrupt( mdl ); + } + else + ptr->data = NULL; + + ptr->count = arr->item_count; + ptr->stride = arr->item_size; +} + +VG_STATIC void *mdl_arritm( mdl_array_ptr *arr, u32 index ) { - u32 temp; -}; + return ((u8 *)arr->data) + index*arr->stride; +} -struct classtype_route /* 400 */ +VG_STATIC u32 mdl_arrcount( mdl_array_ptr *arr ) { - u32 id_start; - u32 pstr_name; - v3f colour; -}; + return arr->count; +} -struct classtype_route_node /* 401 */ +VG_STATIC int mdl_load_array( mdl_context *mdl, mdl_array_ptr *ptr, + const char *name, void *lin_alloc ) { - u32 target, target1; -}; + for( u32 i=0; iindex); i++ ){ + mdl_array *arr = mdl_arritm( &mdl->index, i ); + + if( !strncmp(arr->name,name,16) ){ + mdl_load_array_file( mdl, ptr, arr, lin_alloc ); + return 1; + } + } + ptr->data = NULL; + ptr->count = 0; + ptr->stride = 0; + return 0; +} -struct classtype_audio /* 500 */ +VG_STATIC int mdl_load_mesh_block( mdl_context *mdl, void *lin_alloc ) { - u32 pstr_file, - flags; + int success = 1; - float volume; -}; + success &= mdl_load_array( mdl, &mdl->verts, "mdl_vert", lin_alloc ); + success &= mdl_load_array( mdl, &mdl->indices, "mdl_indice", lin_alloc ); + + return success; +} -struct classtype_audio_sprite /* 501 */ +VG_STATIC int mdl_load_metadata_block( mdl_context *mdl, void *lin_alloc ) { - u32 audio, - category; + int success = 1; - float probability; -}; + success &= mdl_load_array( mdl, &mdl->strings, "strings", lin_alloc ); + 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->materials, "mdl_material", 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 ); -struct classtype_volume_audio /* 600 */ + return success; +} + +VG_STATIC int mdl_load_animation_block( mdl_context *mdl, void *lin_alloc ) { - u32 category; -}; + return mdl_load_array( mdl, &mdl->keyframes, "mdl_keyframe", lin_alloc ); +} -struct classtype_volume_event /* 601 */ +VG_STATIC int mdl_load_pack_block( mdl_context *mdl, void *lin_alloc ) { - u32 event; -}; + return mdl_load_array( mdl, &mdl->pack, "pack", lin_alloc ); +} -#pragma pack(pop) +/* + * if calling mdl_open, and the file does not exist, the game will fatal quit + */ +VG_STATIC void mdl_open( mdl_context *mdl, const char *path, void *lin_alloc ) +{ + memset( mdl, 0, sizeof( mdl_context ) ); + mdl->file = fopen( path, "rb" ); + if( !mdl->file ){ + vg_error( "mdl_open('%s'): %s\n", path, strerror(errno) ); + vg_fatal_exit_loop( "see above for details" ); + } -struct mdl_context -{ - FILE *file; - mdl_file_header info; + u64 l = fread( &mdl->info, sizeof(mdl_header), 1, mdl->file ); + if( l != 1 ) + mdl_load_fatal_corrupt( mdl ); - /* each buffer becomes availible after each _load function is called */ - mdl_node *node_buffer; /* mdl_load_metadata() */ - mdl_submesh *submesh_buffer; - mdl_material *material_buffer; - mdl_texture *texture_buffer; - mdl_animation *anim_buffer; - void *entdata_buffer; - const char *string_buffer; + mdl_load_array_file( mdl, &mdl->index, &mdl->info.index, lin_alloc ); +} - mdl_keyframe *keyframe_buffer; /* mdl_load_anim_data() */ +/* + * close file handle + */ +VG_STATIC void mdl_close( mdl_context *mdl ) +{ + fclose( mdl->file ); + mdl->file = NULL; +} - mdl_vert *vertex_buffer; /* mdl_load_mesh_data() */ - u32 *index_buffer; +/* useful things you can do with the model */ - void *pack; /* mdl_load_pack_data() */ -}; +VG_STATIC void mdl_transform_m4x3( mdl_transform *transform, m4x3f mtx ) +{ + q_m3x3( transform->q, mtx ); + v3_muls( mtx[0], transform->s[0], mtx[0] ); + v3_muls( mtx[1], transform->s[1], mtx[1] ); + v3_muls( mtx[2], transform->s[2], mtx[2] ); + v3_copy( transform->co, mtx[3] ); +} + +VG_STATIC const char *mdl_pstr( mdl_context *mdl, u32 pstr ) +{ + return mdl_arritm( &mdl->strings, pstr ); +} /* * Simple mesh interface for OpenGL + * ---------------------------------------------------------------------------- */ +typedef struct glmesh glmesh; struct glmesh { GLuint vao, vbo, ebo; @@ -329,8 +369,8 @@ struct glmesh }; VG_STATIC void mesh_upload( glmesh *mesh, - mdl_vert *verts, u32 vert_count, - u32 *indices, u32 indice_count ) + mdl_vert *verts, u32 vert_count, + u32 *indices, u32 indice_count ) { //assert( mesh->loaded == 0 ); @@ -402,8 +442,7 @@ VG_STATIC void mesh_draw( glmesh *mesh ) VG_STATIC void mesh_free( glmesh *mesh ) { - if( mesh->loaded ) - { + if( mesh->loaded ){ glDeleteVertexArrays( 1, &mesh->vao ); glDeleteBuffers( 1, &mesh->ebo ); glDeleteBuffers( 1, &mesh->vbo ); @@ -411,252 +450,23 @@ VG_STATIC void mesh_free( glmesh *mesh ) } } -VG_STATIC void mdl_load_fatal_corrupt( mdl_context *mdl ) -{ - fclose( mdl->file ); - vg_file_print_invalid( mdl->file ); - vg_fatal_exit_loop( "Corrupt model" ); -} - -/* - * Model implementation - * - * TODO. - * - * you have two api options for loading a model, first, the easy way: - * mdl_load ... - * will put the entire model straight into the linear_alloc - * - * or, to target different allocators: - * - * mdl_open - * mdl_load_metadata - * mdl_load_vertex_data - * mdl_load_indice_data - * mdl_close - * - * these should ideally be called in quick succession to limit stalls. - */ - -/* - * if calling mdl_open, and the file does not exist, the game will fatal quit - */ -VG_STATIC void mdl_open( mdl_context *mdl, const char *path ) -{ - memset( mdl, 0, sizeof( mdl_context ) ); - mdl->file = fopen( path, "rb" ); - - if( !mdl->file ) - { - vg_error( "mdl_open('%s'): %s\n", path, strerror(errno) ); - vg_fatal_exit_loop( "see above for details" ); - } - - u64 l = fread( &mdl->info, sizeof(mdl_file_header), 1, mdl->file ); - if( l != 1 ) - mdl_load_fatal_corrupt( mdl ); -} - -/* - * Load all metadata (everything up until the large buffers). Probs at most 50k - */ -VG_STATIC void mdl_load_metadata( mdl_context *mdl, void *lin_alloc ) -{ - assert( mdl->file ); - - u64 lheader = sizeof(mdl_file_header), - ldata = mdl->info.keyframe_offset - lheader; - - void *all_data = vg_linear_alloc( lin_alloc, ldata ); - - fseek( mdl->file, lheader, SEEK_SET ); - u64 l = fread( all_data, ldata, 1, mdl->file ); - - if( l != 1 ) - { - vg_file_print_invalid( mdl->file ); - vg_fatal_exit_loop( "Corrupt model" ); - } - - mdl->node_buffer = all_data + (mdl->info.node_offset - lheader); - mdl->submesh_buffer = all_data + (mdl->info.submesh_offset - lheader); - mdl->material_buffer = all_data + (mdl->info.material_offset - lheader); - mdl->texture_buffer = all_data + (mdl->info.texture_offset - lheader); - mdl->anim_buffer = all_data + (mdl->info.anim_offset - lheader); - mdl->entdata_buffer = all_data + (mdl->info.entdata_offset - lheader); - mdl->string_buffer = all_data + (mdl->info.strings_offset - lheader); -} - -/* - * Load just the mesh data - */ -VG_STATIC void mdl_load_mesh_data( mdl_context *mdl, void *lin_alloc ) -{ - assert( mdl->file ); - - u64 size_verts = vg_align8( mdl->info.vertex_count * sizeof(mdl_vert) ), - size_index = vg_align8( mdl->info.indice_count * sizeof(u32) ); - - mdl->vertex_buffer = vg_linear_alloc( lin_alloc, size_verts ); - mdl->index_buffer = vg_linear_alloc( lin_alloc, size_index ); - - { - fseek( mdl->file, mdl->info.vertex_offset, SEEK_SET ); - u64 l = fread( mdl->vertex_buffer, size_verts, 1, mdl->file ); - if( l != 1 ) - mdl_load_fatal_corrupt( mdl ); - } - { - fseek( mdl->file, mdl->info.indice_offset, SEEK_SET ); - u64 l = fread( mdl->index_buffer, size_index, 1, mdl->file ); - if( l != 1 ) - mdl_load_fatal_corrupt( mdl ); - } -} - -/* - * Load animation data - */ -VG_STATIC void mdl_load_anim_data( mdl_context *mdl, void *lin_alloc ) -{ - assert( mdl->file ); - - if( mdl->info.keyframe_count == 0 ) - return; - - u64 size_kf = vg_align8( mdl->info.keyframe_count * sizeof(mdl_keyframe) ); - mdl->keyframe_buffer = vg_linear_alloc( lin_alloc, size_kf ); - - fseek( mdl->file, mdl->info.keyframe_offset, SEEK_SET ); - u64 l = fread( mdl->keyframe_buffer, size_kf, 1, mdl->file ); - if( l != 1 ) - mdl_load_fatal_corrupt( mdl ); -} - -/* - * Load pack contents - * - * TODO request specific files (low) - */ -VG_STATIC void mdl_load_pack_data( mdl_context *mdl, void *lin_alloc ) -{ - assert( mdl->file ); - - if( mdl->info.pack_size == 0 ) - return; - - mdl->pack = vg_linear_alloc( lin_alloc, vg_align8( mdl->info.pack_size ) ); - fseek( mdl->file, mdl->info.pack_offset, SEEK_SET ); - - u64 l = fread( mdl->pack, mdl->info.pack_size, 1, mdl->file ); - if( l != 1 ) - mdl_load_fatal_corrupt( mdl ); -} - -/* - * close file handle - */ -VG_STATIC void mdl_close( mdl_context *mdl ) -{ - fclose( mdl->file ); - mdl->file = NULL; -} - -/* open a model. TODO: make this flags ( ANIM_DATA|MESH_DATA ... ) */ -VG_STATIC mdl_context *mdl_load_full( void *lin_alloc, const char *path ) -{ - /* Inspect the header by opening it, give us the size needed */ - mdl_context temp_ctx; - mdl_open( &temp_ctx, path ); - - /* create allocator */ - u32 tot_size = temp_ctx.info.file_length + sizeof( mdl_context ) + 64; - void *data = vg_create_linear_allocator( lin_alloc, tot_size, - VG_MEMORY_SYSTEM ); - - /* copy context and load all other data */ - mdl_context *ctx = vg_linear_alloc( data, sizeof(mdl_context) ); - memcpy( ctx, &temp_ctx, sizeof(mdl_context) ); - - mdl_load_metadata( ctx, data ); - mdl_load_anim_data( ctx, data ); - mdl_load_mesh_data( ctx, data ); - mdl_load_pack_data( ctx, data ); - mdl_close( ctx ); - - return ctx; -} - -/* - * Item getters - * ---------------------------------------------------------------------------- - * TODO: Clamp access and oob errors - */ -VG_STATIC const char *mdl_pstr( mdl_context *mdl, u32 pstr ) -{ - return mdl->string_buffer + pstr; -} - -VG_STATIC mdl_node *mdl_node_from_id( mdl_context *mdl, u32 id ) -{ - return &mdl->node_buffer[id]; -} - -VG_STATIC mdl_node *mdl_node_from_name( mdl_context *mdl, const char *name ) -{ - for( int i=0; i < mdl->info.node_count; i++ ) - { - mdl_node *pnode = mdl_node_from_id( mdl, i ); - - if( !strcmp( name, mdl_pstr( mdl, pnode->pstr_name )) ) - return pnode; - } - - return NULL; -} - -VG_STATIC mdl_submesh *mdl_node_submesh( mdl_context *mdl, - mdl_node *node, u32 i ) -{ - return &mdl->submesh_buffer[ node->submesh_start+i ]; -} - -VG_STATIC u32 *mdl_submesh_indices( mdl_context *mdl, mdl_submesh *sm ) -{ - return &mdl->index_buffer[ sm->indice_start ]; -} - -VG_STATIC mdl_vert *mdl_submesh_vertices( mdl_context *mdl, mdl_submesh *sm ) -{ - return &mdl->vertex_buffer[ sm->vertex_start ]; -} - -VG_STATIC void mdl_node_transform( mdl_node *pnode, m4x3f transform ) -{ - q_m3x3( pnode->q, transform ); - v3_muls( transform[0], pnode->s[0], transform[0] ); - v3_muls( transform[1], pnode->s[1], transform[1] ); - v3_muls( transform[2], pnode->s[2], transform[2] ); - v3_copy( pnode->co, transform[3] ); -} - -/* upload a mesh based on file submesh */ -VG_STATIC void mdl_unpack_submesh( mdl_context *mdl, glmesh *mesh, - mdl_submesh *sm ) +VG_STATIC void mdl_draw_submesh( mdl_submesh *sm ) { - mesh_upload( mesh, mdl_submesh_vertices( mdl, sm ), sm->vertex_count, - mdl_submesh_indices( mdl, sm ), sm->indice_count ); + mesh_drawn( sm->indice_start, sm->indice_count ); } -/* upload entire mesh from model */ +/* WARNING: Destructive! Only use this once and then discard the context. */ VG_STATIC void mdl_unpack_glmesh( mdl_context *mdl, glmesh *mesh ) { - u32 offset = mdl->submesh_buffer[0].vertex_count; + if( !mdl->submeshs.count ) + vg_fatal_exit_loop( "Tried to unpack empty model file" ); - for( int i=1; i< mdl->info.submesh_count; i++ ) - { - mdl_submesh *sm = &mdl->submesh_buffer[i]; - u32 *indices = mdl_submesh_indices( mdl, sm ); + mdl_submesh *sm = mdl_arritm( &mdl->submeshs, 0 ); + u32 offset = sm->vertex_count; + + for( u32 i=1; isubmeshs ); i++ ){ + mdl_submesh *sm = mdl_arritm( &mdl->submeshs, i ); + u32 *indices = mdl_arritm( &mdl->indices, sm->indice_start ); for( u32 j=0; jindice_count; j++ ) indices[j] += offset; @@ -664,69 +474,19 @@ VG_STATIC void mdl_unpack_glmesh( mdl_context *mdl, glmesh *mesh ) offset += sm->vertex_count; } - mesh_upload( mesh, mdl->vertex_buffer, mdl->info.vertex_count, - mdl->index_buffer, mdl->info.indice_count ); -} - -VG_STATIC void mdl_draw_submesh( mdl_submesh *sm ) -{ - mesh_drawn( sm->indice_start, sm->indice_count ); -} - -VG_STATIC void *mdl_get_entdata( mdl_context *mdl, mdl_node *pnode ) -{ - return mdl->entdata_buffer + pnode->offset; -} - -VG_STATIC mdl_keyframe *mdl_get_animdata( mdl_context *mdl, mdl_animation *anim ) -{ - return mdl->keyframe_buffer + anim->offset; + mesh_upload( mesh, mdl->verts.data, mdl->verts.count, + mdl->indices.data, mdl->indices.count ); } -VG_STATIC void mdl_link_materials( mdl_context *root, mdl_context *child ) +VG_STATIC mdl_mesh *mdl_find_mesh( mdl_context *mdl, const char *name ) { - u32 lookup[MDL_MATERIAL_MAX]; - - for( int i=0; iinfo.material_count; i++ ) - { - mdl_material *mi = &child->material_buffer[i]; - const char *si = mdl_pstr( child, mi->pstr_name ); - - lookup[i] = 0; - - for( int j=0; jinfo.material_count; j++ ) - { - mdl_material *mj = &root->material_buffer[j]; - const char *sj = mdl_pstr( root, mj->pstr_name ); - - if( !strcmp( si, sj ) ) - { - lookup[i] = j; - break; - } - } - - if( lookup[i] == 0 && i != 0 ) - { - vg_warn( "Could not link material '%s' (not present in root model)\n", - si ); + for( u32 i=0; imeshs ); i++ ){ + mdl_mesh *mesh = mdl_arritm( &mdl->meshs, i ); + if( !strcmp( name, mdl_pstr( mdl, mesh->pstr_name ))){ + return mesh; } } - - for( int i=0; iinfo.submesh_count; i++ ) - { - mdl_submesh *sm = &child->submesh_buffer[i]; - sm->material_id = lookup[sm->material_id]; - } -} - -VG_STATIC void mdl_invert_uv_coordinates( mdl_context *mdl ) -{ - for( int i=0; iinfo.vertex_count; i++ ) - { - mdl_vert *vert = &mdl->vertex_buffer[i]; - vert->uv[1] = 1.0f-vert->uv[1]; - } + return NULL; } - + #endif diff --git a/models_src/ch_empty.mdl b/models_src/ch_empty.mdl deleted file mode 100644 index d9fc227cfc73e473c3500c86f37fc48f9864af88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51920 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 IF7N&S0Xtcc`v3p{ diff --git a/models_src/ch_jordan.mdl b/models_src/ch_jordan.mdl index 6170a11f03d4e69fbf22e114f0d62bc9156a6eec..7fe4aa18ad94781f662bd5954cff13524e80e2e2 100644 GIT binary patch literal 173208 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

    -aq`Dwinu5Z_P!yE3QN@~(O8hvb&pRkE&6 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