A complete workshop implementation, I guess
[carveJwlIkooP6JGAAIwe30JlM.git] / blender_export.py
index 73d17059d19fded822a9af16c95c818104bae03d..7c61247c67aa8d902c55f33b5e7245b6b5eb7d82 100644 (file)
@@ -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),
@@ -1386,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': #{
@@ -1521,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 )
+         #}
       #}
    #}
 
@@ -2635,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)
@@ -2647,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,
@@ -3621,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)
+         #}
       #}
    #}
 
@@ -3655,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 \