Asset Pipeline v2 #145

Closed
Nick Alberelli wants to merge 431 commits from (deleted):feature/asset-pipeline-v2 into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
7 changed files with 31 additions and 30 deletions
Showing only changes of commit 61fb402dbb - Show all commits

View File

@ -1,7 +1,7 @@
import bpy import bpy
from typing import Dict, Set from typing import Dict, Set
from .naming import ( from .naming import (
get_target_name, merge_get_target_name,
task_layer_prefix_basename_get, task_layer_prefix_basename_get,
) )
from .util import get_storage_of_id from .util import get_storage_of_id
@ -53,7 +53,7 @@ class AssetTransferMapping:
self.shared_id_map = self._gen_shared_id_map() self.shared_id_map = self._gen_shared_id_map()
def _get_external_object(self, local_obj): def _get_external_object(self, local_obj):
external_obj_name = get_target_name( external_obj_name = merge_get_target_name(
local_obj.name, local_obj.name,
) )
external_obj = self._external_col.all_objects.get(external_obj_name) external_obj = self._external_col.all_objects.get(external_obj_name)
@ -113,7 +113,7 @@ class AssetTransferMapping:
# Find new objects to add to local_col # Find new objects to add to local_col
for external_obj in self._external_col.all_objects: for external_obj in self._external_col.all_objects:
local_col_objs = self._local_top_col.all_objects local_col_objs = self._local_top_col.all_objects
obj = local_col_objs.get(get_target_name(external_obj.name)) obj = local_col_objs.get(merge_get_target_name(external_obj.name))
if not obj and external_obj.asset_id_owner not in self._local_tls: if not obj and external_obj.asset_id_owner not in self._local_tls:
self.external_obj_to_add.add(external_obj) self.external_obj_to_add.add(external_obj)
return object_map return object_map
@ -128,7 +128,7 @@ class AssetTransferMapping:
for local_task_layer_col in self._local_top_col.children: for local_task_layer_col in self._local_top_col.children:
if local_task_layer_col.asset_id_owner not in self._local_tls: if local_task_layer_col.asset_id_owner not in self._local_tls:
# Replace source object suffix with target suffix to get target object. # Replace source object suffix with target suffix to get target object.
external_col_name = get_target_name(local_task_layer_col.name) external_col_name = merge_get_target_name(local_task_layer_col.name)
local_col = bpy.data.collections.get(external_col_name) local_col = bpy.data.collections.get(external_col_name)
if local_col: if local_col:
coll_map[local_task_layer_col] = local_col coll_map[local_task_layer_col] = local_col
@ -138,18 +138,18 @@ class AssetTransferMapping:
) )
self._no_match_source_colls.add(local_task_layer_col) self._no_match_source_colls.add(local_task_layer_col)
external_top_col_name = get_target_name(self._local_top_col.name) external_top_col_name = merge_get_target_name(self._local_top_col.name)
external_top_col = bpy.data.collections.get(external_top_col_name) external_top_col = bpy.data.collections.get(external_top_col_name)
# TODO Refactor # TODO Refactor
for external_col in external_top_col.children: for external_col in external_top_col.children:
local_col_name = get_target_name(external_col.name) local_col_name = merge_get_target_name(external_col.name)
local_col = bpy.data.collections.get(local_col_name) local_col = bpy.data.collections.get(local_col_name)
if not local_col and external_col.asset_id_owner not in self._local_tls: if not local_col and external_col.asset_id_owner not in self._local_tls:
self.external_col_to_add.add(external_col) self.external_col_to_add.add(external_col)
for local_col in self._local_top_col.children: for local_col in self._local_top_col.children:
external_col_name = get_target_name(local_col.name) external_col_name = merge_get_target_name(local_col.name)
external_col = bpy.data.collections.get(external_col_name) external_col = bpy.data.collections.get(external_col_name)
if not external_col and local_col.asset_id_owner not in self._local_tls: if not external_col and local_col.asset_id_owner not in self._local_tls:
self.external_col_to_remove.add(local_col) self.external_col_to_remove.add(local_col)
@ -183,7 +183,7 @@ class AssetTransferMapping:
return name, map_item return name, map_item
def _check_transfer_data_conflict(self, obj, transfer_data_item): def _check_transfer_data_conflict(self, obj, transfer_data_item):
other_obj = bpy.data.objects.get(get_target_name(obj.name)) other_obj = bpy.data.objects.get(merge_get_target_name(obj.name))
check_transfer_data_item = None check_transfer_data_item = None
if not other_obj: if not other_obj:
return return
@ -213,7 +213,7 @@ class AssetTransferMapping:
def transfer_data_get_other(self, transfer_data_item): def transfer_data_get_other(self, transfer_data_item):
# THIS IS FOR WHEN SURRENDERED DATA HAS BEEN REPLACED # THIS IS FOR WHEN SURRENDERED DATA HAS BEEN REPLACED
obj = transfer_data_item.id_data obj = transfer_data_item.id_data
other_obj = bpy.data.objects.get(get_target_name(obj.name)) other_obj = bpy.data.objects.get(merge_get_target_name(obj.name))
# Find Related Transfer Data Item on Target/Source Object # Find Related Transfer Data Item on Target/Source Object
for other_obj_transfer_data_item in other_obj.transfer_data_ownership: for other_obj_transfer_data_item in other_obj.transfer_data_ownership:
if task_layer_prefix_basename_get( if task_layer_prefix_basename_get(
@ -272,7 +272,7 @@ class AssetTransferMapping:
def _gen_shared_id_map(self): def _gen_shared_id_map(self):
shared_id_map: Dict[bpy.types.ID, bpy.types.ID] = {} shared_id_map: Dict[bpy.types.ID, bpy.types.ID] = {}
for local_id in get_shared_ids(self._local_top_col): for local_id in get_shared_ids(self._local_top_col):
external_id_name = get_target_name(local_id.name) external_id_name = merge_get_target_name(local_id.name)
id_storage = get_storage_of_id(local_id) id_storage = get_storage_of_id(local_id)
external_id = id_storage.get(external_id_name) external_id = id_storage.get(external_id_name)
if not external_id: if not external_id:

View File

@ -10,8 +10,8 @@ from .transfer_data.transfer_core import (
from .transfer_data.transfer_util import transfer_data_add_entry from .transfer_data.transfer_util import transfer_data_add_entry
from .naming import ( from .naming import (
add_suffix_to_hierarchy, merge_add_suffix_to_hierarchy,
remove_suffix_from_hierarchy, merge_remove_suffix_from_hierarchy,
asset_prefix_name_get, asset_prefix_name_get,
get_id_type_name, get_id_type_name,
) )
@ -171,10 +171,10 @@ def merge_task_layer(
col_base_name = local_col.name col_base_name = local_col.name
local_suffix = constants.LOCAL_SUFFIX local_suffix = constants.LOCAL_SUFFIX
external_suffix = constants.EXTERNAL_SUFFIX external_suffix = constants.EXTERNAL_SUFFIX
add_suffix_to_hierarchy(local_col, local_suffix) merge_add_suffix_to_hierarchy(local_col, local_suffix)
appended_col = import_data_from_lib(external_file, "collections", col_base_name) appended_col = import_data_from_lib(external_file, "collections", col_base_name)
add_suffix_to_hierarchy(appended_col, external_suffix) merge_add_suffix_to_hierarchy(appended_col, external_suffix)
local_col = bpy.data.collections[f"{col_base_name}.{local_suffix}"] local_col = bpy.data.collections[f"{col_base_name}.{local_suffix}"]
external_col = bpy.data.collections[f"{col_base_name}.{external_suffix}"] external_col = bpy.data.collections[f"{col_base_name}.{external_suffix}"]
@ -227,7 +227,7 @@ def merge_task_layer(
bpy.ops.outliner.orphans_purge( bpy.ops.outliner.orphans_purge(
do_local_ids=True, do_linked_ids=False, do_recursive=True do_local_ids=True, do_linked_ids=False, do_recursive=True
) )
remove_suffix_from_hierarchy(local_col) merge_remove_suffix_from_hierarchy(local_col)
def import_data_from_lib( def import_data_from_lib(

View File

@ -26,8 +26,7 @@ from .util import data_type_from_transfer_data_key
DELIMITER = "." DELIMITER = "."
def merge_get_target_suffix(suffix: str) -> str:
def get_target_suffix(suffix: str) -> str:
"""Get the corrisponding suffix for a given suffix """Get the corrisponding suffix for a given suffix
Args: Args:
@ -42,7 +41,7 @@ def get_target_suffix(suffix: str) -> str:
return constants.EXTERNAL_SUFFIX return constants.EXTERNAL_SUFFIX
def get_target_name(name: str) -> str: def merge_get_target_name(name: str) -> str:
"""Get the corrisponding target name for a given datablock's suffix. """Get the corrisponding target name for a given datablock's suffix.
Suffixes are set by the add_suffix_to_hierarchy() function prior to Suffixes are set by the add_suffix_to_hierarchy() function prior to
calling this function. calling this function.
@ -54,12 +53,12 @@ def get_target_name(name: str) -> str:
str: Returns datablock name with the opposite suffix str: Returns datablock name with the opposite suffix
""" """
old = name.split(DELIMITER)[-1] old = name.split(DELIMITER)[-1]
new = get_target_suffix(old) new = merge_get_target_suffix(old)
li = name.rsplit(old, 1) li = name.rsplit(old, 1)
return new.join(li) return new.join(li)
def get_basename(name: str) -> str: def merge_get_basename(name: str) -> str:
"""Returns the name of an asset without it's suffix""" """Returns the name of an asset without it's suffix"""
if name.endswith(constants.LOCAL_SUFFIX) or name.endswith( if name.endswith(constants.LOCAL_SUFFIX) or name.endswith(
constants.EXTERNAL_SUFFIX constants.EXTERNAL_SUFFIX
@ -84,12 +83,14 @@ def remove_suffix_from_hierarchy(collection: bpy.types.Collection) -> None:
# Don't rename linked datablocks. # Don't rename linked datablocks.
continue continue
try: try:
db.name = get_basename(db.name) db.name = merge_get_basename(db.name)
except: except:
pass pass
def add_suffix_to_hierarchy(collection: bpy.types.Collection, suffix_base: str) -> None: def merge_add_suffix_to_hierarchy(
collection: bpy.types.Collection, suffix_base: str
) -> None:
"""Add a suffix to the names of all datablocks referenced by a collection, """Add a suffix to the names of all datablocks referenced by a collection,
itself included. itself included.

View File

@ -10,7 +10,7 @@ from .transfer_function_util.proximity_core import (
transfer_corner_data, transfer_corner_data,
) )
from ..transfer_util import check_transfer_data_entry from ..transfer_util import check_transfer_data_entry
from ...naming import get_basename from ...naming import merge_get_basename
from ...task_layer import get_transfer_data_owner from ...task_layer import get_transfer_data_owner
from .... import constants from .... import constants
@ -36,7 +36,7 @@ def attribute_clean(obj):
for attribute in attributes: for attribute in attributes:
matches = check_transfer_data_entry( matches = check_transfer_data_entry(
obj.transfer_data_ownership, obj.transfer_data_ownership,
get_basename(attribute.name), merge_get_basename(attribute.name),
constants.ATTRIBUTE_KEY, constants.ATTRIBUTE_KEY,
) )
if len(matches) == 0: if len(matches) == 0:

View File

@ -1,14 +1,14 @@
import bpy import bpy
from ..transfer_util import check_transfer_data_entry from ..transfer_util import check_transfer_data_entry
from ...task_layer import get_transfer_data_owner from ...task_layer import get_transfer_data_owner
from ...naming import get_basename from ...naming import merge_get_basename
from .... import constants from .... import constants
def parent_clean(obj): def parent_clean(obj):
matches = check_transfer_data_entry( matches = check_transfer_data_entry(
obj.transfer_data_ownership, obj.transfer_data_ownership,
get_basename(constants.PARENT_TRANSFER_DATA_ITEM_NAME), merge_get_basename(constants.PARENT_TRANSFER_DATA_ITEM_NAME),
constants.PARENT_KEY, constants.PARENT_KEY,
) )

View File

@ -13,7 +13,7 @@ from ..transfer_util import (
transfer_data_item_init, transfer_data_item_init,
check_transfer_data_entry, check_transfer_data_entry,
) )
from ...naming import get_basename from ...naming import merge_get_basename
from .... import constants from .... import constants
@ -30,7 +30,7 @@ def shape_keys_clean(obj):
for shape_key in obj.data.shape_keys.key_blocks: for shape_key in obj.data.shape_keys.key_blocks:
matches = check_transfer_data_entry( matches = check_transfer_data_entry(
obj.transfer_data_ownership, obj.transfer_data_ownership,
get_basename(shape_key.name), merge_get_basename(shape_key.name),
constants.SHAPE_KEY_KEY, constants.SHAPE_KEY_KEY,
) )
if len(matches) == 0: if len(matches) == 0:

View File

@ -1,5 +1,5 @@
import bpy import bpy
from ..naming import get_basename from ..naming import merge_get_basename
from ..task_layer import get_transfer_data_owner from ..task_layer import get_transfer_data_owner
@ -59,7 +59,7 @@ def transfer_data_clean(
for item in data_list: for item in data_list:
matches = check_transfer_data_entry( matches = check_transfer_data_entry(
obj.transfer_data_ownership, obj.transfer_data_ownership,
get_basename(item.name), merge_get_basename(item.name),
td_type_key, td_type_key,
) )
if len(matches) == 0: if len(matches) == 0: