From 6da09c309d756cecac66ac27257414c36f9b51b7 Mon Sep 17 00:00:00 2001
From: Julien Duroure <julien.duroure@gmail.com>
Date: Sun, 6 Feb 2022 16:51:03 +0100
Subject: [PATCH] glTF exporter: remove proxy management

---
 io_scene_gltf2/__init__.py                           |  2 +-
 io_scene_gltf2/blender/exp/gltf2_blender_gather.py   | 12 ++++--------
 .../gltf2_blender_gather_animation_channel_target.py |  6 ++----
 .../exp/gltf2_blender_gather_animation_channels.py   |  3 +--
 ...tf2_blender_gather_animation_sampler_keyframes.py |  3 +--
 .../blender/exp/gltf2_blender_gather_nodes.py        |  8 +++-----
 6 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index dc8abae32..d720d8525 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
 bl_info = {
     'name': 'glTF 2.0 format',
     'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin SchmithĂĽsen, Jim Eckerlein, and many external contributors',
-    "version": (3, 2, 1),
+    "version": (3, 2, 2),
     'blender': (3, 1, 0),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather.py
index 6f68c19ee..3a33c074f 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather.py
@@ -51,9 +51,8 @@ def __gather_scene(blender_scene, export_settings):
         nodes=[]
     )
 
-    for _blender_object in [obj for obj in blender_scene.objects if obj.proxy is None]:
-        if _blender_object.parent is None:
-            blender_object = _blender_object.proxy if _blender_object.proxy else _blender_object
+    for blender_object in blender_scene.objects:
+        if blender_object.parent is None:
             node = gltf2_blender_gather_nodes.gather_node(
                 blender_object,
                 blender_object.library.name if blender_object.library else None,
@@ -70,17 +69,14 @@ def __gather_animations(blender_scene, export_settings):
     animations = []
     merged_tracks = {}
 
-    for _blender_object in blender_scene.objects:
-
-        blender_object = _blender_object.proxy if _blender_object.proxy else _blender_object
+    for blender_object in blender_scene.objects:
 
         # First check if this object is exported or not. Do not export animation of not exported object
         obj_node = gltf2_blender_gather_nodes.gather_node(blender_object,
             blender_object.library.name if blender_object.library else None,
             blender_scene, None, export_settings)
         if obj_node is not None:
-            # Check was done on armature, but use here the _proxy object, because this is where the animation is
-            animations_, merged_tracks = gltf2_blender_gather_animations.gather_animations(_blender_object, merged_tracks, len(animations), export_settings)
+            animations_, merged_tracks = gltf2_blender_gather_animations.gather_animations(blender_object, merged_tracks, len(animations), export_settings)
             animations += animations_
 
     if export_settings['gltf_nla_strips'] is False:
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py
index 890ce0aba..ed9c5f8ce 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py
@@ -86,13 +86,11 @@ def __gather_node(channels: typing.Tuple[bpy.types.FCurve],
 
         if isinstance(blender_bone, bpy.types.PoseBone):
             if export_settings["gltf_def_bones"] is False:
-                obj = blender_object.proxy if blender_object.proxy else blender_object
-                return gltf2_blender_gather_joints.gather_joint(obj, blender_bone, export_settings)
+                return gltf2_blender_gather_joints.gather_joint(blender_object, blender_bone, export_settings)
             else:
                 bones, _, _ = gltf2_blender_gather_skins.get_bone_tree(None, blender_object)
                 if blender_bone.name in [b.name for b in bones]:
-                    obj = blender_object.proxy if blender_object.proxy else blender_object
-                    return gltf2_blender_gather_joints.gather_joint(obj, blender_bone, export_settings)
+                    return gltf2_blender_gather_joints.gather_joint(blender_object, blender_bone, export_settings)
 
     return gltf2_blender_gather_nodes.gather_node(blender_object,
         blender_object.library.name if blender_object.library else None,
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py
index 726104f4d..004e8d646 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py
@@ -112,8 +112,7 @@ def gather_animation_channels(blender_action: bpy.types.Action,
 
 
         # Retrieve channels for drivers, if needed
-        obj_driver = blender_object.proxy if blender_object.proxy else blender_object
-        drivers_to_manage = gltf2_blender_gather_drivers.get_sk_drivers(obj_driver)
+        drivers_to_manage = gltf2_blender_gather_drivers.get_sk_drivers(blender_object)
         for obj, fcurves in drivers_to_manage:
             channel = __gather_animation_channel(
                 fcurves,
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py
index caf142174..bd0ce3059 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py
@@ -174,8 +174,7 @@ def get_bone_matrix(blender_object_if_armature: typing.Optional[bpy.types.Object
 
 
         # If some drivers must be evaluated, do it here, to avoid to have to change frame by frame later
-        obj_driver = blender_object_if_armature.proxy if blender_object_if_armature.proxy else blender_object_if_armature
-        drivers_to_manage = get_sk_drivers(obj_driver)
+        drivers_to_manage = get_sk_drivers(blender_object_if_armature)
         for dr_obj, dr_fcurves in drivers_to_manage:
             vals = get_sk_driver_values(dr_obj, frame, dr_fcurves)
 
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
index 13c347dc6..d94b8c079 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
@@ -166,15 +166,13 @@ def __gather_children(blender_object, blender_scene, export_settings):
     children = []
     only_bone_children = True # True by default, will be set to False if needed
     # standard children
-    for _child_object in blender_object.children:
-        if _child_object.parent_bone:
+    for child_object in blender_object.children:
+        if child_object.parent_bone:
             # this is handled further down,
             # as the object should be a child of the specific bone,
             # not the Armature object
             continue
 
-        child_object = _child_object.proxy if _child_object.proxy else _child_object
-
         node = gather_node(child_object,
             child_object.library.name if child_object.library else None,
             blender_scene, None, export_settings)
@@ -187,7 +185,7 @@ def __gather_children(blender_object, blender_scene, export_settings):
             if dupli_object.parent is not None:
                 continue
             if dupli_object.type == "ARMATURE":
-                continue # There is probably a proxy
+                continue # There is probably a proxy (no more existing)
             node = gather_node(dupli_object,
                 dupli_object.library.name if dupli_object.library else None,
                 blender_scene, blender_object.name, export_settings)
-- 
GitLab