projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
moved savedata to thread
[carveJwlIkooP6JGAAIwe30JlM.git]
/
blender_export.py
diff --git
a/blender_export.py
b/blender_export.py
index cc51987624c7c05e1408d6747f0b5a91333b8db0..32e548b4afa0d1583f4171949d0fec4e534b4886 100644
(file)
--- a/
blender_export.py
+++ b/
blender_export.py
@@
-35,6
+35,7
@@
sr_entity_list = [
('ent_swspreview', 'Workshop Preview', '', 14 ),
('ent_menuitem', 'Menu Item', '', 15 ),
('ent_worldinfo', 'World Info', '', 16 ),
('ent_swspreview', 'Workshop Preview', '', 14 ),
('ent_menuitem', 'Menu Item', '', 15 ),
('ent_worldinfo', 'World Info', '', 16 ),
+ ('ent_ccmd', 'CCmd', '', 17 )
]
def get_entity_enum_id( alias ):
]
def get_entity_enum_id( alias ):
@@
-355,10
+356,16
@@
class ent_skateshop_boards(Structure):
("id_info",c_uint32),
("id_rack",c_uint32)]
#}
("id_info",c_uint32),
("id_rack",c_uint32)]
#}
+class ent_skateshop_worlds(Structure):
+#{
+ _fields_ = [("id_display",c_uint32),
+ ("id_info",c_uint32)]
+#}
class ent_skateshop_anon_union(Union):
#{
_fields_ = [("boards",ent_skateshop_boards),
class ent_skateshop_anon_union(Union):
#{
_fields_ = [("boards",ent_skateshop_boards),
- ("character",ent_skateshop_characters)]
+ ("character",ent_skateshop_characters),
+ ("worlds",ent_skateshop_worlds)]
#}
class ent_skateshop(Structure):
#{
#}
class ent_skateshop(Structure):
#{
@@
-433,6
+440,11
@@
class ent_worldinfo(Structure):
("timezone",c_float)]
#}
("timezone",c_float)]
#}
+class ent_ccmd(Structure):
+#{
+ _fields_ = [("pstr_command",c_uint32)]
+#}
+
def obj_ent_type( obj ):
#{
if obj.type == 'ARMATURE': return 'mdl_armature'
def obj_ent_type( obj ):
#{
if obj.type == 'ARMATURE': return 'mdl_armature'
@@
-697,6
+709,7
@@
def sr_compile_material( mat ):
if mat.SR_data.skate_surface: flags |= 0x1
if mat.SR_data.grow_grass: flags |= 0x4
if mat.SR_data.grind_surface: flags |= 0x8
if mat.SR_data.skate_surface: flags |= 0x1
if mat.SR_data.grow_grass: flags |= 0x4
if mat.SR_data.grind_surface: flags |= 0x8
+ if mat.SR_data.preview_visibile: flags |= 0x40
#}
if mat.SR_data.shader == 'invisible': flags |= 0x10
if mat.SR_data.shader == 'boundary': flags |= (0x10|0x20)
#}
if mat.SR_data.shader == 'invisible': flags |= 0x10
if mat.SR_data.shader == 'boundary': flags |= (0x10|0x20)
@@
-1694,6
+1707,11
@@
def sr_compile( collection ):
charshop.id_display = sr_entity_id( obj_data.mark_display )
charshop.id_info = sr_entity_id( obj_data.mark_info )
#}
charshop.id_display = sr_entity_id( obj_data.mark_display )
charshop.id_info = sr_entity_id( obj_data.mark_info )
#}
+ elif skateshop.type == 2:#{
+ worldshop = skateshop._anonymous_union.worlds
+ worldshop.id_display = sr_entity_id( obj_data.mark_display )
+ worldshop.id_info = sr_entity_id( obj_data.mark_info )
+ #}
skateshop.id_camera = sr_entity_id( obj_data.cam )
compile_obj_transform( obj, skateshop.transform )
sr_ent_push(skateshop)
skateshop.id_camera = sr_entity_id( obj_data.cam )
compile_obj_transform( obj, skateshop.transform )
sr_ent_push(skateshop)
@@
-1715,6
+1733,12
@@
def sr_compile( collection ):
worldinfo.timezone = obj_data.timezone
sr_ent_push( worldinfo )
#}
worldinfo.timezone = obj_data.timezone
sr_ent_push( worldinfo )
#}
+ elif ent_type == 'ent_ccmd':#{
+ ccmd = ent_ccmd()
+ obj_data = obj.SR_data.ent_ccmd[0]
+ ccmd.pstr_command = sr_compile_string( obj_data.command )
+ sr_ent_push( ccmd )
+ #}
#}
#}
#}
#}
@@
-1910,6
+1934,7
@@
def sr_compile( collection ):
path = F"{folder}{collection.name}.mdl"
print( path )
path = F"{folder}{collection.name}.mdl"
print( path )
+ os.makedirs(os.path.dirname(path),exist_ok=True)
fp = open( path, "wb" )
header = mdl_header()
header.version = 101
fp = open( path, "wb" )
header = mdl_header()
header.version = 101
@@
-2226,6
+2251,7
@@
class SR_MATERIAL_PANEL(bpy.types.Panel):
row.prop( active_mat.SR_data, "skate_surface" )
row.prop( active_mat.SR_data, "grind_surface" )
row.prop( active_mat.SR_data, "grow_grass" )
row.prop( active_mat.SR_data, "skate_surface" )
row.prop( active_mat.SR_data, "grind_surface" )
row.prop( active_mat.SR_data, "grow_grass" )
+ row.prop( active_mat.SR_data, "preview_visibile" )
#}
#}
#}
#}
@@
-2663,7
+2689,7
@@
class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup):
target: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Target", \
poll=lambda self,obj: sr_filter_ent_type(obj,\
target: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Target", \
poll=lambda self,obj: sr_filter_ent_type(obj,\
- ['ent_audio','ent_skateshop']))
+ ['ent_audio','ent_skateshop'
,'ent_ccmd'
]))
@staticmethod
def sr_inspector( layout, data ):
@staticmethod
def sr_inspector( layout, data ):
@@
-2734,16
+2760,15
@@
class SR_OBJECT_ENT_AUDIO(bpy.types.PropertyGroup):
box.prop( data[0], 'flag_loop' )
box.prop( data[0], 'flag_auto' )
box.prop( data[0], 'flag_loop' )
box.prop( data[0], 'flag_auto' )
+ layout.prop( data[0], 'probability_curve' )
+
split = layout.split(factor=0.7)
c = split.column()
c.label( text='Filepath' )
c = split.column()
split = layout.split(factor=0.7)
c = split.column()
c.label( text='Filepath' )
c = split.column()
- c.label( text='Chance (0.1s)' )
-
- layout.prop( data[0], 'probability_curve' )
-
+ c.label( text='Chance' )
layout.template_list('SR_UL_AUDIO_LIST', 'Files', \
layout.template_list('SR_UL_AUDIO_LIST', 'Files', \
- data[0], 'files', data[0], 'file_index', rows=5)
+ data[0], 'files', data[0], 'file
s
_index', rows=5)
row = layout.row()
row.operator( 'skaterift.al_new_entry', text='Add' )
row = layout.row()
row.operator( 'skaterift.al_new_entry', text='Add' )
@@
-2818,7
+2843,8
@@
class SR_OBJECT_ENT_SKATESHOP(bpy.types.PropertyGroup):
#{
tipo: bpy.props.EnumProperty( name='Type',
items=[('0','boards',''),
#{
tipo: bpy.props.EnumProperty( name='Type',
items=[('0','boards',''),
- ('1','character','')] )
+ ('1','character',''),
+ ('2','world','')] )
mark_rack: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Board Rack", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker']))
mark_rack: bpy.props.PointerProperty( \
type=bpy.types.Object, name="Board Rack", \
poll=lambda self,obj: sr_filter_ent_type(obj,['ent_marker']))
@@
-2947,6
+2973,11
@@
class SR_OBJECT_ENT_WORLD_INFO(bpy.types.PropertyGroup):
timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
#}
timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
#}
+class SR_OBJECT_ENT_CCMD(bpy.types.PropertyGroup):
+#{
+ command: bpy.props.StringProperty(name="Command Line")
+#}
+
class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup):
#{
ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE)
class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup):
#{
ent_gate: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GATE)
@@
-2963,6
+2994,7
@@
class SR_OBJECT_PROPERTIES(bpy.types.PropertyGroup):
bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORKSHOP_PREVIEW)
ent_menuitem: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MENU_ITEM)
ent_worldinfo: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORLD_INFO)
bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORKSHOP_PREVIEW)
ent_menuitem: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MENU_ITEM)
ent_worldinfo: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_WORLD_INFO)
+ ent_ccmd: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_CCMD)
ent_type: bpy.props.EnumProperty(
name="Type",
ent_type: bpy.props.EnumProperty(
name="Type",
@@
-3070,6
+3102,11
@@
class SR_MATERIAL_PROPERTIES(bpy.types.PropertyGroup):
default=False,\
description = "Spawn grass sprites on this surface?" \
)
default=False,\
description = "Spawn grass sprites on this surface?" \
)
+ preview_visibile: bpy.props.BoolProperty( \
+ name="Preview visibile", \
+ default=True,\
+ description = "Show this material in preview models?" \
+ )
blend_offset: bpy.props.FloatVectorProperty( \
name="Blend Offset", \
size=2, \
blend_offset: bpy.props.FloatVectorProperty( \
name="Blend Offset", \
size=2, \
@@
-3942,6
+3979,15
@@
def cv_draw():
info_cu = Vector((1.2,0.01,0.3))*0.5
info_co = Vector((0.0,0.0,0.0))*0.5
#}
info_cu = Vector((1.2,0.01,0.3))*0.5
info_co = Vector((0.0,0.0,0.0))*0.5
#}
+ elif data.tipo == '2':#{
+ rack = None
+ cc1 = (1.0,0.0,0.0)
+ cc2 = (1.0,0.5,0.0)
+ display_cu = Vector((1.0,1.0,0.5))*0.5
+ display_co = Vector((0.0,0.0,0.5))*0.5
+ info_cu = Vector((1.2,0.01,0.3))*0.5
+ info_co = Vector((0.0,0.0,0.0))*0.5
+ #}
if rack:
cv_draw_ucube( rack.matrix_world, cc, rack_cu, rack_co )
if rack:
cv_draw_ucube( rack.matrix_world, cc, rack_cu, rack_co )
@@
-4068,7
+4114,7
@@
classes = [ SR_INTERFACE, SR_MATERIAL_PANEL,\
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_ENT_MENU_ITEM,\
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_ENT_MENU_ITEM,\
- SR_OBJECT_ENT_WORLD_INFO,\
+ SR_OBJECT_ENT_WORLD_INFO,
SR_OBJECT_ENT_CCMD,
\
\
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 \