X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=7c61247c67aa8d902c55f33b5e7245b6b5eb7d82;hb=a99e5f5d5c16a3e865796a96ad648e3c570d32ac;hp=00c2de474d1d902eb914fd68d90609a8c887a256;hpb=5f34184cad016aa2f8ea530b3be009703459e981;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 00c2de4..7c61247 100644 --- a/blender_export.py +++ b/blender_export.py @@ -31,7 +31,8 @@ sr_entity_list = [ ('ent_font_variant', 'Font:Variant', '', 10 ), ('ent_traffic', 'Traffic Model', '', 11 ), ('ent_skateshop', 'Skate Shop', '', 12 ), - ('ent_camera', 'Camera', '', 13 ) + ('ent_camera', 'Camera', '', 13 ), + ('ent_swspreview', 'Workshop Preview', '', 14 ) ] def get_entity_enum_id( alias ): @@ -347,6 +348,13 @@ class ent_skateshop(Structure): ("id_camera",c_uint32)] #} +class ent_swspreview(Structure): +#{ + _fields_ = [("id_camera",c_uint32), + ("id_display",c_uint32), + ("id_display1",c_uint32)] +#} + class ent_camera(Structure): #{ _fields_ = [("transform",mdl_transform), @@ -467,6 +475,10 @@ cxr_graph_mapping = \ "Color": material_tex_image("tex_normal") } } + }, + "Emission": + { + "Color": material_tex_image("tex_diffuse") } } @@ -975,7 +987,7 @@ def sr_compile_fonts( collection ): font.glyph_start = glyph_count glyph_base = data.glyphs[0].utf32 - glyph_range = data.glyphs[-1].utf32 - glyph_base + glyph_range = data.glyphs[-1].utf32+1 - glyph_base font.glyph_utf32_base = glyph_base font.glyph_count = glyph_range @@ -1382,7 +1394,7 @@ def sr_compile( collection ): elif ent_type == 'ent_camera': #{ cam = ent_camera() compile_obj_transform( obj, cam.transform ) - cam.fov = obj.data.angle + cam.fov = obj.data.angle * 45.0 sr_ent_push(cam) #} elif ent_type == 'ent_gate': #{ @@ -1517,6 +1529,14 @@ def sr_compile( collection ): compile_obj_transform( obj, skateshop.transform ) sr_ent_push(skateshop) #} + elif ent_type == 'ent_swspreview':#{ + workshop_preview = ent_swspreview() + obj_data = obj.SR_data.ent_swspreview[0] + workshop_preview.id_display = sr_entity_id( obj_data.mark_display ) + workshop_preview.id_display1 = sr_entity_id( obj_data.mark_display1) + workshop_preview.id_camera = sr_entity_id( obj_data.cam ) + sr_ent_push( workshop_preview ) + #} #} #} @@ -2409,7 +2429,8 @@ class SR_UL_FONT_GLYPH_LIST(bpy.types.UIList): s1 = c.split(factor=0.3) c = s1.column() row = c.row() - lbl = chr(item.utf32) if item.utf32 >= 32 and item.utf32 <= 126 else 'ERR' + lbl = chr(item.utf32) if item.utf32 >= 32 and item.utf32 <= 126 else \ + f'x{item.utf32:x}' row.label(text=lbl) c = s1.column() c.prop( item, 'utf32', text='', emboss=True ) @@ -2630,6 +2651,19 @@ class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup): poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) #} +class SR_OBJECT_ENT_WORKSHOP_PREVIEW(bpy.types.PropertyGroup): +#{ + mark_display: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Board Display", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) + mark_display1: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Board Display (other side)", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) + cam: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Viewpoint", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) +#} + class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): #{ ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE) @@ -2642,6 +2676,9 @@ class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): ent_font: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_FONT) ent_traffic: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_TRAFFIC) ent_skateshop: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_SKATESHOP) + ent_swspreview: \ + bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORKSHOP_PREVIEW) + ent_type: bpy.props.EnumProperty( name="Type", items=sr_entity_list, @@ -3616,6 +3653,18 @@ def cv_draw(): if info: cv_draw_ucube( info.matrix_world, cc2, info_cu, info_co ) #} + elif ent_type == 'ent_swspreview':#{ + cc1 = (0.4,0.9,0.2) + data = obj.SR_data.ent_swspreview[0] + display = data.mark_display + display1 = data.mark_display1 + display_cu = Vector((0.3,1.2,0.1))*0.5 + display_co = Vector((0.0,0.0,0.1))*0.5 + if display: + cv_draw_ucube( display.matrix_world, cc1, display_cu, display_co) + if display1: + cv_draw_ucube(display1.matrix_world, cc1, display_cu, display_co) + #} #} #} @@ -3650,6 +3699,7 @@ classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\ SR_OBJECT_ENT_GLYPH_ENTRY,\ SR_UL_FONT_VARIANT_LIST,SR_UL_FONT_GLYPH_LIST,\ SR_OBJECT_ENT_FONT,SR_OBJECT_ENT_TRAFFIC,SR_OBJECT_ENT_SKATESHOP,\ + SR_OBJECT_ENT_WORKSHOP_PREVIEW,\ \ SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES, SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \