MDL properties in object panel are back

This commit is contained in:
khreathor 2019-01-16 05:15:37 +01:00 committed by Bill Currie
parent 31fa7a81ef
commit 3913febace
2 changed files with 44 additions and 40 deletions

View file

@ -64,35 +64,28 @@ EFFECTS=(
('EF_TRACER2', "Tracer 2", "Orange split trail + rotate"), ('EF_TRACER2', "Tracer 2", "Orange split trail + rotate"),
('EF_TRACER3', "Tracer 3", "Purple split trail"), ('EF_TRACER3', "Tracer 3", "Purple split trail"),
) )
'''
class QFMDLSettings(bpy.types.PropertyGroup):
# eyeposition = FloatVectorProperty(
# name="Eye Position",
# description="View possion relative to object origin")
# synctype = EnumProperty(
# items=SYNCTYPE,
# name="Sync Type",
# description="Add random time offset for automatic animations")
# rotate = BoolProperty(
# name="Rotate",
# description="Rotate automatically (for pickup items)")
# effects = EnumProperty(
# items=EFFECTS,
# name="Effects",
# description="Particle trail effects")
# #doesn't work :(
# #script = PointerProperty(
# # type=bpy.types.Object,
# # name="Script",
# # description="Script for animating frames and skins")
# xform = BoolProperty( class QFMDLSettings(bpy.types.PropertyGroup):
# name="Auto transform", eyeposition = FloatVectorProperty(
# description="Auto-apply location/rotation/scale when exporting", name="Eye Position",
# default=True) description="View possion relative to object origin")
# md16 = BoolProperty( synctype = EnumProperty(
# name="16-bit", items=SYNCTYPE,
# description="16 bit vertex coordinates: QuakeForge only") name="Sync Type",
description="Add random time offset for automatic animations")
rotate = BoolProperty(
name="Rotate",
description="Rotate automatically (for pickup items)")
effects = EnumProperty(
items=EFFECTS,
name="Effects",
description="Particle trail effects")
#doesn't work :(
#script = PointerProperty(
# type=bpy.types.Object,
# name="Script",
# description="Script for animating frames and skins")
xform = BoolProperty( xform = BoolProperty(
name="Auto transform", name="Auto transform",
@ -101,10 +94,16 @@ EFFECTS=(
md16 = BoolProperty( md16 = BoolProperty(
name="16-bit", name="16-bit",
description="16 bit vertex coordinates: QuakeForge only") description="16 bit vertex coordinates: QuakeForge only")
script = StringProperty( xform = BoolProperty(
name="Script", name="Auto transform",
description="Script for animating frames and skins") description="Auto-apply location/rotation/scale when exporting",
''' default=True)
md16 = BoolProperty(
name="16-bit",
description="16 bit vertex coordinates: QuakeForge only")
#script = StringProperty(
# name="Script",
# description="Script for animating frames and skins")
class ImportMDL6(bpy.types.Operator, ImportHelper): class ImportMDL6(bpy.types.Operator, ImportHelper):
'''Load a Quake MDL (v6) File''' '''Load a Quake MDL (v6) File'''
@ -162,18 +161,23 @@ class ExportMDL6(bpy.types.Operator, ExportHelper):
keywords = self.as_keywords (ignore=("check_existing", "filter_glob")) keywords = self.as_keywords (ignore=("check_existing", "filter_glob"))
return export_mdl.export_mdl(self, context, **keywords) return export_mdl.export_mdl(self, context, **keywords)
'''
class OBJECT_PT_MDLPanel(bpy.types.Panel): class OBJECT_PT_MDLPanel(bpy.types.Panel):
bl_label = "MDL Properties"
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'
bl_context = 'object' bl_context = 'object'
bl_label = 'QF MDL' bl_options = {'DEFAULT_CLOSED'}
@classmethod @classmethod
def poll(cls, context): def poll(cls, context):
obj = context.active_object obj = context.active_object
return obj and obj.type == 'MESH' return obj and obj.type == 'MESH'
def draw_header(self, context):
layout = self.layout
obj = context.object
layout.prop(obj, "select", text="")
def draw(self, context): def draw(self, context):
layout = self.layout layout = self.layout
obj = context.active_object obj = context.active_object
@ -184,7 +188,6 @@ class OBJECT_PT_MDLPanel(bpy.types.Panel):
layout.prop(obj.qfmdl, "script") layout.prop(obj.qfmdl, "script")
layout.prop(obj.qfmdl, "xform") layout.prop(obj.qfmdl, "xform")
layout.prop(obj.qfmdl, "md16") layout.prop(obj.qfmdl, "md16")
'''
def menu_func_import(self, context): def menu_func_import(self, context):
self.layout.operator(ImportMDL6.bl_idname, text="Quake MDL (.mdl)") self.layout.operator(ImportMDL6.bl_idname, text="Quake MDL (.mdl)")
@ -194,7 +197,8 @@ def menu_func_export(self, context):
self.layout.operator(ExportMDL6.bl_idname, text="Quake MDL (.mdl)") self.layout.operator(ExportMDL6.bl_idname, text="Quake MDL (.mdl)")
classes = ( classes = (
#OBJECT_PT_MDLPanel, QFMDLSettings,
OBJECT_PT_MDLPanel,
ImportMDL6, ImportMDL6,
ExportMDL6 ExportMDL6
) )
@ -203,6 +207,8 @@ def register():
for cls in classes: for cls in classes:
bpy.utils.register_class(cls) bpy.utils.register_class(cls)
bpy.types.Object.qfmdl = PointerProperty(type=QFMDLSettings)
bpy.types.TOPBAR_MT_file_import.append(menu_func_import) bpy.types.TOPBAR_MT_file_import.append(menu_func_import)
bpy.types.TOPBAR_MT_file_export.append(menu_func_export) bpy.types.TOPBAR_MT_file_export.append(menu_func_export)

View file

@ -380,7 +380,6 @@ def parse_flags(flags):
else: else:
return 'EF_NONE' return 'EF_NONE'
'''
def set_properties(mdl): def set_properties(mdl):
mdl.obj.qfmdl.eyeposition = mdl.eyeposition mdl.obj.qfmdl.eyeposition = mdl.eyeposition
try: try:
@ -389,9 +388,8 @@ def set_properties(mdl):
mdl.obj.qfmdl.synctype = 'ST_SYNC' mdl.obj.qfmdl.synctype = 'ST_SYNC'
mdl.obj.qfmdl.rotate = (mdl.flags & MDL.EF_ROTATE) and True or False mdl.obj.qfmdl.rotate = (mdl.flags & MDL.EF_ROTATE) and True or False
mdl.obj.qfmdl.effects = parse_flags(mdl.flags) mdl.obj.qfmdl.effects = parse_flags(mdl.flags)
mdl.obj.qfmdl.script = mdl.text.name #FIXME really want the text object #mdl.obj.qfmdl.script = mdl.text.name #FIXME really want the text object
mdl.obj.qfmdl.md16 = (mdl.ident == "MD16") mdl.obj.qfmdl.md16 = (mdl.ident == "MD16")
'''
def import_mdl(operator, context, filepath, **opts): def import_mdl(operator, context, filepath, **opts):
bpy.context.preferences.edit.use_global_undo = False bpy.context.preferences.edit.use_global_undo = False
@ -422,7 +420,7 @@ def import_mdl(operator, context, filepath, **opts):
merge_frames(mdl) merge_frames(mdl)
build_actions(mdl) build_actions(mdl)
write_text(mdl) write_text(mdl)
#set_properties(mdl) #TODO: bring it back set_properties(mdl)
mdl.mesh.update() mdl.mesh.update()