diff --git a/.gitmodules b/.gitmodules
index 95c8647d45..c70c2097d9 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
[submodule "client/ayon_core/hosts/unreal/integration"]
- path = client/ayon_core/hosts/unreal/integration
+ path = server_addon/unreal/client/ayon_unreal/integration
url = https://github.com/ynput/ayon-unreal-plugin.git
diff --git a/client/ayon_core/addon/base.py b/client/ayon_core/addon/base.py
index 53f64eef8b..b10629ede8 100644
--- a/client/ayon_core/addon/base.py
+++ b/client/ayon_core/addon/base.py
@@ -63,6 +63,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = {
"royalrender": VersionInfo(0, 2, 0),
"substancepainter": VersionInfo(0, 2, 0),
"houdini": VersionInfo(0, 3, 0),
+ "unreal": VersionInfo(0, 2, 0),
}
diff --git a/client/ayon_core/hosts/unreal/__init__.py b/client/ayon_core/hosts/unreal/__init__.py
deleted file mode 100644
index 42dd8f0ac4..0000000000
--- a/client/ayon_core/hosts/unreal/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from .addon import UnrealAddon
-
-
-__all__ = (
- "UnrealAddon",
-)
diff --git a/client/ayon_core/pipeline/create/context.py b/client/ayon_core/pipeline/create/context.py
index 45846553a4..0d8722dab1 100644
--- a/client/ayon_core/pipeline/create/context.py
+++ b/client/ayon_core/pipeline/create/context.py
@@ -37,6 +37,7 @@ from .creator_plugins import (
# Changes of instances and context are send as tuple of 2 information
UpdateData = collections.namedtuple("UpdateData", ["instance", "changes"])
+_NOT_SET = object()
class UnavailableSharedData(Exception):
@@ -1401,6 +1402,11 @@ class CreateContext:
self._current_folder_path = None
self._current_task_name = None
self._current_workfile_path = None
+ self._current_project_settings = None
+
+ self._current_folder_entity = _NOT_SET
+ self._current_task_entity = _NOT_SET
+ self._current_task_type = _NOT_SET
self._current_project_anatomy = None
@@ -1571,6 +1577,64 @@ class CreateContext:
return self._current_task_name
+ def get_current_task_type(self):
+ """Task type which was used as current context on context reset.
+
+ Returns:
+ Union[str, None]: Task type.
+
+ """
+ if self._current_task_type is _NOT_SET:
+ task_type = None
+ task_entity = self.get_current_task_entity()
+ if task_entity:
+ task_type = task_entity["taskType"]
+ self._current_task_type = task_type
+ return self._current_task_type
+
+ def get_current_folder_entity(self):
+ """Folder entity for current context folder.
+
+ Returns:
+ Union[dict[str, Any], None]: Folder entity.
+
+ """
+ if self._current_folder_entity is not _NOT_SET:
+ return copy.deepcopy(self._current_folder_entity)
+ folder_entity = None
+ folder_path = self.get_current_folder_path()
+ if folder_path:
+ project_name = self.get_current_project_name()
+ folder_entity = ayon_api.get_folder_by_path(
+ project_name, folder_path
+ )
+ self._current_folder_entity = folder_entity
+ return copy.deepcopy(self._current_folder_entity)
+
+ def get_current_task_entity(self):
+ """Task entity for current context task.
+
+ Returns:
+ Union[dict[str, Any], None]: Task entity.
+
+ """
+ if self._current_task_entity is not _NOT_SET:
+ return copy.deepcopy(self._current_task_entity)
+ task_entity = None
+ task_name = self.get_current_task_name()
+ if task_name:
+ folder_entity = self.get_current_folder_entity()
+ if folder_entity:
+ project_name = self.get_current_project_name()
+ task_entity = ayon_api.get_task_by_name(
+ project_name,
+ folder_id=folder_entity["id"],
+ task_name=task_name
+ )
+ self._current_task_entity = task_entity
+ return copy.deepcopy(self._current_task_entity)
+
+
def get_current_workfile_path(self):
"""Workfile path which was opened on context reset.
@@ -1592,6 +1656,12 @@ class CreateContext:
self._current_project_name)
return self._current_project_anatomy
+ def get_current_project_settings(self):
+ if self._current_project_settings is None:
+ self._current_project_settings = get_project_settings(
+ self.get_current_project_name())
+ return self._current_project_settings
+
@property
def context_has_changed(self):
"""Host context has changed.
@@ -1718,7 +1788,12 @@ class CreateContext:
self._current_task_name = task_name
self._current_workfile_path = workfile_path
+ self._current_folder_entity = _NOT_SET
+ self._current_task_entity = _NOT_SET
+ self._current_task_type = _NOT_SET
+
self._current_project_anatomy = None
+ self._current_project_settings = None
def reset_plugins(self, discover_publish_plugins=True):
"""Reload plugins.
@@ -1772,7 +1847,7 @@ class CreateContext:
def _reset_creator_plugins(self):
# Prepare settings
- project_settings = get_project_settings(self.project_name)
+ project_settings = self.get_current_project_settings()
# Discover and prepare creators
creators = {}
diff --git a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py
index b4d02f2ba5..b6636696c1 100644
--- a/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py
+++ b/client/ayon_core/plugins/publish/collect_anatomy_instance_data.py
@@ -398,7 +398,11 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
anatomy_data.update(folder_data)
return
- if instance.data.get("newAssetPublishing"):
+ if (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ ):
hierarchy = instance.data["hierarchy"]
anatomy_data["hierarchy"] = hierarchy
@@ -416,7 +420,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
"path": instance.data["folderPath"],
# TODO get folder type from hierarchy
# Using 'Shot' is current default behavior of editorial
- # (or 'newAssetPublishing') publishing.
+ # (or 'newHierarchyIntegration') publishing.
"type": "Shot",
},
})
@@ -439,15 +443,22 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
if task_data:
# Fill task data
# - if we're in editorial, make sure the task type is filled
- if (
- not instance.data.get("newAssetPublishing")
- or task_data["type"]
- ):
+ new_hierarchy = (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ )
+ if not new_hierarchy or task_data["type"]:
anatomy_data["task"] = task_data
return
# New hierarchy is not created, so we can only skip rest of the logic
- if not instance.data.get("newAssetPublishing"):
+ new_hierarchy = (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ )
+ if not new_hierarchy:
return
# Try to find task data based on hierarchy context and folder path
diff --git a/client/ayon_core/plugins/publish/validate_asset_docs.py b/client/ayon_core/plugins/publish/validate_asset_docs.py
index 95fe4252be..b80b81b366 100644
--- a/client/ayon_core/plugins/publish/validate_asset_docs.py
+++ b/client/ayon_core/plugins/publish/validate_asset_docs.py
@@ -24,7 +24,11 @@ class ValidateFolderEntities(pyblish.api.InstancePlugin):
if instance.data.get("folderEntity"):
self.log.debug("Instance has set fodler entity in its data.")
- elif instance.data.get("newAssetPublishing"):
+ elif (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ ):
# skip if it is editorial
self.log.debug("Editorial instance has no need to check...")
diff --git a/client/ayon_core/resources/ftrack/action_icons/ActionAskWhereIRun.svg b/client/ayon_core/resources/ftrack/action_icons/ActionAskWhereIRun.svg
deleted file mode 100644
index c02b8f83d8..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/ActionAskWhereIRun.svg
+++ /dev/null
@@ -1,131 +0,0 @@
-
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/AssetsRemover.svg b/client/ayon_core/resources/ftrack/action_icons/AssetsRemover.svg
deleted file mode 100644
index e838ee9f28..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/AssetsRemover.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/client/ayon_core/resources/ftrack/action_icons/BatchTasks.svg b/client/ayon_core/resources/ftrack/action_icons/BatchTasks.svg
deleted file mode 100644
index 5cf5d423dd..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/BatchTasks.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/ComponentOpen.svg b/client/ayon_core/resources/ftrack/action_icons/ComponentOpen.svg
deleted file mode 100644
index f549e6142b..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/ComponentOpen.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/CreateFolders.svg b/client/ayon_core/resources/ftrack/action_icons/CreateFolders.svg
deleted file mode 100644
index 18efc273aa..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/CreateFolders.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/CreateProjectFolders.svg b/client/ayon_core/resources/ftrack/action_icons/CreateProjectFolders.svg
deleted file mode 100644
index 0e5821b0be..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/CreateProjectFolders.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/DeleteAsset.svg b/client/ayon_core/resources/ftrack/action_icons/DeleteAsset.svg
deleted file mode 100644
index 855bdae7c5..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/DeleteAsset.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/Delivery.svg b/client/ayon_core/resources/ftrack/action_icons/Delivery.svg
deleted file mode 100644
index a6333333ae..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/Delivery.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/MultipleNotes.svg b/client/ayon_core/resources/ftrack/action_icons/MultipleNotes.svg
deleted file mode 100644
index 40113fc709..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/MultipleNotes.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/OpenPypeAdmin.svg b/client/ayon_core/resources/ftrack/action_icons/OpenPypeAdmin.svg
deleted file mode 100644
index c2abc6146f..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/OpenPypeAdmin.svg
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/PrepareProject.svg b/client/ayon_core/resources/ftrack/action_icons/PrepareProject.svg
deleted file mode 100644
index 644d83f84d..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/PrepareProject.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/RV.png b/client/ayon_core/resources/ftrack/action_icons/RV.png
deleted file mode 100644
index 741e7a9772..0000000000
Binary files a/client/ayon_core/resources/ftrack/action_icons/RV.png and /dev/null differ
diff --git a/client/ayon_core/resources/ftrack/action_icons/SeedProject.svg b/client/ayon_core/resources/ftrack/action_icons/SeedProject.svg
deleted file mode 100644
index ff818b5ecb..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/SeedProject.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/SortReview.svg b/client/ayon_core/resources/ftrack/action_icons/SortReview.svg
deleted file mode 100644
index 13a7def648..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/SortReview.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/TestAction.svg b/client/ayon_core/resources/ftrack/action_icons/TestAction.svg
deleted file mode 100644
index 917ef2d0c7..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/TestAction.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/action_icons/Thumbnail.svg b/client/ayon_core/resources/ftrack/action_icons/Thumbnail.svg
deleted file mode 100644
index 9af330e79a..0000000000
--- a/client/ayon_core/resources/ftrack/action_icons/Thumbnail.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
diff --git a/client/ayon_core/resources/ftrack/sign_in_message.html b/client/ayon_core/resources/ftrack/sign_in_message.html
deleted file mode 100644
index 8ee2828c26..0000000000
--- a/client/ayon_core/resources/ftrack/sign_in_message.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
- Sign in to Ftrack was successful
-
- You signed in with username {}.
-
-
- You can close this window now.
-
-
-
diff --git a/client/ayon_core/tools/publisher/control.py b/client/ayon_core/tools/publisher/control.py
index ede772b917..4e2cfd8783 100644
--- a/client/ayon_core/tools/publisher/control.py
+++ b/client/ayon_core/tools/publisher/control.py
@@ -8,6 +8,7 @@ import tempfile
import shutil
import inspect
from abc import ABCMeta, abstractmethod
+import re
import six
import arrow
@@ -39,6 +40,7 @@ from ayon_core.pipeline.create.context import (
)
from ayon_core.pipeline.publish import get_publish_instance_label
from ayon_core.tools.common_models import HierarchyModel
+from ayon_core.lib.profiles_filtering import filter_profiles
# Define constant for plugin orders offset
PLUGIN_ORDER_OFFSET = 0.5
@@ -1686,6 +1688,15 @@ class PublisherController(BasePublisherController):
"""Publish plugins."""
return self._create_context.publish_plugins
+ def _get_current_project_settings(self):
+ """Current project settings.
+
+ Returns:
+ dict
+ """
+
+ return self._create_context.get_current_project_settings()
+
# Hierarchy model
def get_folder_items(self, project_name, sender=None):
return self._hierarchy_model.get_folder_items(project_name, sender)
@@ -1827,8 +1838,13 @@ class PublisherController(BasePublisherController):
def _collect_creator_items(self):
# TODO add crashed initialization of create plugins to report
output = {}
+ allowed_creator_pattern = self._get_allowed_creators_pattern()
for identifier, creator in self._create_context.creators.items():
try:
+ if (not self._is_label_allowed(
+ creator.label, allowed_creator_pattern)):
+ self.log.debug(f"{creator.label} not allowed for context")
+ continue
output[identifier] = CreatorItem.from_creator(creator)
except Exception:
self.log.error(
@@ -1839,6 +1855,60 @@ class PublisherController(BasePublisherController):
return output
+ def _get_allowed_creators_pattern(self):
+ """Provide regex pattern for configured creator labels in this context
+
+ If no profile matches current context, it shows all creators.
+ Support usage of regular expressions for configured values.
+ Returns:
+ (re.Pattern)[optional]: None or regex compiled patterns
+ into single one ('Render|Image.*')
+ """
+
+ task_type = self._create_context.get_current_task_type()
+ project_settings = self._get_current_project_settings()
+
+ filter_creator_profiles = (
+ project_settings
+ ["core"]
+ ["tools"]
+ ["creator"]
+ ["filter_creator_profiles"]
+ )
+ filtering_criteria = {
+ "task_names": self.current_task_name,
+ "task_types": task_type,
+ "host_names": self._create_context.host_name
+ }
+ profile = filter_profiles(
+ filter_creator_profiles,
+ filtering_criteria,
+ logger=self.log
+ )
+
+ allowed_creator_pattern = None
+ if profile:
+ allowed_creator_labels = {
+ label
+ for label in profile["creator_labels"]
+ if label
+ }
+ self.log.debug(f"Only allowed `{allowed_creator_labels}` creators")
+ allowed_creator_pattern = (
+ re.compile("|".join(allowed_creator_labels)))
+ return allowed_creator_pattern
+
+ def _is_label_allowed(self, label, allowed_labels_regex):
+ """Implement regex support for allowed labels.
+
+ Args:
+ label (str): Label of creator - shown in Publisher
+ allowed_labels_regex (re.Pattern): compiled regular expression
+ """
+ if not allowed_labels_regex:
+ return True
+ return bool(allowed_labels_regex.match(label))
+
def _reset_instances(self):
"""Reset create instances."""
if self._resetting_instances:
diff --git a/server/settings/tools.py b/server/settings/tools.py
index 1d32169954..1cb070e2af 100644
--- a/server/settings/tools.py
+++ b/server/settings/tools.py
@@ -35,6 +35,28 @@ class ProductNameProfile(BaseSettingsModel):
template: str = SettingsField("", title="Template")
+class FilterCreatorProfile(BaseSettingsModel):
+ """Provide list of allowed Creator identifiers for context"""
+
+ _layout = "expanded"
+ host_names: list[str] = SettingsField(
+ default_factory=list, title="Host names"
+ )
+ task_types: list[str] = SettingsField(
+ default_factory=list,
+ title="Task types",
+ enum_resolver=task_types_enum
+ )
+ task_names: list[str] = SettingsField(
+ default_factory=list,
+ title="Task names")
+ creator_labels: list[str] = SettingsField(
+ default_factory=list,
+ title="Allowed Creator Labels",
+ description="Copy creator label from Publisher, regex supported."
+ )
+
+
class CreatorToolModel(BaseSettingsModel):
# TODO this was dynamic dictionary '{name: task_names}'
product_types_smart_select: list[ProductTypeSmartSelectModel] = (
@@ -48,6 +70,13 @@ class CreatorToolModel(BaseSettingsModel):
title="Product name profiles"
)
+ filter_creator_profiles: list[FilterCreatorProfile] = SettingsField(
+ default_factory=list,
+ title="Filter creator profiles",
+ description="Allowed list of creator labels that will be only shown if "
+ "profile matches context."
+ )
+
@validator("product_types_smart_select")
def validate_unique_name(cls, value):
ensure_unique_names(value)
@@ -420,7 +449,8 @@ DEFAULT_TOOLS_VALUES = {
"tasks": [],
"template": "SK_{folder[name]}{variant}"
}
- ]
+ ],
+ "filter_creator_profiles": []
},
"Workfiles": {
"workfile_template_profiles": [
diff --git a/server_addon/aftereffects/client/ayon_aftereffects/version.py b/server_addon/aftereffects/client/ayon_aftereffects/version.py
index 8ab87ea78c..2faa06ba3a 100644
--- a/server_addon/aftereffects/client/ayon_aftereffects/version.py
+++ b/server_addon/aftereffects/client/ayon_aftereffects/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'aftereffects' version."""
-__version__ = "0.2.0"
+__version__ = "0.2.1"
diff --git a/server_addon/applications/client/ayon_applications/version.py b/server_addon/applications/client/ayon_applications/version.py
index e69de29bb2..fe2358c4a0 100644
--- a/server_addon/applications/client/ayon_applications/version.py
+++ b/server_addon/applications/client/ayon_applications/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'applications' version."""
+__version__ = "0.2.3"
diff --git a/server_addon/flame/client/ayon_flame/plugins/publish/collect_timeline_instances.py b/server_addon/flame/client/ayon_flame/plugins/publish/collect_timeline_instances.py
index 35591f1a0d..7680483db1 100644
--- a/server_addon/flame/client/ayon_flame/plugins/publish/collect_timeline_instances.py
+++ b/server_addon/flame/client/ayon_flame/plugins/publish/collect_timeline_instances.py
@@ -152,7 +152,9 @@ class CollectTimelineInstances(pyblish.api.ContextPlugin):
task["name"]: {"type": task["type"]}
for task in self.add_tasks},
"representations": [],
- "newAssetPublishing": True
+ "newHierarchyIntegration": True,
+ # Backwards compatible (Deprecated since 24/06/06)
+ "newAssetPublishing": True,
})
self.log.debug("__ inst_data: {}".format(pformat(inst_data)))
diff --git a/server_addon/flame/client/ayon_flame/version.py b/server_addon/flame/client/ayon_flame/version.py
index 0004797e59..68bdb6e6a0 100644
--- a/server_addon/flame/client/ayon_flame/version.py
+++ b/server_addon/flame/client/ayon_flame/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'flame' version."""
-__version__ = "0.2.0"
+__version__ = "0.2.1"
diff --git a/server_addon/flame/package.py b/server_addon/flame/package.py
index f228e61f8e..b25a514a9f 100644
--- a/server_addon/flame/package.py
+++ b/server_addon/flame/package.py
@@ -1,6 +1,6 @@
name = "flame"
title = "Flame"
-version = "0.2.0"
+version = "0.2.1"
client_dir = "ayon_flame"
diff --git a/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
index 27b3b54ffa..ca60231361 100644
--- a/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
+++ b/server_addon/hiero/client/ayon_hiero/plugins/publish/precollect_instances.py
@@ -140,7 +140,9 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
# add all additional tags
"tags": phiero.get_track_item_tags(track_item),
- "newAssetPublishing": True
+ "newHierarchyIntegration": True,
+ # Backwards compatible (Deprecated since 24/06/06)
+ "newAssetPublishing": True,
})
# otio clip data
diff --git a/server_addon/hiero/client/ayon_hiero/version.py b/server_addon/hiero/client/ayon_hiero/version.py
index fe6d62221c..74ebfba8b0 100644
--- a/server_addon/hiero/client/ayon_hiero/version.py
+++ b/server_addon/hiero/client/ayon_hiero/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'hiero' version."""
-__version__ = "0.2.1"
+__version__ = "0.2.2"
diff --git a/server_addon/hiero/package.py b/server_addon/hiero/package.py
index 95714d95da..eba3fb12f4 100644
--- a/server_addon/hiero/package.py
+++ b/server_addon/hiero/package.py
@@ -1,6 +1,6 @@
name = "hiero"
title = "Hiero"
-version = "0.2.1"
+version = "0.2.2"
client_dir = "ayon_hiero"
ayon_required_addons = {
diff --git a/server_addon/maya/client/ayon_maya/version.py b/server_addon/maya/client/ayon_maya/version.py
index e69de29bb2..1655067287 100644
--- a/server_addon/maya/client/ayon_maya/version.py
+++ b/server_addon/maya/client/ayon_maya/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'maya' version."""
+__version__ = "0.2.2"
diff --git a/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
index 10e1eba3e3..e2b6e7ba37 100644
--- a/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
+++ b/server_addon/resolve/client/ayon_resolve/plugins/publish/precollect_instances.py
@@ -101,6 +101,8 @@ class PrecollectInstances(pyblish.api.ContextPlugin):
"fps": context.data["fps"],
"handleStart": handle_start,
"handleEnd": handle_end,
+ "newHierarchyIntegration": True,
+ # Backwards compatible (Deprecated since 24/06/06)
"newAssetPublishing": True,
"families": ["clip"],
"productType": product_type,
diff --git a/server_addon/resolve/client/ayon_resolve/version.py b/server_addon/resolve/client/ayon_resolve/version.py
index c8f8df554c..53e8882ed7 100644
--- a/server_addon/resolve/client/ayon_resolve/version.py
+++ b/server_addon/resolve/client/ayon_resolve/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'resolve' version."""
-__version__ = "0.2.0"
+__version__ = "0.2.1"
diff --git a/server_addon/resolve/package.py b/server_addon/resolve/package.py
index 993f700e40..47b6c9a8b6 100644
--- a/server_addon/resolve/package.py
+++ b/server_addon/resolve/package.py
@@ -1,6 +1,6 @@
name = "resolve"
title = "DaVinci Resolve"
-version = "0.2.0"
+version = "0.2.1"
client_dir = "ayon_resolve"
diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py
index a2f6f211f5..b013ed6864 100644
--- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py
+++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/create/create_editorial.py
@@ -676,6 +676,8 @@ or updating already created. Publishing will create OTIO file.
"shotName": shot_name,
"variant": variant_name,
"task": None,
+ "newHierarchyIntegration": True,
+ # Backwards compatible (Deprecated since 24/06/06)
"newAssetPublishing": True,
"trackStartFrame": track_start_frame,
"timelineOffset": timeline_offset,
diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py
index de18050f41..c2894e15ad 100644
--- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py
+++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/collect_sequence_frame_data.py
@@ -28,8 +28,12 @@ class CollectSequenceFrameData(
return
# editorial would fail since they might not be in database yet
- new_folder_publishing = instance.data.get("newAssetPublishing")
- if new_folder_publishing:
+ new_hierarchy = (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ )
+ if new_hierarchy:
self.log.debug("Instance is creating new folders. Skipping.")
return
diff --git a/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py
index 13f13b05bb..42127f4a5f 100644
--- a/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py
+++ b/server_addon/traypublisher/client/ayon_traypublisher/plugins/publish/validate_frame_ranges.py
@@ -33,8 +33,12 @@ class ValidateFrameRange(OptionalPyblishPluginMixin,
return
# editorial would fail since they might not be in database yet
- new_folder_publishing = instance.data.get("newAssetPublishing")
- if new_folder_publishing:
+ new_hierarchy = (
+ instance.data.get("newHierarchyIntegration")
+ # Backwards compatible (Deprecated since 24/06/06)
+ or instance.data.get("newAssetPublishing")
+ )
+ if new_hierarchy:
self.log.debug("Instance is creating new folder. Skipping.")
return
diff --git a/server_addon/traypublisher/client/ayon_traypublisher/version.py b/server_addon/traypublisher/client/ayon_traypublisher/version.py
index 01f2ad4f1d..514b5691d3 100644
--- a/server_addon/traypublisher/client/ayon_traypublisher/version.py
+++ b/server_addon/traypublisher/client/ayon_traypublisher/version.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'traypublisher' version."""
-__version__ = "0.2.2"
+__version__ = "0.2.3"
diff --git a/server_addon/traypublisher/package.py b/server_addon/traypublisher/package.py
index 85611526d0..8fc725c6cb 100644
--- a/server_addon/traypublisher/package.py
+++ b/server_addon/traypublisher/package.py
@@ -1,6 +1,6 @@
name = "traypublisher"
title = "TrayPublisher"
-version = "0.2.2"
+version = "0.2.3"
client_dir = "ayon_traypublisher"
diff --git a/client/ayon_core/hosts/unreal/README.md b/server_addon/unreal/client/ayon_unreal/README.md
similarity index 100%
rename from client/ayon_core/hosts/unreal/README.md
rename to server_addon/unreal/client/ayon_unreal/README.md
diff --git a/server_addon/unreal/client/ayon_unreal/__init__.py b/server_addon/unreal/client/ayon_unreal/__init__.py
new file mode 100644
index 0000000000..6be5ae13c9
--- /dev/null
+++ b/server_addon/unreal/client/ayon_unreal/__init__.py
@@ -0,0 +1,10 @@
+from .version import __version__
+from .addon import UNREAL_ADDON_ROOT, UnrealAddon
+
+
+__all__ = (
+ "__version__",
+
+ "UNREAL_ADDON_ROOT",
+ "UnrealAddon",
+)
diff --git a/client/ayon_core/hosts/unreal/addon.py b/server_addon/unreal/client/ayon_unreal/addon.py
similarity index 85%
rename from client/ayon_core/hosts/unreal/addon.py
rename to server_addon/unreal/client/ayon_unreal/addon.py
index c65490bd8c..d9e1bfaca9 100644
--- a/client/ayon_core/hosts/unreal/addon.py
+++ b/server_addon/unreal/client/ayon_unreal/addon.py
@@ -2,16 +2,19 @@ import os
import re
from ayon_core.addon import AYONAddon, IHostAddon
-UNREAL_ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
+from .version import __version__
+
+UNREAL_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__))
class UnrealAddon(AYONAddon, IHostAddon):
name = "unreal"
+ version = __version__
host_name = "unreal"
def get_global_environments(self):
return {
- "AYON_UNREAL_ROOT": UNREAL_ROOT_DIR,
+ "AYON_UNREAL_ROOT": UNREAL_ADDON_ROOT,
}
def add_implementation_envs(self, env, app):
@@ -40,11 +43,11 @@ class UnrealAddon(AYONAddon, IHostAddon):
ue_version = app.name.replace("-", ".")
unreal_plugin_path = os.path.join(
- UNREAL_ROOT_DIR, "integration", "UE_{}".format(ue_version), "Ayon"
+ UNREAL_ADDON_ROOT, "integration", "UE_{}".format(ue_version), "Ayon"
)
if not Path(unreal_plugin_path).exists():
compatible_versions = get_compatible_integration(
- ue_version, Path(UNREAL_ROOT_DIR) / "integration"
+ ue_version, Path(UNREAL_ADDON_ROOT) / "integration"
)
if compatible_versions:
unreal_plugin_path = compatible_versions[-1] / "Ayon"
@@ -67,7 +70,7 @@ class UnrealAddon(AYONAddon, IHostAddon):
if app.host_name != self.host_name:
return []
return [
- os.path.join(UNREAL_ROOT_DIR, "hooks")
+ os.path.join(UNREAL_ADDON_ROOT, "hooks")
]
def get_workfile_extensions(self):
diff --git a/client/ayon_core/hosts/unreal/api/__init__.py b/server_addon/unreal/client/ayon_unreal/api/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/api/__init__.py
rename to server_addon/unreal/client/ayon_unreal/api/__init__.py
diff --git a/client/ayon_core/hosts/unreal/api/helpers.py b/server_addon/unreal/client/ayon_unreal/api/helpers.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/api/helpers.py
rename to server_addon/unreal/client/ayon_unreal/api/helpers.py
diff --git a/client/ayon_core/hosts/unreal/api/pipeline.py b/server_addon/unreal/client/ayon_unreal/api/pipeline.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/api/pipeline.py
rename to server_addon/unreal/client/ayon_unreal/api/pipeline.py
index a60564d5b0..f04d8e10a4 100644
--- a/client/ayon_core/hosts/unreal/api/pipeline.py
+++ b/server_addon/unreal/client/ayon_unreal/api/pipeline.py
@@ -21,8 +21,8 @@ from ayon_core.pipeline import (
get_current_project_name,
)
from ayon_core.tools.utils import host_tools
-import ayon_core.hosts.unreal
from ayon_core.host import HostBase, ILoadHost, IPublishHost
+from ayon_unreal import UNREAL_ADDON_ROOT
import unreal # noqa
@@ -36,8 +36,7 @@ UNREAL_VERSION = semver.VersionInfo(
*os.getenv("AYON_UNREAL_VERSION").split(".")
)
-HOST_DIR = os.path.dirname(os.path.abspath(ayon_core.hosts.unreal.__file__))
-PLUGINS_DIR = os.path.join(HOST_DIR, "plugins")
+PLUGINS_DIR = os.path.join(UNREAL_ADDON_ROOT, "plugins")
PUBLISH_PATH = os.path.join(PLUGINS_DIR, "publish")
LOAD_PATH = os.path.join(PLUGINS_DIR, "load")
CREATE_PATH = os.path.join(PLUGINS_DIR, "create")
@@ -324,7 +323,7 @@ def show_tools_popup():
Popup will disappear on click or losing focus.
"""
- from ayon_core.hosts.unreal.api import tools_ui
+ from ayon_unreal.api import tools_ui
tools_ui.show_tools_popup()
@@ -334,7 +333,7 @@ def show_tools_dialog():
Dialog will stay visible.
"""
- from ayon_core.hosts.unreal.api import tools_ui
+ from ayon_unreal.api import tools_ui
tools_ui.show_tools_dialog()
diff --git a/client/ayon_core/hosts/unreal/api/plugin.py b/server_addon/unreal/client/ayon_unreal/api/plugin.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/api/plugin.py
rename to server_addon/unreal/client/ayon_unreal/api/plugin.py
diff --git a/client/ayon_core/hosts/unreal/api/rendering.py b/server_addon/unreal/client/ayon_unreal/api/rendering.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/api/rendering.py
rename to server_addon/unreal/client/ayon_unreal/api/rendering.py
index 395513aefa..6ae9fee26d 100644
--- a/client/ayon_core/hosts/unreal/api/rendering.py
+++ b/server_addon/unreal/client/ayon_unreal/api/rendering.py
@@ -4,8 +4,8 @@ import unreal
from ayon_core.settings import get_project_settings
from ayon_core.pipeline import Anatomy
-from ayon_core.hosts.unreal.api import pipeline
from ayon_core.tools.utils import show_message_dialog
+from ayon_unreal.api import pipeline
queue = None
diff --git a/client/ayon_core/hosts/unreal/api/tools_ui.py b/server_addon/unreal/client/ayon_unreal/api/tools_ui.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/api/tools_ui.py
rename to server_addon/unreal/client/ayon_unreal/api/tools_ui.py
index efae5bb702..f464d39b92 100644
--- a/client/ayon_core/hosts/unreal/api/tools_ui.py
+++ b/server_addon/unreal/client/ayon_unreal/api/tools_ui.py
@@ -7,7 +7,7 @@ from ayon_core import (
)
from ayon_core.tools.utils import host_tools
from ayon_core.tools.utils.lib import qt_app_context
-from ayon_core.hosts.unreal.api import rendering
+from ayon_unreal.api import rendering
class ToolsBtnsWidget(QtWidgets.QWidget):
diff --git a/client/ayon_core/hosts/unreal/hooks/pre_workfile_preparation.py b/server_addon/unreal/client/ayon_unreal/hooks/pre_workfile_preparation.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/hooks/pre_workfile_preparation.py
rename to server_addon/unreal/client/ayon_unreal/hooks/pre_workfile_preparation.py
index e38591f65d..e70b3131b3 100644
--- a/client/ayon_core/hosts/unreal/hooks/pre_workfile_preparation.py
+++ b/server_addon/unreal/client/ayon_unreal/hooks/pre_workfile_preparation.py
@@ -15,12 +15,12 @@ from ayon_applications import (
LaunchTypes,
)
from ayon_core.pipeline.workfile import get_workfile_template_key
-import ayon_core.hosts.unreal.lib as unreal_lib
-from ayon_core.hosts.unreal.ue_workers import (
+import ayon_unreal.lib as unreal_lib
+from ayon_unreal.ue_workers import (
UEProjectGenerationWorker,
UEPluginInstallWorker
)
-from ayon_core.hosts.unreal.ui import SplashScreen
+from ayon_unreal.ui import SplashScreen
class UnrealPrelaunchHook(PreLaunchHook):
diff --git a/client/ayon_core/hosts/unreal/integration b/server_addon/unreal/client/ayon_unreal/integration
similarity index 100%
rename from client/ayon_core/hosts/unreal/integration
rename to server_addon/unreal/client/ayon_unreal/integration
diff --git a/client/ayon_core/hosts/unreal/lib.py b/server_addon/unreal/client/ayon_unreal/lib.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/lib.py
rename to server_addon/unreal/client/ayon_unreal/lib.py
diff --git a/client/ayon_core/hosts/unreal/plugins/__init__.py b/server_addon/unreal/client/ayon_unreal/plugins/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/__init__.py
rename to server_addon/unreal/client/ayon_unreal/plugins/__init__.py
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_camera.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_camera.py
similarity index 90%
rename from client/ayon_core/hosts/unreal/plugins/create/create_camera.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_camera.py
index 3ffb9dd70b..d9a66215db 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_camera.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_camera.py
@@ -2,8 +2,8 @@
import unreal
from ayon_core.pipeline import CreatorError
-from ayon_core.hosts.unreal.api.pipeline import UNREAL_VERSION
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.pipeline import UNREAL_VERSION
+from ayon_unreal.api.plugin import (
UnrealAssetCreator,
)
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_layout.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_layout.py
similarity index 84%
rename from client/ayon_core/hosts/unreal/plugins/create/create_layout.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_layout.py
index 9bcddfe507..fa4fc072ae 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_layout.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_layout.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.plugin import (
UnrealActorCreator,
)
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_look.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_look.py
similarity index 96%
rename from client/ayon_core/hosts/unreal/plugins/create/create_look.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_look.py
index edc6d45f2f..9017997864 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_look.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_look.py
@@ -2,10 +2,10 @@
import unreal
from ayon_core.pipeline import CreatorError
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api.pipeline import (
create_folder
)
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.plugin import (
UnrealAssetCreator
)
from ayon_core.lib import UILabelDef
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_render.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_render.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/plugins/create/create_render.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_render.py
index 5a96d9809c..e1999e5385 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_render.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_render.py
@@ -3,12 +3,12 @@ from pathlib import Path
import unreal
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api.pipeline import (
UNREAL_VERSION,
create_folder,
get_subsequences,
)
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.plugin import (
UnrealAssetCreator
)
from ayon_core.lib import (
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_staticmeshfbx.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_staticmeshfbx.py
similarity index 85%
rename from client/ayon_core/hosts/unreal/plugins/create/create_staticmeshfbx.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_staticmeshfbx.py
index 603b852873..79cc249083 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_staticmeshfbx.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_staticmeshfbx.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.plugin import (
UnrealAssetCreator,
)
diff --git a/client/ayon_core/hosts/unreal/plugins/create/create_uasset.py b/server_addon/unreal/client/ayon_unreal/plugins/create/create_uasset.py
similarity index 97%
rename from client/ayon_core/hosts/unreal/plugins/create/create_uasset.py
rename to server_addon/unreal/client/ayon_unreal/plugins/create/create_uasset.py
index 1cd532c63d..f053503c45 100644
--- a/client/ayon_core/hosts/unreal/plugins/create/create_uasset.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/create/create_uasset.py
@@ -4,7 +4,7 @@ from pathlib import Path
import unreal
from ayon_core.pipeline import CreatorError
-from ayon_core.hosts.unreal.api.plugin import (
+from ayon_unreal.api.plugin import (
UnrealAssetCreator,
)
diff --git a/client/ayon_core/hosts/unreal/plugins/inventory/delete_unused_assets.py b/server_addon/unreal/client/ayon_unreal/plugins/inventory/delete_unused_assets.py
similarity index 93%
rename from client/ayon_core/hosts/unreal/plugins/inventory/delete_unused_assets.py
rename to server_addon/unreal/client/ayon_unreal/plugins/inventory/delete_unused_assets.py
index 1f63a1697a..1892f8ab14 100644
--- a/client/ayon_core/hosts/unreal/plugins/inventory/delete_unused_assets.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/inventory/delete_unused_assets.py
@@ -1,7 +1,7 @@
import unreal
-from ayon_core.hosts.unreal.api.tools_ui import qt_app_context
-from ayon_core.hosts.unreal.api.pipeline import delete_asset_if_unused
+from ayon_unreal.api.tools_ui import qt_app_context
+from ayon_unreal.api.pipeline import delete_asset_if_unused
from ayon_core.pipeline import InventoryAction
diff --git a/client/ayon_core/hosts/unreal/plugins/inventory/update_actors.py b/server_addon/unreal/client/ayon_unreal/plugins/inventory/update_actors.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/inventory/update_actors.py
rename to server_addon/unreal/client/ayon_unreal/plugins/inventory/update_actors.py
index 96965d68e6..3ca861f0c7 100644
--- a/client/ayon_core/hosts/unreal/plugins/inventory/update_actors.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/inventory/update_actors.py
@@ -1,6 +1,6 @@
import unreal
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api.pipeline import (
ls,
replace_static_mesh_actors,
replace_skeletal_mesh_actors,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_alembic_animation.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_alembic_animation.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_alembic_animation.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_alembic_animation.py
index a12f4f41b4..109daf86c4 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_alembic_animation.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_alembic_animation.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api import pipeline as unreal_pipeline
+from ayon_unreal.api import plugin
+from ayon_unreal.api import pipeline as unreal_pipeline
import unreal # noqa
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_animation.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_animation.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/plugins/load/load_animation.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_animation.py
index f6a612ce53..1cb5c58ea4 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_animation.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_animation.py
@@ -13,8 +13,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api import pipeline as unreal_pipeline
+from ayon_unreal.api import plugin
+from ayon_unreal.api import pipeline as unreal_pipeline
class AnimationFBXLoader(plugin.Loader):
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_camera.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_camera.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/plugins/load/load_camera.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_camera.py
index 681c83c6a1..10172094b6 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_camera.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_camera.py
@@ -16,8 +16,8 @@ from ayon_core.pipeline import (
get_current_project_name,
get_representation_path,
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
generate_sequence,
set_sequence_hierarchy,
create_container,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_geometrycache_abc.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_geometrycache_abc.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_geometrycache_abc.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_geometrycache_abc.py
index ae7d41192a..1262ade9af 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_geometrycache_abc.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_geometrycache_abc.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
AYON_ASSET_DIR,
create_container,
imprint,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_layout.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_layout.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/plugins/load/load_layout.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_layout.py
index 49d95c6459..25883a1ffb 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_layout.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_layout.py
@@ -27,8 +27,8 @@ from ayon_core.pipeline import (
)
from ayon_core.pipeline.context_tools import get_current_folder_entity
from ayon_core.settings import get_current_project_settings
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
generate_sequence,
set_sequence_hierarchy,
create_container,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_layout_existing.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_layout_existing.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/plugins/load/load_layout_existing.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_layout_existing.py
index f9d438367b..df5f154d7c 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_layout_existing.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_layout_existing.py
@@ -12,8 +12,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID,
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api import pipeline as upipeline
+from ayon_unreal.api import plugin
+from ayon_unreal.api import pipeline as upipeline
class ExistingLayoutLoader(plugin.Loader):
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_abc.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_abc.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_abc.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_abc.py
index dfc5d58708..5db3e364f1 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_abc.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_abc.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
AYON_ASSET_DIR,
create_container,
imprint,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_fbx.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_fbx.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_fbx.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_fbx.py
index 513404ab98..6f1ebc1d51 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_skeletalmesh_fbx.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_skeletalmesh_fbx.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
AYON_ASSET_DIR,
create_container,
imprint,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_abc.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_abc.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_abc.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_abc.py
index 0bf6ce9eaa..f60a173cf6 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_abc.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_abc.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
AYON_ASSET_DIR,
create_container,
imprint,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_fbx.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_fbx.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_fbx.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_fbx.py
index b7bb57ac23..914f0e23f2 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_staticmesh_fbx.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_staticmesh_fbx.py
@@ -6,8 +6,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api.pipeline import (
+from ayon_unreal.api import plugin
+from ayon_unreal.api.pipeline import (
AYON_ASSET_DIR,
create_container,
imprint,
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_uasset.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_uasset.py
similarity index 97%
rename from client/ayon_core/hosts/unreal/plugins/load/load_uasset.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_uasset.py
index 63f23ecc11..31c13aa9ee 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_uasset.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_uasset.py
@@ -7,8 +7,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api import pipeline as unreal_pipeline
+from ayon_unreal.api import plugin
+from ayon_unreal.api import pipeline as unreal_pipeline
import unreal # noqa
diff --git a/client/ayon_core/hosts/unreal/plugins/load/load_yeticache.py b/server_addon/unreal/client/ayon_unreal/plugins/load/load_yeticache.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/load/load_yeticache.py
rename to server_addon/unreal/client/ayon_unreal/plugins/load/load_yeticache.py
index 708fc83745..79cf8e21f7 100644
--- a/client/ayon_core/hosts/unreal/plugins/load/load_yeticache.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/load/load_yeticache.py
@@ -7,8 +7,8 @@ from ayon_core.pipeline import (
get_representation_path,
AYON_CONTAINER_ID
)
-from ayon_core.hosts.unreal.api import plugin
-from ayon_core.hosts.unreal.api import pipeline as unreal_pipeline
+from ayon_unreal.api import plugin
+from ayon_unreal.api import pipeline as unreal_pipeline
import unreal # noqa
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/collect_current_file.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/collect_current_file.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/collect_current_file.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/collect_current_file.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/collect_instance_members.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/collect_instance_members.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/collect_instance_members.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/collect_instance_members.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/collect_remove_marked.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/collect_remove_marked.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/collect_remove_marked.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/collect_remove_marked.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/collect_render_instances.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/collect_render_instances.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/publish/collect_render_instances.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/collect_render_instances.py
index ce2a03155b..a93bca70da 100644
--- a/client/ayon_core/hosts/unreal/plugins/publish/collect_render_instances.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/publish/collect_render_instances.py
@@ -5,7 +5,7 @@ import pyblish.api
from ayon_core.pipeline import get_current_project_name
from ayon_core.pipeline import Anatomy
-from ayon_core.hosts.unreal.api import pipeline
+from ayon_unreal.api import pipeline
class CollectRenderInstances(pyblish.api.InstancePlugin):
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/extract_camera.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/extract_camera.py
similarity index 98%
rename from client/ayon_core/hosts/unreal/plugins/publish/extract_camera.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/extract_camera.py
index ebc5452011..85f9cb0eaa 100644
--- a/client/ayon_core/hosts/unreal/plugins/publish/extract_camera.py
+++ b/server_addon/unreal/client/ayon_unreal/plugins/publish/extract_camera.py
@@ -5,7 +5,7 @@ import os
import unreal
from ayon_core.pipeline import publish
-from ayon_core.hosts.unreal.api.pipeline import UNREAL_VERSION
+from ayon_unreal.api.pipeline import UNREAL_VERSION
class ExtractCamera(publish.Extractor):
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/extract_layout.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/extract_layout.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/extract_layout.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/extract_layout.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/extract_look.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/extract_look.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/extract_look.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/extract_look.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/extract_uasset.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/extract_uasset.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/extract_uasset.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/extract_uasset.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/validate_no_dependencies.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/validate_no_dependencies.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/validate_no_dependencies.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/validate_no_dependencies.py
diff --git a/client/ayon_core/hosts/unreal/plugins/publish/validate_sequence_frames.py b/server_addon/unreal/client/ayon_unreal/plugins/publish/validate_sequence_frames.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/plugins/publish/validate_sequence_frames.py
rename to server_addon/unreal/client/ayon_unreal/plugins/publish/validate_sequence_frames.py
diff --git a/client/ayon_core/hosts/unreal/ue_workers.py b/server_addon/unreal/client/ayon_unreal/ue_workers.py
similarity index 99%
rename from client/ayon_core/hosts/unreal/ue_workers.py
rename to server_addon/unreal/client/ayon_unreal/ue_workers.py
index 256c0557be..1be1287901 100644
--- a/client/ayon_core/hosts/unreal/ue_workers.py
+++ b/server_addon/unreal/client/ayon_unreal/ue_workers.py
@@ -11,7 +11,7 @@ from typing import List, Union
from qtpy import QtCore
-import ayon_core.hosts.unreal.lib as ue_lib
+import ayon_unreal.lib as ue_lib
from ayon_core.settings import get_project_settings
diff --git a/client/ayon_core/hosts/unreal/ui/__init__.py b/server_addon/unreal/client/ayon_unreal/ui/__init__.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/ui/__init__.py
rename to server_addon/unreal/client/ayon_unreal/ui/__init__.py
diff --git a/client/ayon_core/hosts/unreal/ui/splash_screen.py b/server_addon/unreal/client/ayon_unreal/ui/splash_screen.py
similarity index 100%
rename from client/ayon_core/hosts/unreal/ui/splash_screen.py
rename to server_addon/unreal/client/ayon_unreal/ui/splash_screen.py
diff --git a/server_addon/unreal/client/ayon_unreal/version.py b/server_addon/unreal/client/ayon_unreal/version.py
new file mode 100644
index 0000000000..1ddc580946
--- /dev/null
+++ b/server_addon/unreal/client/ayon_unreal/version.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+"""Package declaring AYON addon 'unreal' version."""
+__version__ = "0.2.0"
diff --git a/server_addon/unreal/package.py b/server_addon/unreal/package.py
index cab89ca873..f1c56b15f6 100644
--- a/server_addon/unreal/package.py
+++ b/server_addon/unreal/package.py
@@ -1,3 +1,10 @@
name = "unreal"
title = "Unreal"
-version = "0.1.0"
+version = "0.2.0"
+
+client_dir = "ayon_unreal"
+
+ayon_required_addons = {
+ "core": ">0.3.2",
+}
+ayon_compatible_addons = {}