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.
3 changed files with 37 additions and 30 deletions
Showing only changes of commit adb024efb2 - Show all commits

View File

@ -135,7 +135,7 @@ def get_name_with_asset_prefix(name: str) -> str:
return prefix + name
def get_name_with_task_layer_prefix(name: str, task_layer_owner: str) -> str:
def task_layer_prefix_name_get(name: str, task_layer_owner: str) -> str:
"""Returns a string with the prefix if it is not already set.
Users can specify a prefix to live on all objects during the
asset creation process. This prefix is stored in the scene.
@ -148,13 +148,39 @@ def get_name_with_task_layer_prefix(name: str, task_layer_owner: str) -> str:
"""
if name.startswith(config.TASK_LAYER_TYPES[task_layer_owner] + "."):
return name
for task_layer_key in config.TASK_LAYER_TYPES:
if name.startswith(config.TASK_LAYER_TYPES[task_layer_key] + "."):
name = name.replace(name.split(".")[0], "")[1:]
break
base_name = task_layer_prefix_basename_get(name)
if name == base_name:
return
prefix = config.TASK_LAYER_TYPES[task_layer_owner]
return prefix + "." + name
return prefix + "." + base_name
def task_layer_prefix_basename_get(name: str) -> str:
for task_layer_key in config.TASK_LAYER_TYPES:
if name.startswith(config.TASK_LAYER_TYPES[task_layer_key] + "."):
return name.replace(name.split(".")[0], "")[1:]
return name
def task_layer_prefix_update_name(transfer_data_item):
prefix_types = [constants.MODIFIER_KEY, constants.CONSTRAINT_KEY]
if transfer_data_item.type not in prefix_types:
return
obj = transfer_data_item.id_data
td_data = data_type_from_transfer_data_key(obj, transfer_data_item.type)
new_name = task_layer_prefix_name_get(
transfer_data_item.name, transfer_data_item.owner
)
if new_name == transfer_data_item.name or not td_data.get(transfer_data_item.name):
return
td_data[transfer_data_item.name].name = new_name
transfer_data_item.name = new_name
return True
def get_id_type_name(id_type: bpy.types) -> str:
@ -167,22 +193,3 @@ def get_id_type_name(id_type: bpy.types) -> str:
str: Name of an ID type e.g. bpy.types.Object will return 'Object'
"""
return str(id_type).split("'bpy_types.")[1].replace("'>", "")
def transfer_data_update_prefix(transfer_data_item):
prefix_types = [constants.MODIFIER_KEY, constants.CONSTRAINT_KEY]
if transfer_data_item.type not in prefix_types:
return
obj = transfer_data_item.id_data
td_data = data_type_from_transfer_data_key(obj, transfer_data_item.type)
new_name = get_name_with_task_layer_prefix(
transfer_data_item.name, transfer_data_item.owner
)
if new_name == transfer_data_item.name or not td_data.get(transfer_data_item.name):
return
td_data[transfer_data_item.name].name = new_name
transfer_data_item.name = new_name
return True

View File

@ -1,6 +1,6 @@
import bpy
from bpy import context
from ..naming import get_basename, get_name_with_task_layer_prefix
from ..naming import get_basename, task_layer_prefix_name_get
from ..drivers import find_drivers, copy_driver
from ..visibility import override_obj_visability
from .transfer_util import (
@ -105,7 +105,7 @@ def init_modifiers(scene, obj, use_default_owner: bool):
transfer_data = obj.transfer_data_ownership
task_layer_owner = get_transfer_data_owner(td_type_key, use_default_owner)
for mod in obj.modifiers:
mod.name = get_name_with_task_layer_prefix(mod.name, task_layer_owner)
mod.name = task_layer_prefix_name_get(mod.name, task_layer_owner)
# Only add new ownership transfer_data_item if vertex group doesn't have an owner
matches = check_transfer_data_entry(transfer_data, mod.name, td_type_key)
if len(matches) == 0:
@ -202,7 +202,7 @@ def init_constraints(scene, obj, use_default_owner: bool):
transfer_data = obj.transfer_data_ownership
task_layer_owner = get_transfer_data_owner(td_type_key, use_default_owner)
for const in obj.constraints:
const.name = get_name_with_task_layer_prefix(const.name, task_layer_owner)
const.name = task_layer_prefix_name_get(const.name, task_layer_owner)
# Only add new ownership transfer_data_item if vertex group doesn't have an owner
matches = check_transfer_data_entry(transfer_data, const.name, td_type_key)
if len(matches) == 0:

View File

@ -2,7 +2,7 @@ import bpy
from . import config
import os
from pathlib import Path
from .merge.naming import transfer_data_update_prefix
from .merge.naming import task_layer_prefix_update_name
from .merge.task_layer import (
set_local_task_layers,
draw_task_layer_selection,
@ -445,7 +445,7 @@ class ASSETPIPE_OT_fix_prefixes(bpy.types.Operator):
for obj in objs:
transfer_data_items = obj.transfer_data_ownership
for transfer_data_item in transfer_data_items:
if transfer_data_update_prefix(transfer_data_item):
if task_layer_prefix_update_name(transfer_data_item):
self.report(
{'INFO'},
f"Renamed {transfer_data_item.type} on '{obj.name}'",