diff --git a/pes-fmdl/CompatibilityLayer.py b/pes-fmdl/CompatibilityLayer.py index be0f557..ed35493 100644 --- a/pes-fmdl/CompatibilityLayer.py +++ b/pes-fmdl/CompatibilityLayer.py @@ -45,7 +45,23 @@ def ExportUVMaps(cls, blenderMaterial, blenderMesh, name, vertexFields): @classmethod def TriangulateMesh(cls, modifiedBlenderMesh, scene): pass + + @classmethod + def AppendToImportMenu(cls, newMenuItem): + pass + + @classmethod + def AppendToExportMenu(cls, newMenuItem): + pass + + @classmethod + def AppendScenePostUpdateEvent(cls, event): + pass + @classmethod + def RemoveSceneUpdatePostEvent(cls, eventHandler): + pass + def __init__(self): pass @@ -242,9 +258,26 @@ def AppendToImportMenu(cls, newMenuItem): def AppendToExportMenu(cls, newMenuItem): bpy.types.INFO_MT_file_export.append(newMenuItem) + @classmethod + def AppendScenePostUpdateEvent(cls, eventHandler): + bpy.app.handlers.scene_update_post.append(eventHandler) + + @classmethod + def RemoveSceneUpdatePostEvent(cls, eventHandler): + bpy.app.handlers.scene_update_post.remove(eventHandler) + + @classmethod + def RemoveFromExportMenu(cls, menuItem): + bpy.types.INFO_MT_file_export.remove(menuItem) + + @classmethod + def RemoveFromImportMenu(cls, menuItem): + bpy.types.INFO_MT_file_import.remove(menuItem) + def __init__(self): super().__init__() + class CompatibilityLayer29(CompatibilityLayerBase): @classmethod @@ -386,6 +419,22 @@ def AppendToImportMenu(cls, newMenuItem): def AppendToExportMenu(cls, newMenuItem): bpy.types.TOPBAR_MT_file_export.append(newMenuItem) + @classmethod + def AppendSceneUpdatePostEvent(cls, eventHandler): + bpy.app.handlers.depsgraph_update_post.append(eventHandler) + + @classmethod + def RemoveSceneUpdatePostEvent(cls, eventHandler): + bpy.app.handlers.depsgraph_update_post.remove(eventHandler) + + @classmethod + def RemoveFromExportMenu(cls, menuItem): + bpy.types.TOPBAR_MT_file_export.remove(menuItem) + + @classmethod + def RemoveFromImportMenu(cls, menuItem): + bpy.types.TOPBAR_MT_file_import.remove(menuItem) + def __init__(self): super().__init__() @@ -432,3 +481,15 @@ def AppendToImportMenu(self, newMenuItem): def AppendToExportMenu(self, newMenuItem): self.shim.AppendToExportMenu(newMenuItem) + + def AppendSceneUpdatePostEvent(self, eventHandler): + self.shim.AppendSceneUpdatePostEvent(eventHandler) + + def RemoveSceneUpdatePostEvent(self, eventHandler): + self.shim.RemoveSceneUpdatePostEvent(eventHandler) + + def RemoveFromExportMenu(self, menuItem): + self.shim.RemoveFromExportMenu(menuItem) + + def RemoveFromImportMenu(self, menuItem): + self.shim.RemoveFromImportMenu(menuItem) diff --git a/pes-fmdl/UI.py b/pes-fmdl/UI.py index 0280ba3..23386a8 100644 --- a/pes-fmdl/UI.py +++ b/pes-fmdl/UI.py @@ -809,14 +809,15 @@ def register(): shim.AppendToExportMenu(FMDL_Scene_FMDL_Export_MenuItem) bpy.types.TEXTURE_PT_image.append(FMDL_Texture_Load_Ftex_Button) - bpy.app.handlers.scene_update_post.append(FMDL_Mesh_BoneGroup_TrackVertexGroupUsageUpdates) + shim.AppendSceneUpdatePostEvent(FMDL_Mesh_BoneGroup_TrackVertexGroupUsageUpdates) def unregister(): - bpy.app.handlers.scene_update_post.remove(FMDL_Mesh_BoneGroup_TrackVertexGroupUsageUpdates) + shim = CompatibilityLayer.CompatibilityLayer() + shim.RemoveSceneUpdatePostEvent(FMDL_Mesh_BoneGroup_TrackVertexGroupUsageUpdates) bpy.types.TEXTURE_PT_image.remove(FMDL_Texture_Load_Ftex_Button) - bpy.types.INFO_MT_file_export.remove(FMDL_Scene_FMDL_Export_MenuItem) - bpy.types.INFO_MT_file_import.remove(FMDL_Scene_FMDL_Import_MenuItem) + shim.RemoveFromExportMenu(FMDL_Scene_FMDL_Export_MenuItem) + shim.RemoveFromImportMenu(FMDL_Scene_FMDL_Import_MenuItem) for c in classes[::-1]: bpy.utils.unregister_class(c)