the great server lever
[carveJwlIkooP6JGAAIwe30JlM.git] / blender_export.py
index 5eb5975deefd5ffa90abd7d8ea54d3786604c3f2..8b0bd104b88aef9a9ab0a9b747423b6a0810181d 100644 (file)
@@ -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):
@@ -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
 #}
@@ -1885,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)
@@ -2502,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()
@@ -3165,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']))
@@ -3174,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']))
@@ -3586,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 )
 #}
 
 # ---------------------------------------------------------------------------- #
@@ -4506,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 )