("pstr_author",c_uint32), # unused
("pstr_desc",c_uint32), # unused
("timezone",c_float),
- ("pstr_skybox",c_uint32)]
+ ("pstr_skybox",c_uint32),
+ ("flags",c_uint32)]
#}
class ent_ccmd(Structure):
_fields_ = [("transform",mdl_transform),
("submesh_start",c_uint32),
("submesh_count",c_uint32),
- ("flags",c_uint32)]
+ ("flags",c_uint32),
+ ("pstr_alias",c_uint32)]
#}
def obj_ent_type( obj ):
if node == None:#{
_graph_read.extracted = []
+ done = False
for node_idname in node_def:#{
for n in mat.node_tree.nodes:#{
if n.name == node_idname:#{
node_def = node_def[node_idname]
node = n
+ done = True
break
#}
#}
+ if done: break
#}
#}
if mat.SR_data.shader == 'standard': m.shader = 0
if mat.SR_data.shader == 'standard_cutout': m.shader = 1
+ if mat.SR_data.shader == 'foliage': m.shader = 10
if mat.SR_data.shader == 'terrain_blend':#{
m.shader = 2
#}
if mat.SR_data.shader in ['standard', 'standard_cutout', 'terrain_blend', \
- 'vertex_blend', 'fxglow', 'cubemap' ]: #{
+ 'vertex_blend', 'fxglow', 'cubemap', \
+ 'foliage' ]: #{
if 'tex_diffuse' in inf:
m.tex_diffuse = sr_compile_texture(inf['tex_diffuse'])
#}
#}
#--------------------------
- print( F'[SR] {i: 3}/{mesh_count} {obj.name:<40}', end='\r' )
+ print( F'[SR] {i: 3}/{mesh_count} {obj.name:<40}' )
sr_compile_mesh( obj )
#}
#}
worldinfo.pstr_name = sr_compile_string( obj_data.name )
worldinfo.pstr_author = sr_compile_string( obj_data.author )
worldinfo.pstr_desc = sr_compile_string( obj_data.desc )
- worldinfo.timezone = obj_data.timezone
+
+ flags = 0x00
+
+ if obj_data.fix_time:#{
+ worldinfo.timezone = obj_data.fixed_time
+ flags |= 0x1
+ #}
+ else:
+ worldinfo.timezone = obj_data.timezone
+
+ worldinfo.flags = flags
worldinfo.pstr_skybox = sr_compile_string( obj_data.skybox )
sr_ent_push( worldinfo )
#}
#}
elif ent_type == 'ent_prop':#{
prop = ent_prop()
+ obj_data = obj.SR_data.ent_prop[0]
compile_obj_transform( obj, prop.transform )
prop.submesh_start, prop.submesh_count, _ = \
sr_compile_mesh_internal( obj )
- prop.flags = 0
+ prop.flags = obj_data.flags
+ prop.pstr_alias = sr_compile_string( obj_data.alias )
sr_ent_push( prop )
#}
#}
_.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()
box.prop( active_mat.SR_data, "cubemap" )
box.prop( active_mat.SR_data, "tint" )
#}
+
+ _.layout.label( text="" )
+ _.layout.label( text="advanced (you probably don't want to edit these)" )
+ _.layout.prop( active_mat.SR_data, "tex_diffuse_rt" )
#}
#}
class SR_OBJECT_ENT_MARKER(bpy.types.PropertyGroup):
#{
alias: bpy.props.StringProperty()
+ flags: bpy.props.IntProperty()
#}
class SR_OBJECT_ENT_GLYPH(bpy.types.PropertyGroup):
name: bpy.props.StringProperty(name="Name")
desc: bpy.props.StringProperty(name="Description")
author: bpy.props.StringProperty(name="Author")
- timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
skybox: bpy.props.StringProperty(name="Skybox")
+
+ fix_time: bpy.props.BoolProperty(name="Fix Time")
+ timezone: bpy.props.FloatProperty(name="Timezone(hrs) (UTC0 +hrs)")
+ fixed_time: bpy.props.FloatProperty(name="Fixed Time (0-1)")
+
+ @staticmethod
+ def sr_inspector( layout, data ):#{
+ layout.prop( data[0], 'name' )
+ layout.prop( data[0], 'desc' )
+ layout.prop( data[0], 'author' )
+
+ layout.prop( data[0], 'fix_time' )
+ if data[0].fix_time:
+ layout.prop( data[0], 'fixed_time' )
+ else:
+ layout.prop( data[0], 'timezone' )
+ #}
#}
class SR_OBJECT_ENT_CCMD(bpy.types.PropertyGroup):
ent_volume: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_VOLUME)
ent_audio: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_AUDIO)
ent_marker: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MARKER)
+ ent_prop: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_MARKER)
ent_glyph: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_GLYPH)
ent_font: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_FONT)
ent_traffic: bpy.props.CollectionProperty(type=SR_OBJECT_ENT_TRAFFIC)
('boundary','Boundary',''),
('fxglow','FX Glow',''),
('cubemap','Cubemap',''),
- ('walking','Walking','')
+ ('walking','Walking',''),
+ ('foliage','Foliage','')
])
surface_prop: bpy.props.EnumProperty(
('1','wood',''),
('2','grass',''),
('3','tiles',''),
- ('4','metal','')
+ ('4','metal',''),
+ ('5','snow (low friction)',''),
+ ('6','sand (medium friction)','')
])
collision: bpy.props.BoolProperty( \