Considered adding some of this as extra info attributes to the job, but it might not be that simple. We have 4 types of basic dependencies we special handle:
1.: regular file dependency: a cache that has a range (for example, xmesh, fume, prt). Anything that matches the #.extension naming convention, where # is the frame index:
If the current task frames are before the cache, its considered OK, ready to queue
If the current task frames are after the cache, the last frame of the cache needs to exist, otherwise its kept pending
If there is an intersection in the task frames / cache range, all the frames of the intersection need to exist
2.: vray irradiance cache dependency: similar to #1, but if the task range is after the cache range, thats also considered OK & ready to queue.
3.: single file dependency: essentially deadlines ‘asset dependency’ with frame dependency off: typically, TP caches. Single file, the whole job is dependent on it
4.: flowline dependencies: similar to #1, but the file pattern is different (looking for folders with a particular regex for the frame matching), and also has additional parameters (might require multiple samples to exist, and in some cases can ignore missing samples)
#1, #2 and #4 also have an additional artist settable “surrounding frames” property that can be set, which extends the required cache radius by a user defined frame value (so 1 would mean, the frame we are rendering and -1 / +1 as well).
The combination of all these and their properties give about 7 properties for each dependency… I think it might make it harder to maintain if we added all of them as extra info attributes to deadline, instead of just having a single xml file like right now (which is manageable for us).
So… i think maybe a better approach would be, if you guys made the dependency type a plugin customizable mechanism So we could just reimplement this 4 as individual deadline dependency plugins. v7? v8?