No need for material tilesheet flag
This commit is contained in:
parent
3c25095c94
commit
c81d4949ca
|
@ -1964,8 +1964,7 @@ class ArmoryExporter:
|
|||
elif not bpy.data.worlds['Arm'].arm_minimize:
|
||||
self.output['name'] += '.json'
|
||||
|
||||
# Fix material variants
|
||||
# Skinned and non-skined objects can not share material
|
||||
# Create unique material variants for skinning, tilesheets, particles
|
||||
matvars = []
|
||||
matslots = []
|
||||
for bo in scene_objects:
|
||||
|
@ -1983,6 +1982,21 @@ class ArmoryExporter:
|
|||
mat.name = mat_name
|
||||
matvars.append(mat)
|
||||
slot.material = mat
|
||||
elif bo.arm_tilesheet != '':
|
||||
for slot in bo.material_slots:
|
||||
if slot.material == None or slot.material.library != None:
|
||||
continue
|
||||
if slot.material.name.endswith('_armtile'):
|
||||
continue
|
||||
matslots.append(slot)
|
||||
mat_name = slot.material.name + '_armtile'
|
||||
mat = bpy.data.materials.get(mat_name)
|
||||
if mat == None:
|
||||
mat = slot.material.copy()
|
||||
mat.name = mat_name
|
||||
mat.arm_tilesheet_flag = True
|
||||
matvars.append(mat)
|
||||
slot.material = mat
|
||||
# Particle and non-particle objects can not share material
|
||||
for psys in bpy.data.particles:
|
||||
bo = psys.instance_object
|
||||
|
@ -2175,7 +2189,7 @@ class ArmoryExporter:
|
|||
|
||||
# Remove created material variants
|
||||
for slot in matslots: # Set back to original material
|
||||
orig_mat = bpy.data.materials[slot.material.name[:-8]] # _armskin or _armpart
|
||||
orig_mat = bpy.data.materials[slot.material.name[:-8]] # _armskin, _armpart, _armtile
|
||||
orig_mat.export_uvs = slot.material.export_uvs
|
||||
orig_mat.export_vcols = slot.material.export_vcols
|
||||
orig_mat.export_tangents = slot.material.export_tangents
|
||||
|
|
|
@ -142,7 +142,7 @@ def make(context_id, rpasses, shadowmap=False):
|
|||
if con_depth.is_elem('tex'):
|
||||
vert.add_out('vec2 texCoord')
|
||||
vert.add_uniform('float texUnpack', link='_texUnpack')
|
||||
if mat_state.material.arm_tilesheet_mat:
|
||||
if mat_state.material.arm_tilesheet_flag:
|
||||
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
|
||||
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
|
||||
else:
|
||||
|
|
|
@ -122,7 +122,7 @@ def make_base(con_mesh, parse_opacity):
|
|||
if con_mesh.is_elem('tex'):
|
||||
vert.add_out('vec2 texCoord')
|
||||
vert.add_uniform('float texUnpack', link='_texUnpack')
|
||||
if mat_state.material.arm_tilesheet_mat:
|
||||
if mat_state.material.arm_tilesheet_flag:
|
||||
if mat_state.material.arm_particle_flag and rpdat.arm_particles == 'GPU':
|
||||
make_particle.write_tilesheet(vert)
|
||||
else:
|
||||
|
@ -301,7 +301,7 @@ def make_forward_mobile(con_mesh):
|
|||
if con_mesh.is_elem('tex'):
|
||||
vert.add_out('vec2 texCoord')
|
||||
vert.add_uniform('float texUnpack', link='_texUnpack')
|
||||
if mat_state.material.arm_tilesheet_mat:
|
||||
if mat_state.material.arm_tilesheet_flag:
|
||||
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
|
||||
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
|
||||
else:
|
||||
|
@ -451,7 +451,7 @@ def make_forward_solid(con_mesh):
|
|||
if con_mesh.is_elem('tex'):
|
||||
vert.add_out('vec2 texCoord')
|
||||
vert.add_uniform('float texUnpack', link='_texUnpack')
|
||||
if mat_state.material.arm_tilesheet_mat:
|
||||
if mat_state.material.arm_tilesheet_flag:
|
||||
vert.add_uniform('vec2 tilesheetOffset', '_tilesheetOffset')
|
||||
vert.write('texCoord = tex * texUnpack + tilesheetOffset;')
|
||||
else:
|
||||
|
|
|
@ -187,9 +187,9 @@ def init_properties():
|
|||
('spherical', 'Spherical', 'Spherical'),
|
||||
('cylindrical', 'Cylindrical', 'Cylindrical')],
|
||||
name="Billboard", default='off', description="Track camera", update=assets.invalidate_shader_cache)
|
||||
bpy.types.Material.arm_tilesheet_flag = BoolProperty(name="Tilesheet Flag", description="This material is used for tilesheet", default=False)
|
||||
bpy.types.Material.arm_particle_flag = BoolProperty(name="Particle Flag", description="This material is used for particles", default=False)
|
||||
bpy.types.Material.arm_particle_fade = BoolProperty(name="Particle Fade", description="Fade particles in and out", default=False)
|
||||
bpy.types.Material.arm_tilesheet_mat = BoolProperty(name="Tilesheet", description="Generate tilesheet shaders", default=False)
|
||||
bpy.types.Material.arm_blending = BoolProperty(name="Blending", description="Enable additive blending", default=False)
|
||||
bpy.types.Material.arm_blending_source = EnumProperty(
|
||||
items=[('blend_one', 'One', 'One'),
|
||||
|
|
|
@ -215,7 +215,6 @@ class MaterialPropsPanel(bpy.types.Panel):
|
|||
layout.prop(mat, 'arm_custom_material')
|
||||
layout.prop(mat, 'arm_skip_context')
|
||||
layout.prop(mat, 'arm_particle_fade')
|
||||
layout.prop(mat, 'arm_tilesheet_mat')
|
||||
layout.prop(mat, 'arm_billboard')
|
||||
layout.prop(mat, 'arm_blending')
|
||||
col = layout.column()
|
||||
|
|
Loading…
Reference in a new issue