X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=293b87cd89e81385131e586cd25a939446ff929f;hb=d43d7f62ff83799b6d99221d881179814cb239a6;hp=3e6bb108853a4af2d38d0323e2c1812dfcf58397;hpb=e5d79dc0355e04baecce8908e29b8e7569d1e857;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 3e6bb10..293b87c 100644 --- a/blender_export.py +++ b/blender_export.py @@ -186,6 +186,7 @@ class ent_gate(Structure): #{ _fields_ = [("type",c_uint32), ("target", c_uint32), + ("key",c_uint32), ("dimensions", c_float*3), ("co", (c_float*3)*2), ("q", (c_float*4)*2), @@ -354,10 +355,16 @@ class ent_skateshop_boards(Structure): ("id_info",c_uint32), ("id_rack",c_uint32)] #} +class ent_skateshop_worlds(Structure): +#{ + _fields_ = [("id_display",c_uint32), + ("id_info",c_uint32)] +#} class ent_skateshop_anon_union(Union): #{ _fields_ = [("boards",ent_skateshop_boards), - ("character",ent_skateshop_characters)] + ("character",ent_skateshop_characters), + ("worlds",ent_skateshop_worlds)] #} class ent_skateshop(Structure): #{ @@ -696,6 +703,7 @@ def sr_compile_material( mat ): if mat.SR_data.skate_surface: flags |= 0x1 if mat.SR_data.grow_grass: flags |= 0x4 if mat.SR_data.grind_surface: flags |= 0x8 + if mat.SR_data.preview_visibile: flags |= 0x40 #} if mat.SR_data.shader == 'invisible': flags |= 0x10 if mat.SR_data.shader == 'boundary': flags |= (0x10|0x20) @@ -1567,7 +1575,8 @@ def sr_compile( collection ): #} #} elif obj_data.tipo == 'nonlocal':#{ - gate.target = sr_compile_string(obj_data.key) + gate.target = 0 + gate.key = sr_compile_string(obj_data.key) gate.type = 2 #} else: gate.type = 0 @@ -1692,6 +1701,11 @@ def sr_compile( collection ): charshop.id_display = sr_entity_id( obj_data.mark_display ) charshop.id_info = sr_entity_id( obj_data.mark_info ) #} + elif skateshop.type == 2:#{ + worldshop = skateshop._anonymous_union.worlds + worldshop.id_display = sr_entity_id( obj_data.mark_display ) + worldshop.id_info = sr_entity_id( obj_data.mark_info ) + #} skateshop.id_camera = sr_entity_id( obj_data.cam ) compile_obj_transform( obj, skateshop.transform ) sr_ent_push(skateshop) @@ -1908,6 +1922,7 @@ def sr_compile( collection ): path = F"{folder}{collection.name}.mdl" print( path ) + os.makedirs(os.path.dirname(path),exist_ok=True) fp = open( path, "wb" ) header = mdl_header() header.version = 101 @@ -2224,6 +2239,7 @@ class SR_MATERIAL_PANEL(bpy.types.Panel): row.prop( active_mat.SR_data, "skate_surface" ) row.prop( active_mat.SR_data, "grind_surface" ) row.prop( active_mat.SR_data, "grow_grass" ) + row.prop( active_mat.SR_data, "preview_visibile" ) #} #} @@ -2816,7 +2832,8 @@ class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup): #{ tipo: bpy.props.EnumProperty( name='Type', items=[('0','boards',''), - ('1','character','')] ) + ('1','character',''), + ('2','world','')] ) mark_rack: bpy.props.PointerProperty( \ type=bpy.types.Object, name="Board Rack", \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) @@ -3068,6 +3085,11 @@ class SR_MATERIAL_PROPERTIES(bpy.types.PropertyGroup): default=False,\ description = "Spawn grass sprites on this surface?" \ ) + preview_visibile: bpy.props.BoolProperty( \ + name="Preview visibile", \ + default=True,\ + description = "Show this material in preview models?" \ + ) blend_offset: bpy.props.FloatVectorProperty( \ name="Blend Offset", \ size=2, \ @@ -3940,6 +3962,15 @@ def cv_draw(): info_cu = Vector((1.2,0.01,0.3))*0.5 info_co = Vector((0.0,0.0,0.0))*0.5 #} + elif data.tipo == '2':#{ + rack = None + cc1 = (1.0,0.0,0.0) + cc2 = (1.0,0.5,0.0) + display_cu = Vector((1.0,1.0,0.5))*0.5 + display_co = Vector((0.0,0.0,0.5))*0.5 + info_cu = Vector((1.2,0.01,0.3))*0.5 + info_co = Vector((0.0,0.0,0.0))*0.5 + #} if rack: cv_draw_ucube( rack.matrix_world, cc, rack_cu, rack_co )