[Bf-blender-cvs] [7aac6ef98a9] shot-tools-development: Merge branch 'shot-tools-development' of git.blender.org:blender-studio-tools into shot-tools-development
Jeroen Bakker
noreply at git.blender.org
Fri Jan 15 12:09:34 CET 2021
Commit: 7aac6ef98a9c607c7e573bc4fa1fb40b080a71b1
Author: Jeroen Bakker
Date: Wed Dec 9 14:49:38 2020 +0100
Branches: shot-tools-development
https://developer.blender.org/rB7aac6ef98a9c607c7e573bc4fa1fb40b080a71b1
Merge branch 'shot-tools-development' of git.blender.org:blender-studio-tools into shot-tools-development
===================================================================
===================================================================
diff --cc shot-tools/README.md
index 308cf433eb1,e27ed08951d..343754ab6c2
--- a/shot-tools/README.md
+++ b/shot-tools/README.md
@@@ -1,6 -1,6 +1,6 @@@
-# Project Description
+# Project Description (DRAFT)
- Shot tools is an Add-on that helps studios to work with task specific
+ Shot Tools is an Add-on that helps studios to work with task specific
blend-files. The main functionalities are
* Build blend files for a specific task and shot.
@@@ -29,9 -29,9 +29,9 @@@ systems. The connectors will add flexib
in multiple productions or studios.
In the configuration files the TD can setup the connectors that are use for
-the production. There are several connectors in the add-on:
+the production. Possible connectors would be:
- * Connector for text based config files (json/yaml).
+ * Connector for text based config files (json/yaml).
* Connector for kitsu (https://www.cg-wire.com/en/kitsu.html).
* Connector for blend files.
@@@ -63,73 -63,12 +63,73 @@@ def hook_task_anim(task: shot_tools.Tas
"""
```
+### Data
+
+All hooks will must have pythons `**kwargs` parameter. The `kwargs` contains
+the context at the moment the hook is invoked. The context can contain the
+following items.
+
+* `production`: `shot_tools.Production`: Include the name of the production
+ and the location on the filesystem.
+* `task`: `shot_tools.Task`: The task (combination of task_type and shot)
+* `task_type`: `shot_tools.TaskType`: Is part of the `task`.
+* `sequence`: `shot_tools.Sequence`: Is part of `shot`.
+* `shot`: `shot_tools.Shot` Is part of `task`.
+* `asset`: `shot_tools.Asset`: Only available during asset loading phase.
+* `asset_type`: `shot_tools.AssetType`: Only available during asset loading phase.
+
+### Execution Order
+
The add-on will internally create a list containing the hooks that needs to be
- executed for the command in the order what will make sense. It will then
- execute them one by one.
+ executed for the command in a sensible order. It will then execute them in that
+ order.
-A hook can request/use needed data by simply adding a parameter. The `**kwargs`
-will contain data that cannot be mapped to a parameter.
+By default the next order will be used:
+
+* Production wide hooks
+* Asset hooks
+* Asset Type hooks
+* Sequence hooks
+* Shot hooks
+* Task type hooks
+
+When a hook needs is defined to match an asset it will always be run when during
+the asset loading phase.
+
+#### Events
+
+When order of execution can be customized by adding the optional `run_before`
+or `run_after` parameters.
+
+```
+ at shot_tools.hook(match_task_type='anim',
+ run_after=[shot_tools.events.AssetsLoaded()],
+ run_before=[shot_tools.events.ShotOverrides()])
+def hook_task_anim(task: shot_tools.Task, shot: shot_tools.Shot, **kwargs) -> None:
+ """
+ Specific overrides for any animation task run after all assets have been loaded.
+ """
+```
+
+Events could be:
+
+* `shot_tools.events.BuildStart`
+* `shot_tools.events.ProductionSettingsLoaded`
+* `shot_tools.events.AssetsLoaded`
+* `shot_tools.events.AssetTypeOverrides`
+* `shot_tools.events.SequenceOverrides`
+* `shot_tools.events.ShotOverrides`
+* `shot_tools.events.TaskTypeOverrides`
+* `shot_tools.events.BuildFinished`
+* `shot_tools.events.HookStart`
+* `shot_tools.events.HookEnd`
+
+During usage we should see which one of these or other events are needed.
+
+`shot_tools.events.BuildStart`, `shot_tools.events.ProductionSettingsLoaded`
+and `shot_tools.events.HookStart` can only be used in the `run_after`
+parameter. `shot_tools.events.BuildFinished`, `shot_tools.events.HookFinished`
+can only be used in the `run_before` parameter.
## API
More information about the Bf-blender-cvs
mailing list