mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Keeps the transform when updating
This commit is contained in:
parent
b5ebe86b14
commit
e6d13db010
1 changed files with 8 additions and 0 deletions
|
|
@ -136,13 +136,18 @@ class BlendSceneLoader(plugin.AssetLoader):
|
||||||
f"The asset is not loaded: {container['objectName']}"
|
f"The asset is not loaded: {container['objectName']}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Get the parents of the members of the asset group, so we can
|
||||||
|
# re-link them after the update.
|
||||||
|
# Also gets the transform for each object to reapply after the update.
|
||||||
collection_parents = {}
|
collection_parents = {}
|
||||||
|
member_transforms = {}
|
||||||
members = asset_group.get(AVALON_PROPERTY).get("members", [])
|
members = asset_group.get(AVALON_PROPERTY).get("members", [])
|
||||||
loaded_collections = {c for c in bpy.data.collections if c in members}
|
loaded_collections = {c for c in bpy.data.collections if c in members}
|
||||||
loaded_collections.add(bpy.data.collections.get(AVALON_CONTAINERS))
|
loaded_collections.add(bpy.data.collections.get(AVALON_CONTAINERS))
|
||||||
for member in members:
|
for member in members:
|
||||||
if isinstance(member, bpy.types.Object):
|
if isinstance(member, bpy.types.Object):
|
||||||
member_parents = set(member.users_collection)
|
member_parents = set(member.users_collection)
|
||||||
|
member_transforms[member.name] = member.matrix_basis.copy()
|
||||||
elif isinstance(member, bpy.types.Collection):
|
elif isinstance(member, bpy.types.Collection):
|
||||||
member_parents = {
|
member_parents = {
|
||||||
c for c in bpy.data.collections if c.user_of_id(member)}
|
c for c in bpy.data.collections if c.user_of_id(member)}
|
||||||
|
|
@ -167,6 +172,9 @@ class BlendSceneLoader(plugin.AssetLoader):
|
||||||
parent.objects.link(member)
|
parent.objects.link(member)
|
||||||
elif isinstance(member, bpy.types.Collection):
|
elif isinstance(member, bpy.types.Collection):
|
||||||
parent.children.link(member)
|
parent.children.link(member)
|
||||||
|
if (member.name in member_transforms and
|
||||||
|
isinstance(member, bpy.types.Object)):
|
||||||
|
member.matrix_basis = member_transforms[member.name]
|
||||||
|
|
||||||
avalon_container = bpy.data.collections.get(AVALON_CONTAINERS)
|
avalon_container = bpy.data.collections.get(AVALON_CONTAINERS)
|
||||||
avalon_container.children.link(asset_group)
|
avalon_container.children.link(asset_group)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue