Asset Pipeline: Add Support for Asset Catalogs #185
@ -49,6 +49,22 @@ def get_next_published_file(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_asset_catalogues():
|
||||||
|
folder = Path(bpy.data.filepath).parent
|
||||||
|
target_catalog = "Catalog"
|
||||||
|
|
||||||
|
with (folder / "blender_assets.cats.txt").open() as f:
|
||||||
|
for line in f.readlines():
|
||||||
|
if line.startswith(("#", "VERSION", "\n")):
|
||||||
|
continue
|
||||||
|
# Each line contains : 'uuid:catalog_tree:catalog_name' + eol ('\n')
|
||||||
|
name = line.split(":")[2].split("\n")[0]
|
||||||
|
if name == target_catalog:
|
||||||
|
uuid = line.split(":")[0]
|
||||||
|
obj = bpy.data.objects["Suzanne"] # Object name, case-sensitive !
|
||||||
|
asset_data = obj.asset_data
|
||||||
|
asset_data.catalog_id = uuid
|
||||||
|
|
||||||
def create_next_published_file(
|
def create_next_published_file(
|
||||||
current_file: Path, publish_type=constants.ACTIVE_PUBLISH_KEY
|
current_file: Path, publish_type=constants.ACTIVE_PUBLISH_KEY
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -58,6 +74,7 @@ def create_next_published_file(
|
|||||||
current_file (Path): Current file, which must be a task file at root of asset directory
|
current_file (Path): Current file, which must be a task file at root of asset directory
|
||||||
publish_type (_type_, optional): Publish type, 'publish', 'staged', 'review'. Defaults to 'publish'.
|
publish_type (_type_, optional): Publish type, 'publish', 'staged', 'review'. Defaults to 'publish'.
|
||||||
"""
|
"""
|
||||||
|
# TODO Set Catalogue here
|
||||||
new_file_path = get_next_published_file(current_file, publish_type)
|
new_file_path = get_next_published_file(current_file, publish_type)
|
||||||
if publish_type == constants.ACTIVE_PUBLISH_KEY:
|
if publish_type == constants.ACTIVE_PUBLISH_KEY:
|
||||||
bpy.context.scene.asset_pipeline.asset_collection.asset_mark()
|
bpy.context.scene.asset_pipeline.asset_collection.asset_mark()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import bpy
|
import bpy
|
||||||
|
import os
|
||||||
from typing import List
|
from typing import List
|
||||||
from . import constants
|
from . import constants
|
||||||
from .config import get_task_layer_presets_path
|
from .config import get_task_layer_presets_path
|
||||||
@ -10,6 +11,19 @@ avaliable task layers from the task_layer.json file that needs to be created.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# TODO find better place for this function
|
||||||
|
def find_asset_cat_file(directory):
|
||||||
|
asset_file = os.path.join(directory, "blender_assets.cats.txt")
|
||||||
|
if os.path.exists(asset_file):
|
||||||
|
return asset_file
|
||||||
|
|
||||||
|
parent_dir = os.path.dirname(directory)
|
||||||
|
if parent_dir == directory:
|
||||||
|
raise FileNotFoundError("blender_assets.cats.txt not found")
|
||||||
|
|
||||||
|
return find_asset_cat_file(parent_dir)
|
||||||
|
|
||||||
|
|
||||||
def get_task_layer_presets(self, context):
|
def get_task_layer_presets(self, context):
|
||||||
prefs = get_addon_prefs()
|
prefs = get_addon_prefs()
|
||||||
user_tls = Path(prefs.custom_task_layers_dir)
|
user_tls = Path(prefs.custom_task_layers_dir)
|
||||||
@ -144,6 +158,24 @@ class AssetPipeline(bpy.types.PropertyGroup):
|
|||||||
)
|
)
|
||||||
file_parent_ui_bool: bpy.props.BoolProperty(name="Show/Hide Parent", default=False)
|
file_parent_ui_bool: bpy.props.BoolProperty(name="Show/Hide Parent", default=False)
|
||||||
|
|
||||||
|
def get_asset_catalogs(self, context):
|
||||||
|
items = []
|
||||||
|
asset_cat_file = find_asset_cat_file(Path(bpy.data.filepath).parent.__str__())
|
||||||
|
with (Path(asset_cat_file)).open() as file:
|
||||||
|
for line in file.readlines():
|
||||||
|
if line.startswith(("#", "VERSION", "\n")):
|
||||||
|
continue
|
||||||
|
# Each line contains : 'uuid:catalog_tree:catalog_name' + eol ('\n')
|
||||||
|
name = line.split(":")[2].split("\n")[0]
|
||||||
|
uuid = line.split(":")[0]
|
||||||
|
|
||||||
|
items.append((uuid, name, ''))
|
||||||
|
return items
|
||||||
|
|
||||||
|
aval_asset_catalogs: bpy.props.EnumProperty(
|
||||||
|
name="Catalog", items=get_asset_catalogs
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
classes = (
|
classes = (
|
||||||
AssetTransferData,
|
AssetTransferData,
|
||||||
|
@ -54,6 +54,7 @@ class ASSETPIPE_PT_sync(bpy.types.Panel):
|
|||||||
for task_layer in asset_pipe.local_task_layers:
|
for task_layer in asset_pipe.local_task_layers:
|
||||||
row.label(text=task_layer.name)
|
row.label(text=task_layer.name)
|
||||||
|
|
||||||
|
layout.prop(asset_pipe, 'aval_asset_catalogs')
|
||||||
layout.prop(asset_pipe, "asset_collection")
|
layout.prop(asset_pipe, "asset_collection")
|
||||||
|
|
||||||
staged = is_staged_publish(Path(bpy.data.filepath))
|
staged = is_staged_publish(Path(bpy.data.filepath))
|
||||||
|
Loading…
Reference in New Issue
Block a user