1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120 |
- var syncRatems = 100;
- var syncDelta = 0.;
- var doSync = false ;
- var inibValuesChanged = false ;
- var doSyncKeysCues = false ;
- var saveFile = script.addFileParameter("auto save sequence","");
- var saveRatems = 30;
- var saveDelta = 0.;
- var debug = true;
- var debugFile;
- var parametersPath = local.getChild("parameters") ;
- var sequence = '' ;
- var sequencePath = local.getChild("parameters").sequence ;
- var file ;
- var filePath = local.parameters.sequenceFile ;
- var newGroupLayers = local.values.newGroup.layers ;
- var cues = local.getChild("values").keys.cues ;
- var layers = local.getChild("values").keys.layers ;
- var rebuildValues = script.addTrigger("rebuild values", "adds a key at current cursor position" );
- var refreshKeys = script.addTrigger("refresh keys", "truc");
- var TrigprintKeys = script.addTrigger("printKeys","truc");
- var clearSeq = script.addTrigger("clear Sequence","truc");
- var UIposGet = script.addTrigger("get UIPos", "");
- var viewZoom = script.addFloatParameter("View Zoom", "", 0.5, 0., 1.);
- var viewFollowCursor = script.addBoolParameter("follow Cursor", "", false);
- var followCursor = false ;
- var followZoom = 0.5 ;
- var followRatems = 1.;
- var followDelta = 0.;
-
-
-
-
-
- function init() {
- script.log("LOADED SEQUENCE GROUPING MANAGEMENT MODULE ");
-
-
- updateSyncRate();
- updateSynchronize();
-
- saveFile.set("sequence_autosave.json");
- saveFile.setAttribute("readonly", true);
-
-
-
-
-
-
-
-
-
-
- sequence = local.getChild("parameters").sequence.getKey();
-
-
-
- if(sequence == ""){refreshSequenceEnum();}
- else{
- sequencePath.removeOptions();
- sequencePath.addOption(sequence,0);
- sequencePath.setAttribute("readonly", true);
- }
- sequence = local.getChild("parameters").sequence.getKey();
- seq_readZoomValue();
- }
- function scriptParameterChanged(param){
-
- if (param.is(TrigprintKeys) ){printKeys();}
- else if(param.is(viewZoom)) {
- script.log("view zoom changed");
- followZoom = param.get();
- }
- if (param.is(viewFollowCursor)){
- script.log("follow cursor " + (param.get() ? "ON" : "OFF"));
- followCursor = param.get();
- }
- else if(param.is(rebuildValues)){struct_updateValuesFromSeq();}
- else if (param.is(refreshKeys)){
- script.log("refreshKeys");
- refreshKeysList();
- }
-
- else {script.log("scriptparamchanged" + param.name);}
- }
- function update(deltaTime){
- if(sequence!=""){
-
- if(doSync){
- syncDelta += deltaTime ;
-
- if (syncDelta >= syncRatems){
- syncDelta = 0. ;
- var autosave = struct_updateValuesFromSeq();
- if(autosave){exportSequenceFile(saveFile);}
- }
- }
-
-
-
-
-
-
- followDelta += deltaTime ;
- if(followCursor && (followDelta>followRatems)){
- followDelta = 0. ;
- seq_followCursor() ;
- }
- }
- }
- function printMethodsAndProperties(obj){
- script.log(" ");
-
- var name = "object";
- script.log(" METHODS OF " + name);
- var methods = util.getObjectMethods(obj);
- for(var i=0 ; i<methods.length ; i++){
- script.log(" "+ methods[i]);
- }
- script.log(" PARAMETERS OF " + name);
- var props = util.getObjectProperties(obj, true, false);
- for(var i=0 ; i<props.length ; i++){
- script.log(" "+ props[i]);
- }
- script.log(" OBJECTS OF " + name);
- var props = util.getObjectProperties(obj, false, true);
- for(var i=0 ; i<props.length ; i++){
- script.log(" "+ props[i]);
- }
- }
- function printKeys(){
- var seq = root.sequences.sequence.layers.mapping.automation.getItems() ;
- if(seq.length){
- for(var i=0; i<seq.length; i++){
- script.log (">> "+seq[i].name + " " + seq[i].position.get() + " " + seq[i].listSize.get() );
- }
- }
- else{script.log("nothing to print");}
- }
- function moduleParameterChanged(param){
- parametersPath = local.getChild("parameters") ;
- script.log("received module param :" + param.name);
- if (param.is(parametersPath.importExport.sequenceFile)) {}
- else if (param.is(parametersPath.importExport.importSequence)){importSequenceFile(parametersPath.importExport.sequenceFile);}
-
- else if (param.is(parametersPath.importExport.exportSequence)) {
- exportSequenceFile(parametersPath.importExport.sequenceFile);
- exportSequenceFile(saveFile);
- }
- else if (param.is(parametersPath.synchronize)){updateSynchronize();}
- else if (param.is(parametersPath.syncRate)){updateSyncRate();}
- else if (param.is(parametersPath.monitorKeysCues)){monitorKeysCues();}
- else if (param.is(parametersPath.clearSequence)){seq_clearSequence();}
- else if (param.is(parametersPath.reorderSequence)){seq_reorderSequence();}
- else if (param.is(parametersPath.changeSequence)){refreshSequenceEnum();}
- else if (param.is(parametersPath.sequence)){
- sequence = sequencePath.getKey();
- if(sequence!=""){
- script.log("watching "+ sequence);
- local.parameters.sequence.setAttribute("readonly",true);
- }
-
- }
- else{script.log("received module param :" + param.name);}
- }
- function updateSynchronize(){
-
- doSync = parametersPath.synchronize.get();
- script.log(doSync ? "sync ON" : "sync OFF" );
- }
- function updateSyncRate(){
-
- syncRatems = parametersPath.syncRate.get() / 1000.;
- script.log("new sync rate : " + syncRatems);
-
- }
- function monitorKeysCues(){
-
- doSyncKeysCues = parametersPath.monitorKeysCues.get() ;
- script.log(doSyncKeysCues ? "syncKeys ON" : "syncKeys OFF" );
-
- }
- function refreshSequenceEnum(){
- script.log("refresh list of sequences");
- local.parameters.sequence.setAttribute("readonly",false);
-
- if(root.sequences.getItems().length){
- local.parameters.sequence.removeOptions();
- local.parameters.sequence.addOption("", 0);
- for(var i=0 ; i<root.sequences.getItems().length ; i++ ){
- local.parameters.sequence.addOption(root.sequences.getItems()[i].name,i+1);
- }
- }
- }
- function importSequenceFile(loadFile){
- doSync = false ;
- script.log("loading file");
- loadData = loadFile.readFile(true);
-
- var parameters = local.getChild("parameters");
- parameters.syncRate.set(loadData.parameters.SyncRate);
- parameters.synchronize.set(loadData.parameters.Synchronize);
- sequence = loadData.parameters.Sequence;
- if(1){
- parameters.sequence.removeOptions();
- parameters.sequence.addOption(sequence,0);
- parameters.sequence.setAttribute("readonly", true);
-
-
-
- var tl_sequence = root.sequences.getItemWithName(sequence) ;
- if(tl_sequence == undefined){
- tl_sequence = root.sequences.addItem();
- tl_sequence.setName(sequence);
- }
-
- tl_sequence.cues.removeAll();
- var cuesList = util.getObjectProperties(loadData.values.keys.cues, true, false);
- if(cuesList.length){
- for(var i=0; i<cuesList.length; i++){
- var cue = tl_sequence.cues.addItem();
- cue.setName(cuesList[i]);
- cue.time.set(loadData.values.keys.cues[cuesList[i]].time);
- }
- }
-
- tl_sequence.layers.removeAll();
- var layersList = util.getObjectProperties(loadData.values.keys.layers, true, false);
- if(layersList.length){
- for(var i=0; i<layersList.length; i++ ){
- var layerType = loadData.values.keys.layers[layersList[i]].type ;
- var layer = tl_sequence.layers.addItem(layerType);
- layer.setName(layersList[i]);
- var keysList = util.getObjectProperties(loadData.values.keys.layers[layersList[i]], true, false);
- if(keysList.length){
- if (layerType != "Audio"){
- for(var j=0; j<keysList.length; j++){
- var key = layer.automation.addItem();
- key.setName(keysList[j]);
- key.value.set(loadData.values.keys.layers[layersList[i]][keysList[j]].value);
- key.position.set(loadData.values.keys.layers[layersList[i]][keysList[j]].time);
- }
- layer.automation.reorderItems();
- }
- else {
- for(var j=0; j<keysList.length; j++){
- var clip = layer.clips.addItem();
- clip.setName(keysList[j]);
- clip.filePath.set(loadData.values.keys.layers[layersList[i]][keysList[j]].filePath);
- clip.startTime.set(loadData.values.keys.layers[layersList[i]][keysList[j]].startTime);
- }
- }
- }
-
- }
- }
-
- var groupList = util.getObjectProperties(loadData.values.groups, true, false);
- if(groupList.length){
- for(var i=0; i<groupList.length; i++){
- var group = local.getChild("Values").groups.addContainer(groupList[i]);
- var groupLayers = util.getObjectProperties(loadData.values.groups[groupList[i]], true, false);
- var cue = group.addFloatParameter("cue", "", 0., 0.);
- group.setName(groupList[i]);
- cue.set(loadData.values.groups[groupList[i]].time);
- var groupKeysList = util.getObjectProperties(loadData.values.groups[groupList[i]].groupKeys, true, false);
- if (groupKeysList.length){
- var keysContainer = group.addContainer("keys");
- keysContainer.setCollapsed(true);
- for (var j=0; j<groupKeysList.length; j++){
- group.addFloatParameter(groupKeysList[j], "", 0., 0., 1.);
- keysContainer.addStringParameter(groupKeysList[j], "", loadData.values.groups[groupList[i]]['groupKeys'][groupKeysList[j]]['key']);
- }
- }
- }
- }
-
- doSync = true;
-
- }
- }
- function exportSequenceFile(fileObj){
- script.log("exporting file");
- var exportData = {parameters:{}, values:{groups:{}, keys:{cues:{}, layers:{}}}};
-
- var parameters = local.getChild("parameters");
- exportData.parameters["Sequence"] = parameters.sequence.getKey();
- exportData.parameters["Synchronize"] = parameters.synchronize.get();
- exportData.parameters["Sync Rate"] = parameters.syncRate.get();
- exportData.parameters["monitorKeysCues"] = parameters.monitorKeysCues.get();
-
- var values = local.getChild("values");
-
- var groups = values.groups;
- var groupsList=util.getObjectProperties(groups, true, false);
- if(groupsList.length){
- for(var i=0; i<groupsList.length; i++){
- var exportGroup = exportData.values.groups[groupsList[i]] = {cue:"", time:0., groupKeys:{}};
- var currentGroup = groups.getChild(groupsList[i]);
-
- exportGroup.cue = currentGroup.cue.name;
- exportGroup.time = currentGroup.cue.get();
- var isInOut = currentGroup.getChild("keysOut") ;
- if(isInOut){
- exportGroup.cueOut = currentGroup.cueOut.name;
- exportGroup.timeOut = currentGroup.cueOut.get();
- }
- var currentGroupLayers = util.getObjectProperties(currentGroup.keys, true, false);
- if (currentGroupLayers.length){
- for(var j=0; j<currentGroupLayers.length; j++){
-
- exportGroup.groupKeys[currentGroupLayers[j]] = {key:"", value:0};
- exportGroup.groupKeys[currentGroupLayers[j]].value = currentGroup.getChild(currentGroupLayers[j]).get();
- exportGroup.groupKeys[currentGroupLayers[j]].key = currentGroup.keys.getChild(currentGroupLayers[j]).get();
- }
- }
- }
- }
- var cues = values.keys.cues;
- var cuesList=util.getObjectProperties(cues, true, false);
- if(cuesList.length){
- for(var i=0; i<cuesList.length; i++){
- var exportCue = exportData.values.keys.cues[cuesList[i]] = {cue:"", time:0.};
- exportCue.cue = cuesList[i];
- exportCue.time = cues.getChild(cuesList[i]).time.get();
-
- }
- }
- var layers = values.keys.layers;
- var layersList=util.getObjectProperties(layers, true, false);
- if(layersList.length){
- for(var i=0; i<layersList.length; i++){
- var exportLayer = exportData.values.keys.layers[layersList[i]] = {};
- var currentLayer = layers.getChild(layersList[i]);
- var currentLayersKeys = util.getObjectProperties(currentLayer, true, false);
- exportLayer["type"] = values.keys.layerTypes.getChild(layersList[i]).get();
- if (currentLayersKeys.length){
- for(var j=0; j<currentLayersKeys.length; j++){
- if (exportLayer["type"]!= "Audio"){
- if(currentLayersKeys[j]!="type"){
-
-
- exportLayer[currentLayersKeys[j]] = {key:"", value:0., time:0.};
- exportLayer[currentLayersKeys[j]].value = currentLayer.getChild(currentLayersKeys[j]).value.get();
- exportLayer[currentLayersKeys[j]].key = currentLayer.getChild(currentLayersKeys[j]).name;
- exportLayer[currentLayersKeys[j]].time = currentLayer.getChild(currentLayersKeys[j]).time.get();
- }
- }
- else {
- exportLayer[currentLayersKeys[j]] = {clip:"", filePath:0., startTime:0.};
- exportLayer[currentLayersKeys[j]].filePath = currentLayer.getChild(currentLayersKeys[j]).filePath.get();
- exportLayer[currentLayersKeys[j]].clip = currentLayer.getChild(currentLayersKeys[j]).name;
- exportLayer[currentLayersKeys[j]].startTime = currentLayer.getChild(currentLayersKeys[j]).startTime.get();
- }
-
- }
- }
- }
- }
-
- fileObj.writeFile(JSON.stringify(exportData), true);
- }
- function moduleValueChanged(value){
- if(!inibValuesChanged){
- doSync = false;
- script.log(value.getParent().name);
- doSync = true;
-
- }
- if (value.is(local.values.newGroup.create)){createNewGroup();}
- if (value.is(local.values.newGroup.createInOut)){createNewGroup(1);}
-
-
-
- }
- function struct_rebuildValues(){
-
- var tl_cues = tl_seq.cues.getItems();
- cues = local.getChild("values").keys.cues ;
- var cuesList = util.getObjectProperties(cues, true, false);
-
-
- if (cuesList.length != tl_cues.length){
-
- var delta = cuesList.length-tl_cues.length;
- var addRemove = delta > 0 ? false : true ;
-
- delta = Math.abs(delta);
- script.log("cues "+ delta + (addRemove ? " up" : " down"));
- for(var i=0; i<delta; i++){
-
- if(addRemove){
- var newCue = cues.addContainer("newCue"+i);
- newCue.addFloatParameter("time", "position in time", 0., 0.);
- newCue.setCollapsed(true);
- }
- else {
-
- cues.removeContainer(util.getObjectProperties(cues, true, false)[i]);
- }
-
-
- }
- hasUpdated = true;
- }
-
- cues = local.getChild("values").keys.cues ;
- var cuesList = util.getObjectProperties(cues, true, false);
- if(tl_cues.length){
- for (var i=0; i<tl_cues.length; i++){
- var currentCue = cues.getChild(cuesList[i]);
- currentCue.setName(tl_cues[i].name);
- currentCue.time.set(tl_cues[i].time.get());
- }
- }
-
-
- var layersChanged = false ;
- var tl_layers = tl_seq.layers.getItems();
- layers = local.getChild("values").keys.layers ;
- var layersList = util.getObjectProperties(layers, true, false);
- if (layersList.length != tl_layers.length){
- layersChanged = true ;
- var delta = layersList.length-tl_layers.length;
- var addRemove = delta > 0 ? false : true ;
- delta = Math.abs(delta);
- script.log("layers "+ delta + (addRemove ? " up" : " down"));
- for(var i=0; i<delta; i++){
-
-
- if(addRemove){
- var newLayer = layers.addContainer("newLayer"+i);
-
- local.getChild("values").keys.layerTypes.addStringParameter("newLayer"+i, "", "");
- newLayer.setCollapsed(true);
- local.getChild("values").newGroup.layers.addFloatParameter("newLayer"+i, "value for this layer at group creation", 0., 0., 1.);
-
-
-
-
- }
- else {
-
- layers.removeContainer(util.getObjectProperties(layers, true, false)[i]);
- local.getChild("values").newGroup.layers.removeParameter(util.getObjectProperties(layers, true, false)[i]);
- local.getChild("values").newGroup.layers.setCollapsed(true);
- local.getChild("values").newGroup.layers.setCollapsed(false);
- local.getChild("values").keys.layerTypes.removeParameter(util.getObjectProperties(layers, true, false)[i]);
- local.getChild("values").keys.layerTypes.setCollapsed(true);
- local.getChild("values").keys.layerTypes.setCollapsed(false);
- }
-
-
- }
- hasUpdated = true;
- }
-
- if(layersChanged){
- layers = local.getChild("values").keys.layers ;
- var layerList = util.getObjectProperties(layers, true, false);
- layerTypes = local.getChild("values").keys.layerTypes ;
- var layerTypeList = util.getObjectProperties(layerTypes, true, false);
- var template = local.getChild("values").newGroup.layers;
- var layerTemplate = util.getObjectProperties(template, true, false);
- if(tl_layers.length){
- var layer_offset = 0 ;
- for (var i=0; i<tl_layers.length; i++){
- var currentLayer = layers.getChild(layerList[i]);
-
- currentLayer.setName(tl_layers[i].name);
- var currentLayerType = layerTypes.getChild(layerTypeList[i]);
- currentLayerType.setName(tl_layers[i].name);
- currentLayerType.set(tl_layers[i].getType());
- var currentTemplate = template.getChild(layerTemplate[i]) ;
- if (tl_layers[i].getType()=="Audio"){layer_offset+=1;}
- currentTemplate.setName(tl_layers[i+layer_offset].name);
- }
- }
- }
-
- layers = local.getChild("values").keys.layers ;
- layersList = util.getObjectProperties(layers, true, false);
-
- if(layersList.length){
- for(var layerIndex=0; layerIndex<layersList.length; layerIndex++){
-
- var currentLayer = layers.getChild(layersList[layerIndex]);
- var keyList = util.getObjectProperties(currentLayer, true, false);
- var tl_lay = tl_seq.layers.getItemWithName(layersList[layerIndex]);
- var tl_keys;
-
-
- if(tl_lay.automation!=undefined){
- tl_keys = tl_lay.automation.getItems();
-
- if (keyList.length != tl_keys.length){
- var delta = keyList.length-tl_keys.length;
- var addRemove = delta > 0 ? false : true ;
- delta = Math.abs(delta);
- script.log("keys "+ delta + (addRemove ? " up" : " down"));
- for(var i=0; i<delta; i++){
-
-
- if(addRemove){
- var newKey = currentLayer.addContainer("newkey"+i);
- newKey.addFloatParameter("time", "position in time", 0., 0.);
- newKey.addFloatParameter("value", "vertical value", 0., 0.);
- newKey.setCollapsed(true);
- }
- else {
-
- currentLayer.removeContainer(util.getObjectProperties(currentLayer, true, false)[i]);
- }
-
-
- }
- hasUpdated = true;
- }
- }
-
-
- var tl_clips ;
- if(tl_lay.clips!=undefined){
- tl_clips = tl_lay.clips.getItems();
-
- if (keyList.length != tl_clips.length){
- var delta = keyList.length-tl_clips.length;
- var addRemove = delta > 0 ? false : true ;
- delta = Math.abs(delta);
- script.log("clips "+ delta + (addRemove ? " up" : " down"));
- for(var i=0; i<delta; i++){
-
-
- if(addRemove){
- var newClip = currentLayer.addContainer("newclip"+i);
- newClip.addFileParameter("File Path", "sound file");
- newClip.addFloatParameter("start Time", "", 0., 0.);
- newClip.setCollapsed(true);
- }
- else {
-
- currentLayer.removeContainer(util.getObjectProperties(currentLayer, true, false)[i]);
- }
-
-
- }
- hasUpdated = true;
- }
- }
-
- currentLayer = layers.getChild(layersList[layerIndex]);
- keyList = util.getObjectProperties(currentLayer, true, false);
-
- if(tl_keys.length){
- for(var i=0; i<tl_keys.length; i++){
- var currentKey = currentLayer.getChild(keyList[i]);
- currentKey.setName(tl_keys[i].name);
- currentKey.time.set(tl_keys[i].position.get());
- currentKey.value.set(tl_keys[i].value.get());
- }
- }
- if(tl_clips.length){
- for(var i=0; i<tl_clips.length; i++){
- var currentKey = currentLayer.getChild(keyList[i]);
- currentKey.setName(tl_clips[i].name);
- currentKey.filePath.set(tl_clips[i].filePath.get());
- currentKey.startTime.set(tl_clips[i].startTime.get());
- }
- }
- }
- }
- }
- function struct_rebuildGroupLayers(){
- var tl_layers = tl_seq.layers.getItems();
- layers = local.getChild("values").newGroup.layers ;
- var layersList = util.getObjectProperties(layers, true, false);
- if (layersList.length != tl_layers.length){
-
- var delta = layersList.length-tl_layers.length;
- var addRemove = delta > 0 ? false : true ;
- delta = Math.abs(delta);
- script.log("Group layers "+ delta + (addRemove ? " up" : " down"));
- for(var i=0; i<delta; i++){
-
-
- if(addRemove){
- local.getChild("values").newGroup.layers.addFloatParameter("newLayer"+i, "value for this layer at group creation", 0., 0., 1.);
-
- }
- else {
- local.getChild("values").newGroup.layers.removeParameter(util.getObjectProperties(layers, true, false)[i]);
- local.getChild("values").newGroup.layers.setCollapsed(true);
- local.getChild("values").newGroup.layers.setCollapsed(false);
- }
-
-
- }
-
- }
-
- var template = local.getChild("values").newGroup.layers;
- var layerTemplate = util.getObjectProperties(template, true, false);
- if(tl_layers.length){
- for (var i=0; i<tl_layers.length; i++){
- var currentTemplate = template.getChild(layerTemplate[i]) ;
- currentTemplate.setName(tl_layers[i].name);
- }
- }
-
- }
- function struct_updateValuesFromSeq(){
-
- inibValuesChanged = true;
- var hasUpdated = false ;
-
- var tl_seq = root.sequences.getItemWithName(sequence);
-
- if(tl_seq.name!="undefined"){
-
- if(doSyncKeysCues) {struct_rebuildValues();}
- else{struct_rebuildGroupLayers();}
-
- tl_seq = root.sequences.getItemWithName(sequence);
- var groups = local.getChild("values").groups ;
- var groupList = util.getObjectProperties(groups, true, false);
-
- if(groupList.length){
- for (var i = 0; i<groupList.length; i++){
-
-
-
-
-
-
-
-
-
-
-
-
- var isInOut = groups.getChild(groupList[i]).getChild("keysOut") ;
-
-
- var groupCue = tl_seq.cues.getItemWithName(groupList[i]);
-
- if(groupCue.name==undefined){
- script.log("cue " + groupList[i] + "not found, removing keys and group");
- if(isInOut){tl_seq.cues.removeItem(groupList[i]+"o");}
- var groupToRemove = groups.getChild(groupList[i]);
- var groupToRemoveKeyslist = util.getObjectProperties(groupToRemove.keys, true, false);
- for(var removeKeyIndex = 0; removeKeyIndex< groupToRemoveKeyslist.length; removeKeyIndex++) {
- var tl_removeLayer = tl_seq.layers.getItemWithName( groupToRemoveKeyslist[removeKeyIndex]) ;
- var tl_removeKey = tl_removeLayer.automation.getItemWithName(groupToRemove.keys.getChild( groupToRemoveKeyslist[removeKeyIndex]).get());
-
- tl_removeLayer.automation.removeItem(tl_removeKey);
- var tl_removeKeyOut ;
- if(isInOut) {
- tl_removeKeyOut = tl_removeLayer.automation.getItemWithName(groupToRemove.keys.getChild( groupToRemoveKeyslist[removeKeyIndex]).get()+"o");
- tl_removeLayer.automation.removeItem(tl_removeKeyOut);
- }
- }
- groups.removeContainer(groupList[i]);
- hasUpdated = true;
- break;
- }
-
- else {
- groups = local.getChild("values").groups ;
- groupList = util.getObjectProperties(groups, true, false);
- var currentGroup = groups.getChild(groupList[i]);
- var currentGroupLayers = util.getObjectProperties (currentGroup.keys, true, false);
-
- var groupTime = groupCue.time.get();
- currentGroup.cue.set(groupTime);
-
- var groupCueOut;
- var groupTimeOut ;
- if(isInOut){
- groupCueOut = tl_seq.cues.getItemWithName(groupList[i]+"o");
- groupTimeOut = groupCueOut.time.get();
- currentGroup.cueOut.set(groupTimeOut);
- }
- if (currentGroupLayers.length){
-
- for(var j=0; j<currentGroupLayers.length; j++){
-
- groups = local.getChild("values").groups ;
- groupList = util.getObjectProperties(groups, true, false);
- currentGroup = groups.getChild(groupList[i]);
- currentGroupLayers = util.getObjectProperties (currentGroup.keys, true, false);
- var tl_layer = tl_seq.layers.getItemWithName(currentGroupLayers[j]);
- var keyName = currentGroup.keys.getChild(tl_layer.name).get();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if(tl_layer.automation.getItemWithName(keyName).name != undefined){
-
- var tl_key = tl_layer.automation.getItemWithName(keyName);
- tl_key.position.set(groupTime);
-
- var keyValue = tl_key.value.get();
-
- var currentKey = currentGroup.getChild(tl_layer.name);
-
-
- currentKey.set(keyValue);
-
- if(isInOut){
-
- var tl_keyOut = tl_layer.automation.getItemWithName(keyName+"o");
- tl_keyOut.position.set(groupTimeOut);
-
- tl_keyOut.value.set(keyValue);
-
- }
- }
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- }
- }
- }
- inibValuesChanged = false;
- return hasUpdated;
- }
-
- }
-
-
- function seq_clearSequence(){
- var seq = root.sequences.getItemWithName(sequence) ;
- script.log("clearing all keys and cues of sequence : "+seq.name);
- seq.cues.removeAll();
- var layers = seq.layers.getItems();
- if(layers.length){
- for (var i = 0; i<layers.length; i++){
- if(layers[i].automation){layers[i].automation.removeAll();}
- if(layers[i].clips){layers[i].clips.removeAll();}
- }
- }
-
- var groups = local.getChild("values").groups;
- var groupsList = util.getObjectProperties(groups, true, false);
- if (groupsList.length){
- for(var i=0; i<groupsList.length; i++){
- groups.removeContainer(groupsList[i]);
- }
- }
-
-
- }
- function seq_reorderSequence(){
- var seq = root.sequences.getItemWithName(sequence) ;
- script.log("reordering sequence : "+seq.name);
- var layers = seq.layers.getItems();
- if(layers.length){
- for (var i = 0; i<layers.length; i++){
- if(layers[i].automation){layers[i].automation.reorderItems();}
- if(layers[i].clips){layers[i].clips.reorderItems();}
- }
- }
- }
- function seq_buildSeqFromValues(){}
- function seq_buildSeqFromFile(){}
- function seq_MoveCurrentTime(deltaSeconds){
- var tl_seq = root.sequences.getItemWithName(sequence);
- var currentTime = tl_seq.currentTime.get();
- tl_seq.currentTime.set(currentTime + deltaSeconds);
- }
- function createNewGroup(isInOut){
- doSync = false ;
- script.log("create new group");
-
- var groups = local.getChild("values").groups;
- var groupsList = util.getObjectProperties(groups, true, false);
-
- var currentGroup;
- var tl_seq = root.sequences.getItemWithName(sequence);
- var tl_layers = tl_seq.layers.getItems();
- script.log(groupList.length);
-
- var currentTime = tl_seq.currentTime.get() ;
-
-
- var newCue = tl_seq.cues.addItem();
- newCue.time.set(currentTime);
-
- for (var i=0; i<=groupsList.length+1; i++){
- if(tl_seq.cues.getChild(i)==undefined){
- newCue.setName(i);
- currentGroup = groups.addContainer(i);
- currentGroup.setCollapsed(true);
- script.log("create new group: "+i);
- break;
- }
- }
-
-
-
- currentGroup.addFloatParameter("cue", "cue of the group", currentTime, 0.);
- var keysContainer = currentGroup.addContainer("keys");
- var keysOutContainer = 0 ;
- if (isInOut){
- var newCueOut = tl_seq.cues.addItem();
- newCueOut.time.set(currentTime+5);
- newCueOut.setName(currentGroup.name+"o");
- currentGroup.addFloatParameter("cueOut", "cue out of the group", currentTime + 5., 0.);
- keysOutContainer = currentGroup.addContainer("keysOut");
- keysOutContainer.setCollapsed(true);
- }
- keysContainer.setCollapsed(true);
- tl_seq = root.sequences.getItemWithName(sequence);
- tl_layers = tl_seq.layers.getItems();
-
- if(tl_layers.length){
- for(var i=0;i<tl_layers.length; i++ ){
- if(tl_layers[i].automation!=undefined){
-
- var newKey = tl_layers[i].automation.addItem();
- newKey.position.set(currentTime);
- newKey.setName(currentGroup.name);
-
- newKey.value.set(local.getChild("values").newGroup.layers.getChild(tl_layers[i].name).get());
-
- keysContainer.addStringParameter(tl_layers[i].name, "",currentGroup.name );
- currentGroup.addFloatParameter(tl_layers[i].name,tl_layers[i].name+" value" , currentGroup.name, 0., 1.);
-
- if (isInOut){
- var newKeyOut = tl_layers[i].automation.addItem();
- newKeyOut.position.set(currentTime+5.);
- newKeyOut.setName(currentGroup.name+"o");
- newKeyOut.value.set(local.getChild("values").newGroup.layers.getChild(tl_layers[i].name).get());
-
- keysOutContainer.addStringParameter(tl_layers[i].name, "",currentGroup.name+"o" );
- }
- tl_layers[i].automation.reorderItems();
- }
- }
- }
- doSync = true ;
-
- }
- function seq_followCursor(){
- var tl_seq = root.sequences.getItemWithName(sequence);
- var tl_cursor = tl_seq.currentTime.get();
- var tl_totalTime = tl_seq.totalTime.get() ;
- var tl_startTime = tl_seq.viewStartTime.get();
- var tl_endTime = tl_seq.viewEndTime.get();
-
- followZoom = (tl_startTime - tl_endTime) / tl_totalTime;
-
-
-
- followZoom = viewZoom.get();
- var viewTime = followZoom * tl_totalTime ;
- var startTime = tl_cursor - viewTime/2. ;
- var endTime = tl_cursor + viewTime/2. ;
- tl_seq.viewStartTime.set(startTime);
- tl_seq.viewEndTime.set(endTime);
-
- }
- function seq_readZoomValue(){
- var tl_seq = root.sequences.getItemWithName(sequence);
- if(tl_seq != undefined){
- var tl_totalTime = tl_seq.totalTime.get() ;
- var tl_startTime = tl_seq.viewStartTime.get();
- var tl_endTime = tl_seq.viewEndTime.get();
- followZoom = (tl_startTime - tl_endTime) / tl_totalTime;
- return followZoom ;
- }
-
- }
|