added collector to collect instance frame start/end

This commit is contained in:
iLLiCiTiT 2021-04-28 16:11:30 +02:00
parent 43be4fdb4f
commit 8a319926d4
2 changed files with 37 additions and 3 deletions

View file

@ -0,0 +1,37 @@
import pyblish.api
class CollectOutputFrameRange(pyblish.api.ContextPlugin):
"""Collect frame start/end from context.
When instances are collected context does not contain `frameStart` and
`frameEnd` keys yet. They are collected in global plugin
`CollectAvalonEntities`.
"""
label = "Collect output frame range"
order = pyblish.api.CollectorOrder
hosts = ["tvpaint"]
def process(self, context):
for instance in context:
frame_start = instance.data.get("frameStart")
frame_end = instance.data.get("frameEnd")
if frame_start is not None and frame_end is not None:
self.log.debug(
"Instance {} already has set frames {}-{}".format(
str(instance), frame_start, frame_end
)
)
return
frame_start = context.data.get("frameStart")
frame_end = context.data.get("frameEnd")
instance.data["frameStart"] = frame_start
instance.data["frameEnd"] = frame_end
self.log.info(
"Set frames {}-{} on instance {} ".format(
frame_start, frame_end, str(instance)
)
)

View file

@ -86,9 +86,6 @@ class CollectInstances(pyblish.api.ContextPlugin):
instance.data["publish"] = any_visible
instance.data["frameStart"] = context.data["sceneMarkIn"] + 1
instance.data["frameEnd"] = context.data["sceneMarkOut"] + 1
self.log.debug("Created instance: {}\n{}".format(
instance, json.dumps(instance.data, indent=4)
))