('ent_relay', 'Relay', '', 20 )
]
-MDL_VERSION_NR = 102
+MDL_VERSION_NR = 103
SR_TRIGGERABLE = [ 'ent_audio', 'ent_ccmd', 'ent_gate', 'ent_challenge', \
- 'ent_relay', 'ent_skateshop', 'ent_objective' ]
+ 'ent_relay', 'ent_skateshop', 'ent_objective', 'ent_route' ]
def get_entity_enum_id( alias ):
#{
("factive",c_float),
("board_transform",(c_float*3)*4),
("sm",mdl_submesh),
- ("latest_pass",c_double)]
+ ("latest_pass",c_double),
+ ("id_camera",c_uint32), # v103+
+ ]
+
+ sr_functions = { 0: 'view' }
#}
class ent_water(Structure):
# Menu
# -----------------------------------------------------------------
+class ent_menuitem_visual(Structure):
+#{
+ _fields_ = [("pstr_name",c_uint32)]
+#}
class ent_menuitem_slider(Structure):
#{
_fields_ = [("id_min",c_uint32),
#}
class ent_menuitem_button(Structure):
#{
- _fields_ = [("pstr",c_uint32)]
+ _fields_ = [("pstr",c_uint32),
+ ("stack_behaviour",c_uint32)]
#}
class ent_menuitem_checkmark(Structure):
#{
("id_entrypoint",c_uint32),
("id_viewpoint",c_uint32)]
#}
+class ent_menuitem_binding(Structure):
+#{
+ _fields_ = [("pstr_bind",c_uint32),
+ ("font_variant",c_uint32)]
+#}
class ent_menuitem_anon_union(Union):
#{
_fields_ = [("slider",ent_menuitem_slider),
("button",ent_menuitem_button),
("checkmark",ent_menuitem_checkmark),
- ("page",ent_menuitem_page)]
+ ("page",ent_menuitem_page),
+ ("visual",ent_menuitem_visual),
+ ("binding",ent_menuitem_binding)]
#}
class ent_menuitem(Structure):
#{
sr_compile_mesh_internal( obj )
#}
- if item.type == 1 or item.type == 2:#{
+ if item.type == 1 or item.type == 2 or item.type == 7:#{
item_button = item._anonymous_union.button
item_button.pstr = sr_compile_string( obj_data.string )
+ item_button.stack_behaviour = int( obj_data.stack_behaviour )
+ #}
+ elif item.type == 0:#{
+ item_visual = item._anonymous_union.visual
+ item_visual.pstr_name = sr_compile_string( obj_data.string )
#}
elif item.type == 3:#{
item_checkmark = item._anonymous_union.checkmark
item_page.id_entrypoint = sr_entity_id( obj_data.newloc )
item_page.id_viewpoint = sr_entity_id( obj_data.camera )
#}
+ elif item.type == 6:#{
+ item_binding = item._anonymous_union.binding
+ item_binding.pstr_bind = sr_compile_string( obj_data.string )
+ item_binding.font_variant = obj_data.font_variant
+ #}
if obj_data.link0:
item.id_links[0] = sr_entity_id( obj_data.link0 )
route.pstr_name = sr_compile_string( obj_data.alias )
route.checkpoints_start = checkpoint_count
route.checkpoints_count = 0
+ route.id_camera = sr_entity_id( obj_data.cam )
for ci in range(3):
route.colour[ci] = obj_data.colour[ci]
#{
use_hidden: bpy.props.BoolProperty( name="use hidden", default=False )
export_dir: bpy.props.StringProperty( name="Export Dir", subtype='DIR_PATH' )
- gizmos: bpy.props.BoolProperty( name="Draw Gizmos", default=True )
+ gizmos: bpy.props.BoolProperty( name="Draw Gizmos", default=False )
panel: bpy.props.EnumProperty(
name='Panel',
name="Alias",\
default="Untitled Course")
+ cam: bpy.props.PointerProperty( \
+ type=bpy.types.Object, name="Viewpoint", \
+ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera']))
+
@staticmethod
def sr_inspector( layout, data ):
#{
layout.prop( data[0], 'alias' )
layout.prop( data[0], 'colour' )
+ layout.prop( data[0], 'cam' )
layout.label( text='Checkpoints' )
layout.template_list('SR_UL_ROUTE_NODE_LIST', 'Checkpoints', \
newloc: bpy.props.PointerProperty( \
type=bpy.types.Object, name="New location", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_menuitem']))
+ stack_behaviour: bpy.props.EnumProperty( name='Stack Behaviour',
+ items=[('0','append',''),
+ ('1','replace','')])
+
camera: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Camera", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera']))
type=bpy.types.Object, name="Checked", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_menuitem']))
+ font_variant: bpy.props.IntProperty( name="Font Variant" )
+
string: bpy.props.StringProperty( name="String" )
tipo: bpy.props.EnumProperty( name='Type',
items=[('0','visual',''),
('2','page button',''),
('3','toggle', ''),
('4','slider',''),
- ('5','page','')])
+ ('5','page',''),
+ ('6','binding',''),
+ ('7','visual(no colourize)','')])
@staticmethod
def sr_inspector( layout, data ):
box = layout.box()
box.prop( data, 'tipo' )
- if data.tipo == '0':#{
+ if data.tipo == '0' or data.tipo == '7':#{
+ box.prop( data, 'string', text='Name' )
return
#}
elif data.tipo == '1':#{
#}
elif data.tipo == '2':#{
box.prop( data, 'string', text='Page' )
- box.prop( data, 'newloc' )
+ box.prop( data, 'stack_behaviour' )
#}
elif data.tipo == '3':#{
box.prop( data, 'string', text='Data (i32)' )
box.prop( data, 'camera', text='Viewpoint' )
return
#}
+ elif data.tipo == '6':#{
+ box.prop( data, 'string', text='ID' )
+ box.prop( data, 'font_variant' )
+ return
+ #}
box = box.box()
box.label( text="Links" )