X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=b533afee8927e6aa01a6b3ac6c70775b9c76cde9;hb=872ad3e040f22df357929d3778a955ae8c4ac52b;hp=861d69249efbbfa640412cbe35b216dbbd42229c;hpb=926a64f679a23d8b0f3594d73405d2486c398a59;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 861d692..b533afe 100644 --- a/blender_export.py +++ b/blender_export.py @@ -30,6 +30,7 @@ sr_entity_list = [ ('ent_font', 'Font', '', 9 ), ('ent_font_variant', 'Font:Variant', '', 10 ), ('ent_traffic', 'Traffic Model', '', 11 ), + ('ent_skateshop', 'Skate Shop', '', 12 ) ] def get_entity_enum_id( alias ): @@ -271,19 +272,13 @@ class volume_union(Union): ("particles",volume_particles)] #} -class ent_index(Structure): -#{ - _fields_ = [("type",c_uint32), - ("index",c_uint32)] -#} - class ent_volume(Structure): #{ _fields_ = [("transform",mdl_transform), ("to_world",(c_float*3)*4), ("to_local",(c_float*3)*4), ("type",c_uint32), - ("target",ent_index), + ("target",c_uint32), ("_anon",volume_union)] #} @@ -342,6 +337,14 @@ class ent_traffic(Structure): ("index",c_uint32)] #} +class ent_skateshop(Structure): +#{ + _fields_ = [("transform",mdl_transform), + ("id_display",c_uint32), + ("id_info",c_uint32), + ("id_rack",c_uint32)] +#} + def obj_ent_type( obj ): #{ if obj.type == 'ARMATURE': return 'mdl_armature' @@ -677,6 +680,14 @@ def sr_armature_bones( armature ): yield from _recurse_bone( b ) #} +def sr_entity_id( obj ): +#{ + tipo = get_entity_enum_id( obj_ent_type(obj) ) + index = sr_compile.entity_ids[ obj.name ] + + return (tipo&0xffff)<<16 | (index&0xffff) +#} + # Returns submesh_start,count and armature_id def sr_compile_mesh_internal( obj ): #{ @@ -1470,9 +1481,7 @@ def sr_compile( collection ): compile_obj_transform( obj, volume.transform ) if obj_data.target:#{ - target = obj_data.target - volume.target.type = get_entity_enum_id( obj_ent_type(target) ) - volume.target.index = sr_compile.entity_ids[ target.name ] + volume.target = sr_entity_id( obj_data.target ) #} sr_ent_push(volume) @@ -1483,6 +1492,15 @@ def sr_compile( collection ): compile_obj_transform( obj, marker.transform ) sr_ent_push(marker) #} + elif ent_type == 'ent_skateshop':#{ + skateshop = ent_skateshop() + obj_data = obj.SR_data.ent_skateshop[0] + skateshop.id_display = sr_entity_id( obj_data.mark_display ) + skateshop.id_info = sr_entity_id( obj_data.mark_info ) + skateshop.id_rack = sr_entity_id( obj_data.mark_rack ) + compile_obj_transform( obj, skateshop.transform ) + sr_ent_push(skateshop) + #} #} #} @@ -2428,7 +2446,8 @@ class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup): target: bpy.props.PointerProperty( \ type=bpy.types.Object, name="Target", \ - poll=lambda self,obj: sr_filter_ent_type(obj,['ent_audio'])) + poll=lambda self,obj: sr_filter_ent_type(obj,\ + ['ent_audio','ent_skateshop'])) @staticmethod def sr_inspector( layout, data ): @@ -2579,6 +2598,19 @@ class SR_OBJECT_ENT_TRAFFIC(bpy.types.PropertyGroup): speed: bpy.props.FloatProperty(default=1.0) #} +class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup): +#{ + mark_rack: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Board Rack", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) + mark_display: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Selected Board Display", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) + mark_info: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Selected Board Info", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) +#} + class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): #{ ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE) @@ -2590,6 +2622,7 @@ class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup): ent_glyph: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GLYPH) 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_type: bpy.props.EnumProperty( name="Type", items=sr_entity_list, @@ -3540,6 +3573,30 @@ def cv_draw(): #} #} #} + elif ent_type == 'ent_skateshop':#{ + cc = (0.0,0.9,0.6) + cc1 = (0.4,0.9,0.2) + cc2 = (0.9,0.6,0.1) + + data = obj.SR_data.ent_skateshop[0] + display = data.mark_display + info = data.mark_info + rack = data.mark_rack + + rack_cu = Vector((3.15,2.0,0.1))*0.5 + rack_co = Vector((0.0,0.0,0.0)) + display_cu = Vector((0.2,1.2,0.1))*0.5 + display_co = Vector((0.0,0.0,0.1))*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 ) + if display: + cv_draw_ucube( display.matrix_world, cc1, display_cu, display_co) + if info: + cv_draw_ucube( info.matrix_world, cc2, info_cu, info_co ) + #} #} #} @@ -3573,7 +3630,7 @@ classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\ SR_OBJECT_ENT_FONT_VARIANT, 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_FONT,SR_OBJECT_ENT_TRAFFIC,SR_OBJECT_ENT_SKATESHOP,\ \ SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES, SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \