projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
chaos pt 1
[carveJwlIkooP6JGAAIwe30JlM.git]
/
blender_export.py
diff --git
a/blender_export.py
b/blender_export.py
index 1b1c4fb69e9e22ad098c73109230ffeb6303db74..51b25dd4ed0d96acfec643f5610c90fe68a81d6a 100644
(file)
--- a/
blender_export.py
+++ b/
blender_export.py
@@
-39,12
+39,14
@@
sr_entity_list = [
('ent_ccmd', 'CCmd', '', 17 ),
('ent_objective', 'Objective', '', 18 ),
('ent_challenge', 'Challenge', '', 19 ),
('ent_ccmd', 'CCmd', '', 17 ),
('ent_objective', 'Objective', '', 18 ),
('ent_challenge', 'Challenge', '', 19 ),
- ('ent_relay', 'Relay', '', 20 )
+ ('ent_relay', 'Relay', '', 20 ),
+ ('ent_miniworld', 'Mini World', '', 22 )
]
]
-MDL_VERSION_NR = 10
2
+MDL_VERSION_NR = 10
3
SR_TRIGGERABLE = [ 'ent_audio', 'ent_ccmd', 'ent_gate', 'ent_challenge', \
SR_TRIGGERABLE = [ 'ent_audio', 'ent_ccmd', 'ent_gate', 'ent_challenge', \
- 'ent_relay', 'ent_skateshop', 'ent_objective' ]
+ 'ent_relay', 'ent_skateshop', 'ent_objective', 'ent_route',\
+ 'ent_miniworld' ]
def get_entity_enum_id( alias ):
#{
def get_entity_enum_id( alias ):
#{
@@
-263,7
+265,11
@@
class ent_route(Structure):
("factive",c_float),
("board_transform",(c_float*3)*4),
("sm",mdl_submesh),
("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):
#}
class ent_water(Structure):
@@
-397,6
+403,10
@@
class ent_swspreview(Structure):
# Menu
# -----------------------------------------------------------------
# Menu
# -----------------------------------------------------------------
+class ent_menuitem_visual(Structure):
+#{
+ _fields_ = [("pstr_name",c_uint32)]
+#}
class ent_menuitem_slider(Structure):
#{
_fields_ = [("id_min",c_uint32),
class ent_menuitem_slider(Structure):
#{
_fields_ = [("id_min",c_uint32),
@@
-406,7
+416,8
@@
class ent_menuitem_slider(Structure):
#}
class ent_menuitem_button(Structure):
#{
#}
class ent_menuitem_button(Structure):
#{
- _fields_ = [("pstr",c_uint32)]
+ _fields_ = [("pstr",c_uint32),
+ ("stack_behaviour",c_uint32)]
#}
class ent_menuitem_checkmark(Structure):
#{
#}
class ent_menuitem_checkmark(Structure):
#{
@@
-420,12
+431,19
@@
class ent_menuitem_page(Structure):
("id_entrypoint",c_uint32),
("id_viewpoint",c_uint32)]
#}
("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),
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):
#{
#}
class ent_menuitem(Structure):
#{
@@
-505,6
+523,14
@@
class ent_cubemap(Structure):#{
("placeholder",c_uint32*2)]
#}
("placeholder",c_uint32*2)]
#}
+class ent_miniworld(Structure):#{
+ _fields_ = [("transform",mdl_transform),
+ ("pstr_world",c_uint32),
+ ("purpose",c_int32)]
+
+ sr_functions = { 0: 'zone' }
+#}
+
def obj_ent_type( obj ):
#{
if obj.type == 'ARMATURE': return 'mdl_armature'
def obj_ent_type( obj ):
#{
if obj.type == 'ARMATURE': return 'mdl_armature'
@@
-1316,9
+1342,14
@@
def sr_compile_menus( collection ):
sr_compile_mesh_internal( obj )
#}
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 = 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
#}
elif item.type == 3:#{
item_checkmark = item._anonymous_union.checkmark
@@
-1342,6
+1373,11
@@
def sr_compile_menus( collection ):
item_page.id_entrypoint = sr_entity_id( obj_data.newloc )
item_page.id_viewpoint = sr_entity_id( obj_data.camera )
#}
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 )
if obj_data.link0:
item.id_links[0] = sr_entity_id( obj_data.link0 )
@@
-1916,6
+1952,14
@@
def sr_compile( collection ):
cubemap.live = 60
sr_ent_push( cubemap )
#}
cubemap.live = 60
sr_ent_push( cubemap )
#}
+ elif ent_type == 'ent_miniworld':#{
+ miniworld = ent_miniworld()
+ obj_data = obj.SR_data.ent_miniworld[0]
+
+ compile_obj_transform( obj, miniworld.transform )
+ miniworld.pstr_world = sr_compile_string( obj_data.world )
+ sr_ent_push( miniworld )
+ #}
#}
#}
#}
#}
@@
-1967,6
+2011,7
@@
def sr_compile( collection ):
route.pstr_name = sr_compile_string( obj_data.alias )
route.checkpoints_start = checkpoint_count
route.checkpoints_count = 0
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]
for ci in range(3):
route.colour[ci] = obj_data.colour[ci]
@@
-2148,7
+2193,7
@@
class SR_SCENE_SETTINGS(bpy.types.PropertyGroup):
#{
use_hidden: bpy.props.BoolProperty( name="use hidden", default=False )
export_dir: bpy.props.StringProperty( name="Export Dir", subtype='DIR_PATH' )
#{
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=
Tru
e )
+ gizmos: bpy.props.BoolProperty( name="Draw Gizmos", default=
Fals
e )
panel: bpy.props.EnumProperty(
name='Panel',
panel: bpy.props.EnumProperty(
name='Panel',
@@
-2551,6
+2596,11
@@
class SR_OBJECT_ENT_ROUTE_ENTRY(bpy.types.PropertyGroup):
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_gate']))
#}
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_gate']))
#}
+class SR_OBJECT_ENT_MINIWORLD(bpy.types.PropertyGroup):
+#{
+ world: bpy.props.StringProperty( name='world UID' )
+#}
+
class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList):
#{
bl_idname = 'SR_UL_ROUTE_NODE_LIST'
class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList):
#{
bl_idname = 'SR_UL_ROUTE_NODE_LIST'
@@
-2867,11
+2917,16
@@
class SR_OBJECT_ENT_ROUTE(bpy.types.PropertyGroup):
name="Alias",\
default="Untitled Course")
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' )
@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', \
layout.label( text='Checkpoints' )
layout.template_list('SR_UL_ROUTE_NODE_LIST', 'Checkpoints', \
@@
-3120,6
+3175,10
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
newloc: bpy.props.PointerProperty( \
type=bpy.types.Object, name="New location", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_menuitem']))
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']))
camera: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Camera", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera']))
@@
-3138,6
+3197,8
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
type=bpy.types.Object, name="Checked", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_menuitem']))
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',''),
string: bpy.props.StringProperty( name="String" )
tipo: bpy.props.EnumProperty( name='Type',
items=[('0','visual',''),
@@
-3145,7
+3206,9
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
('2','page button',''),
('3','toggle', ''),
('4','slider',''),
('2','page button',''),
('3','toggle', ''),
('4','slider',''),
- ('5','page','')])
+ ('5','page',''),
+ ('6','binding',''),
+ ('7','visual(no colourize)','')])
@staticmethod
def sr_inspector( layout, data ):
@staticmethod
def sr_inspector( layout, data ):
@@
-3154,7
+3217,8
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
box = layout.box()
box.prop( data, 'tipo' )
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':#{
return
#}
elif data.tipo == '1':#{
@@
-3162,7
+3226,7
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
#}
elif data.tipo == '2':#{
box.prop( data, 'string', text='Page' )
#}
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)' )
#}
elif data.tipo == '3':#{
box.prop( data, 'string', text='Data (i32)' )
@@
-3185,6
+3249,11
@@
class SR_OBJECT_ENT_MENU_ITEM(bpy.types.PropertyGroup):
box.prop( data, 'camera', text='Viewpoint' )
return
#}
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" )
box = box.box()
box.label( text="Links" )
@@
-3324,6
+3393,7
@@
class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup):
ent_objective: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_OBJECTIVE)
ent_challenge: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_CHALLENGE)
ent_relay: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_RELAY)
ent_objective: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_OBJECTIVE)
ent_challenge: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_CHALLENGE)
ent_relay: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_RELAY)
+ ent_miniworld: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MINIWORLD)
ent_type: bpy.props.EnumProperty(
name="Type",
ent_type: bpy.props.EnumProperty(
name="Type",
@@
-4551,7
+4621,7
@@
classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\
SR_OBJECT_ENT_WORKSHOP_PREVIEW,SR_OBJECT_ENT_MENU_ITEM,\
SR_OBJECT_ENT_WORLD_INFO,SR_OBJECT_ENT_CCMD,\
SR_OBJECT_ENT_OBJECTIVE,SR_OBJECT_ENT_CHALLENGE,\
SR_OBJECT_ENT_WORKSHOP_PREVIEW,SR_OBJECT_ENT_MENU_ITEM,\
SR_OBJECT_ENT_WORLD_INFO,SR_OBJECT_ENT_CCMD,\
SR_OBJECT_ENT_OBJECTIVE,SR_OBJECT_ENT_CHALLENGE,\
- SR_OBJECT_ENT_RELAY,\
+ SR_OBJECT_ENT_RELAY,
SR_OBJECT_ENT_MINIWORLD,
\
\
SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES,
SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \
\
SR_OBJECT_PROPERTIES, SR_LIGHT_PROPERTIES, SR_BONE_PROPERTIES,
SR_MESH_PROPERTIES, SR_MATERIAL_PROPERTIES \