mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
197 lines
5 KiB
JavaScript
197 lines
5 KiB
JavaScript
// ***************************************************************************
|
|
// * Pype Harmony Host *
|
|
// ***************************************************************************
|
|
|
|
|
|
/**
|
|
* @namespace
|
|
* @classdesc PypeHarmony encapsulate all Pype related functions.
|
|
* @property {Object} loaders Namespace for Loaders JS code.
|
|
* @property {Object} Creators Namespace for Creators JS code.
|
|
* @property {Object} Publish Namespace for Publish plugins JS code.
|
|
*/
|
|
var PypeHarmony = {
|
|
Loaders: {},
|
|
Creators: {},
|
|
Publish: {}
|
|
};
|
|
|
|
|
|
/**
|
|
* Show message in Harmony.
|
|
* @function
|
|
* @param {string} message Argument containing message.
|
|
*/
|
|
PypeHarmony.message = function(message) {
|
|
MessageBox.information(message);
|
|
};
|
|
|
|
|
|
/**
|
|
* Set scene setting based on shot/asset settngs.
|
|
* @function
|
|
* @param {obj} settings Scene settings.
|
|
*/
|
|
PypeHarmony.setSceneSettings = function(settings) {
|
|
if (settings.fps) {
|
|
scene.setFrameRate(settings.fps);
|
|
}
|
|
|
|
if (settings.frameStart && settings.frameEnd) {
|
|
var duration = settings.frameEnd - settings.frameStart + 1;
|
|
|
|
if (frame.numberOf() > duration) {
|
|
frame.remove(duration, frame.numberOf() - duration);
|
|
}
|
|
|
|
if (frame.numberOf() < duration) {
|
|
frame.insert(duration, duration - frame.numberOf());
|
|
}
|
|
|
|
scene.setStartFrame(1);
|
|
scene.setStopFrame(duration);
|
|
}
|
|
if (settings.resolutionWidth && settings.resolutionHeight) {
|
|
scene.setDefaultResolution(
|
|
settings.resolutionWidth, settings.resolutionHeight, 41.112
|
|
);
|
|
}
|
|
};
|
|
|
|
|
|
/**
|
|
* Get scene settings.
|
|
* @function
|
|
* @return {array} Scene settings.
|
|
*/
|
|
PypeHarmony.getSceneSettings = function() {
|
|
return [
|
|
about.getApplicationPath(),
|
|
scene.currentProjectPath(),
|
|
scene.currentScene(),
|
|
scene.getFrameRate(),
|
|
scene.getStartFrame(),
|
|
scene.getStopFrame(),
|
|
sound.getSoundtrackAll().path(),
|
|
scene.defaultResolutionX(),
|
|
scene.defaultResolutionY()
|
|
];
|
|
};
|
|
|
|
|
|
/**
|
|
* Set color of nodes.
|
|
* @function
|
|
* @param {array} nodes List of nodes.
|
|
* @param {array} rgba array of RGBA components of color.
|
|
*/
|
|
PypeHarmony.setColor = function(nodes, rgba) {
|
|
for (var i =0; i <= nodes.length - 1; ++i) {
|
|
var color = PypeHarmony.color(rgba);
|
|
node.setColor(nodes[i], color);
|
|
}
|
|
};
|
|
|
|
|
|
/**
|
|
* Extract Template into file.
|
|
* @function
|
|
* @param {array} args Arguments for template extraction.
|
|
*
|
|
* @example
|
|
* // arguments are in this order:
|
|
* var args = [backdrops, nodes, templateFilename, templateDir];
|
|
*
|
|
*/
|
|
PypeHarmony.exportTemplate = function(args) {
|
|
var tempNode = node.add('Top', 'temp_note', 'NOTE', 0, 0, 0);
|
|
var templateGroup = node.createGroup(tempNode, 'temp_group');
|
|
node.deleteNode( templateGroup + '/temp_note' );
|
|
|
|
selection.clearSelection();
|
|
for (var f = 0; f < args[1].length; f++) {
|
|
selection.addNodeToSelection(args[1][f]);
|
|
}
|
|
|
|
Action.perform('copy()', 'Node View');
|
|
|
|
selection.clearSelection();
|
|
selection.addNodeToSelection(templateGroup);
|
|
Action.perform('onActionEnterGroup()', 'Node View');
|
|
Action.perform('paste()', 'Node View');
|
|
|
|
// Recreate backdrops in group.
|
|
for (var i = 0; i < args[0].length; i++) {
|
|
MessageLog.trace(args[0][i]);
|
|
Backdrop.addBackdrop(templateGroup, args[0][i]);
|
|
}
|
|
|
|
Action.perform('selectAll()', 'Node View' );
|
|
copyPaste.createTemplateFromSelection(args[2], args[3]);
|
|
|
|
// Unfocus the group in Node view, delete all nodes and backdrops
|
|
// created during the process.
|
|
Action.perform('onActionUpToParent()', 'Node View');
|
|
node.deleteNode(templateGroup, true, true);
|
|
};
|
|
|
|
|
|
/**
|
|
* Toggle instance in Harmony.
|
|
* @function
|
|
* @param {array} args Instance name and value.
|
|
*/
|
|
PypeHarmony.toggleInstance = function(args) {
|
|
node.setEnable(args[0], args[1]);
|
|
};
|
|
|
|
|
|
/**
|
|
* Delete node in Harmony.
|
|
* @function
|
|
* @param {string} _node Node name.
|
|
*/
|
|
PypeHarmony.deleteNode = function(_node) {
|
|
node.deleteNode(_node, true, true);
|
|
};
|
|
|
|
|
|
/**
|
|
* Copy file.
|
|
* @function
|
|
* @param {string} src Source file name.
|
|
* @param {string} dst Destination file name.
|
|
*/
|
|
PypeHarmony.copyFile = function(src, dst) {
|
|
var srcFile = new PermanentFile(src);
|
|
var dstFile = new PermanentFile(dst);
|
|
srcFile.copy(dstFile);
|
|
};
|
|
|
|
|
|
/**
|
|
* create RGBA color from array.
|
|
* @function
|
|
* @param {array} rgba array of rgba values.
|
|
* @return {ColorRGBA} ColorRGBA Harmony class.
|
|
*/
|
|
PypeHarmony.color = function(rgba) {
|
|
return new ColorRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
|
|
};
|
|
|
|
|
|
/**
|
|
* get all dependencies for given node.
|
|
* @function
|
|
* @param {string} node node path.
|
|
* @return {array} List of dependent nodes.
|
|
*/
|
|
PypeHarmony.getDependencies = function(node) {
|
|
var target_node = node;
|
|
var numInput = node.numberOfInputPorts(target_node);
|
|
var dependencies = [];
|
|
for (var i = 0 ; i < numInput; i++) {
|
|
dependencies.push(node.srcNode(target_node, i));
|
|
}
|
|
return dependencies;
|
|
};
|