Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2018-11-25 18:08:23 +0300
committerJulien Duroure <julien.duroure@gmail.com>2018-11-25 18:08:23 +0300
commit8ac09109617d8acd81747bd3dffed915aa99c8cc (patch)
tree28752bf60b58a12f2fc8402df699a4fc6c3afdd6
parentbe2df5249105015aaafb06def0d1279c559c56ff (diff)
glTF importer: fix bug in animation import
Problem occured when importing a gltf, delete objects, and importing a new gltf, with same object / armature
-rwxr-xr-xio_scene_gltf2/blender/imp/gltf2_blender_animation_bone.py6
-rwxr-xr-xio_scene_gltf2/blender/imp/gltf2_blender_animation_node.py6
2 files changed, 12 insertions, 0 deletions
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_animation_bone.py b/io_scene_gltf2/blender/imp/gltf2_blender_animation_bone.py
index 6b670aea..ec95692b 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_animation_bone.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_animation_bone.py
@@ -170,6 +170,12 @@ class BlenderBoneAnim():
action = bpy.data.actions.new(name)
else:
action = bpy.data.actions[name]
+ # Check if this action has some users.
+ # If no user (only 1 indeed), that means that this action must be deleted
+ # (is an action from a deleted action)
+ if action.users == 1:
+ bpy.data.actions.remove(action)
+ action = bpy.data.actions.new(name)
if not obj.animation_data:
obj.animation_data_create()
obj.animation_data.action = bpy.data.actions[action.name]
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py b/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
index a5d4b40f..2a04f469 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_animation_node.py
@@ -53,6 +53,12 @@ class BlenderNodeAnim():
else:
name = "Animation_" + str(anim_idx) + "_" + obj.name
action = bpy.data.actions.new(name)
+ # Check if this action has some users.
+ # If no user (only 1 indeed), that means that this action must be deleted
+ # (is an action from a deleted action)
+ if action.users == 1:
+ bpy.data.actions.remove(action)
+ action = bpy.data.actions.new(name)
if not obj.animation_data:
obj.animation_data_create()
obj.animation_data.action = bpy.data.actions[action.name]