blob: e064ef6767895bfcfdab44ac1ebd59b6835ed5d1 [file] [log] [blame]
/****** INIT CompConverter ******/
(function(){
var isExportDirectoryCreated = false;
var directoryCreationFailed = false;
var compositionsList;
var currentCompositionData;
var filesDirectory;
var mainProject = app.project;
var scriptPath = ((File($.fileName)).path);
var mainComp;
var endCallback;
var compositionData = {};
function saveData(){
if(!renderCancelled){
var dataFile = new File(exportFolder.fullName+'/data.json');
dataFile.open('w','TEXT','????');
dataFile.write(JSON.stringify(compositionData)); //DO NOT ERASE, JSON UNFORMATTED
//dataFile.write(JSON.stringify(compositionData, null, ' ')); //DO NOT ERASE, JSON FORMATTED
dataFile.close();
}
currentCompositionData.rendered = true;
searchNextComposition();
}
function layersConverted(duplicateMainComp){
DOMAnimationManager.setCallback(saveData);
//FOR DOM
DOMAnimationManager.getCompositionAnimationData(duplicateMainComp,compositionData,filesDirectory);
}
function animationSaved(){
saveData();
}
function directoryRemoved(){
filesDirectory = new Folder(exportFolder.fullName+'/files');
if(filesDirectory.create()){
isExportDirectoryCreated = true;
}
}
function createExportDirectory(){
exportFolder = new Folder(currentCompositionData.destination+'/'+currentCompositionData.comp.name+'/');
filesDirectory = new Folder(exportFolder.fullName+'/files');
if(filesDirectory.exists){
isExportDirectoryCreated = true;
}else{
if(filesDirectory.create()){
isExportDirectoryCreated = true;
}else{
directoryCreationFailed = true;
}
}
}
function waitForDirectoryCreated(){
if(isExportDirectoryCreated){
start();
}else if(directoryCreationFailed){
alert(UITextsData.alertMessages.directoryCreationFailed);
}else{
$.sleep(100);
waitForDirectoryCreated();
}
}
function searchHelperRenderer(helperComp){
var i=0,len = app.project.renderQueue.items.length;
var item;
while(i<len){
item = app.project.renderQueue.items[i+1];
if(item.comp == helperComp){
return item;
}
i++;
}
}
function start(){
UI.setExportText('Starting export');
LayerConverter.convertComposition(mainComp);
}
function exportNextComposition(){
isExportDirectoryCreated = false;
directoryCreationFailed = false;
mainComp = currentCompositionData.comp;
createExportDirectory();
waitForDirectoryCreated();
}
function searchNextComposition(){
if(!renderCancelled){
var len = compositionsList.length;
var i = 0;
while(i < len){
if(compositionsList[i].queued === true && compositionsList[i].rendered == false){
currentCompositionData = compositionsList[i];
exportNextComposition();
return;
}
i+=1;
}
}
//If it gets here there are no more compositions to render and callback is executed
helperFootage.remove();
endCallback.apply();
}
function renderCompositions(list){
var helperFile = new File(scriptPath+'/helperProject.aep');
var helperImportOptions = new ImportOptions();
helperImportOptions.file = helperFile;
helperFootage = mainProject.importFile(helperImportOptions);
var helperFolder = helperFootage.item(2);
var i = 0, len = helperFolder.items.length;
while(i<len){
if(helperFolder.item(i+1).name == 'helperSolidComp'){
helperSolidComp = helperFolder.item(i+1);
}
i += 1;
}
helperSolid = helperSolidComp.layer(1);
var helperPosition = helperSolid.transform["Anchor Point"];
helperPosition.expression = "valueAtTime(time)";
rqManager.setProject(app.project);
LayerConverter.setCallback(layersConverted);
compositionsList = list;
len = compositionsList.length;
for(i=0;i<len;i+=1){
compositionsList[i].rendered = false;
}
searchNextComposition();
}
function setFinishCallback(cb){
endCallback = cb;
}
var ob = {};
ob.renderCompositions = renderCompositions;
ob.setFinishCallback = setFinishCallback;
CompConverter = ob;
}());
/****** END CompConverter ******/