Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 42 additions & 2 deletions pipeline/pipe/m/publish/rig.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
from __future__ import annotations

import logging
import shutil
import re

from typing import TYPE_CHECKING
from shared.util import get_production_path
from pathlib import Path
from pipe.glui.dialogs import MessageDialog

if TYPE_CHECKING:
from typing import Any
Expand All @@ -24,7 +29,7 @@ def __init__(self) -> None:
super().__init__(use_sg_entity=False)

def _get_entity_list(self) -> list[str]:
return self._conn.get_asset_name_list(sorted=True)
return self._conn.get_asset_name_list_by_type(["Character", "Rigged Prop"])

def _get_mayausd_kwargs(self) -> dict[str, Any]:
kwargs = {
Expand All @@ -40,5 +45,40 @@ def _get_mayausd_kwargs(self) -> dict[str, Any]:
return kwargs

def _presave(self) -> bool:
mc.select(self._selected_item + ":" + CACHE_SET)
mc.select(CACHE_SET)
return True

def _get_save_path(self) -> Path | None:
asset = self._conn.get_asset_by_name(self._selected_item)

try:
assert asset.path is not None
except AssertionError:
error = MessageDialog(
self._window,
"Error: No path for this Asset set in ShotGrid. Nothing exported",
"Error",
)
error.exec_()
return None

asset_dir = get_production_path() / asset.path
asset_dir.mkdir(parents=True, exist_ok=True) # Ensure the directory exists
filename = asset.name + ".usd"
save_path = asset_dir / filename

if save_path.exists():
# Look for existing versioned files
existing_versions = [
int(match.group(1))
for file in asset_dir.glob(f"{asset.name}_v*.usd")
if (match := re.match(fr"{re.escape(asset.name)}_v(\d+)\.usd", file.name))
]
next_version = max(existing_versions, default=0) + 1
versioned_name = f"{asset.name}_v{next_version}.usd"
versioned_path = asset_dir / versioned_name

# Move the old file to the versioned name
shutil.move(save_path, versioned_path)

return save_path