X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=8b0bd104b88aef9a9ab0a9b747423b6a0810181d;hb=e913a28dff24a331d0ecf3f0600d23a46ce0f307;hp=36ca3681d866831fdf74430cc34176450c85435a;hpb=1a7f4a35e88698bdb45c90f646f1645589d5511c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 36ca368..8b0bd10 100644 --- a/blender_export.py +++ b/blender_export.py @@ -382,17 +382,24 @@ class ent_skateshop_worlds(Structure): _fields_ = [("id_display",c_uint32), ("id_info",c_uint32)] #} +class ent_skateshop_server(Structure): +#{ + _fields_ = [("id_lever",c_uint32)] +#} class ent_skateshop_anon_union(Union): #{ _fields_ = [("boards",ent_skateshop_boards), ("character",ent_skateshop_characters), - ("worlds",ent_skateshop_worlds)] + ("worlds",ent_skateshop_worlds), + ("server",ent_skateshop_server)] #} class ent_skateshop(Structure): #{ _fields_ = [("transform",mdl_transform), ("type",c_uint32), ("id_camera",c_uint32), ("_anonymous_union",ent_skateshop_anon_union)] + + sr_functions = { 0: 'trigger' } #} class ent_swspreview(Structure): @@ -528,7 +535,7 @@ class ent_cubemap(Structure):#{ class ent_miniworld(Structure):#{ _fields_ = [("transform",mdl_transform), ("pstr_world",c_uint32), - ("purpose",c_int32), + ("camera",c_uint32), ("proxy",c_uint32)] sr_functions = { 0: 'zone', 1: 'leave' } @@ -910,6 +917,10 @@ def sr_compile_material( mat ):#{ m.tex_diffuse = sr_compile_texture(inf['tex_diffuse']) #} + if mat.SR_data.tex_diffuse_rt >= 0:#{ + m.tex_diffuse = 0x80000000 | mat.SR_data.tex_diffuse_rt + #} + sr_compile.material_data.extend( bytearray(m) ) return index #} @@ -1851,7 +1862,10 @@ def sr_compile( collection ): if obj_data.target:#{ volume.target = sr_entity_id( obj_data.target ) volume._anon.trigger.event = obj_data.target_event - volume._anon.trigger.event_leave = obj_data.target_event_leave + + ev = 0xffffffff if obj_data.target_event_leave < 0 else \ + obj_data.target_event_leave + volume._anon.trigger.event_leave = ev #} sr_ent_push(volume) @@ -1882,6 +1896,10 @@ def sr_compile( collection ): worldshop.id_display = sr_entity_id( obj_data.mark_display ) worldshop.id_info = sr_entity_id( obj_data.mark_info ) #} + elif skateshop.type == 3:#{ + server = skateshop._anonymous_union.server + server.id_lever = sr_entity_id( obj_data.mark_display ) + #} skateshop.id_camera = sr_entity_id( obj_data.cam ) compile_obj_transform( obj, skateshop.transform ) sr_ent_push(skateshop) @@ -1972,6 +1990,7 @@ def sr_compile( collection ): compile_obj_transform( obj, miniworld.transform ) miniworld.pstr_world = sr_compile_string( obj_data.world ) miniworld.proxy = sr_entity_id( obj_data.proxy ) + miniworld.camera = sr_entity_id( obj_data.camera ) sr_ent_push( miniworld ) #} elif ent_type == 'ent_prop':#{ @@ -2498,6 +2517,7 @@ class SR_MATERIAL_PANEL(bpy.types.Panel): _.layout.prop( active_mat.SR_data, "shader" ) _.layout.prop( active_mat.SR_data, "surface_prop" ) _.layout.prop( active_mat.SR_data, "collision" ) + _.layout.prop( active_mat.SR_data, "tex_diffuse_rt" ) if active_mat.SR_data.collision:#{ box = _.layout.box() @@ -2624,6 +2644,9 @@ class SR_OBJECT_ENT_MINIWORLD(bpy.types.PropertyGroup): proxy: bpy.props.PointerProperty( \ type=bpy.types.Object, name='proxy', \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_prop'])) + camera: bpy.props.PointerProperty( \ + type=bpy.types.Object, name="Camera", \ + poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) #} class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList): @@ -2974,7 +2997,7 @@ class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup):#{ type=bpy.types.Object, name="Target", \ poll=lambda self,obj: sr_filter_ent_type(obj,SR_TRIGGERABLE)) target_event: bpy.props.IntProperty( name="Enter Ev" ) - target_event_leave: bpy.props.IntProperty( name="Leave Ev" ) + target_event_leave: bpy.props.IntProperty( name="Leave Ev", default=-1 ) @staticmethod def inspect_target( layout, data, propname, evs = ['_event'] ):#{ @@ -3158,7 +3181,8 @@ class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup): tipo: bpy.props.EnumProperty( name='Type', items=[('0','boards',''), ('1','character',''), - ('2','world','')] ) + ('2','world',''), + ('4','server','')] ) mark_rack: bpy.props.PointerProperty( \ type=bpy.types.Object, name="Board Rack", \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker'])) @@ -3167,7 +3191,8 @@ class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup): 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'])) + poll=lambda self,obj: sr_filter_ent_type(obj,\ + ['ent_marker','ent_prop'])) cam: bpy.props.PointerProperty( \ type=bpy.types.Object, name="Viewpoint", \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera'])) @@ -3579,6 +3604,8 @@ class SR_MATERIAL_PROPERTIES(bpy.types.PropertyGroup): cubemap: bpy.props.PointerProperty( \ type=bpy.types.Object, name="cubemap", \ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_cubemap'])) + + tex_diffuse_rt: bpy.props.IntProperty( name="diffuse: RT index", default=-1 ) #} # ---------------------------------------------------------------------------- # @@ -4499,6 +4526,11 @@ def cv_draw():#{ display = None info = None #} + elif data.tipo == '4':#{ + rack = None + display = None + info = None + #} if rack: cv_draw_ucube( rack.matrix_world, cc, rack_cu, rack_co )