improved ui for plugin
diff --git a/parser/CompConverter.js b/parser/CompConverter.js
index 116fc22..e8818a9 100644
--- a/parser/CompConverter.js
+++ b/parser/CompConverter.js
@@ -93,14 +93,16 @@
}
function searchNextComposition(){
- var len = compositionsList.length;
- while(currentExportingComposition < len){
- if(compositionsList[currentExportingComposition].queued === true){
- currentCompositionData = compositionsList[currentExportingComposition];
- exportNextComposition();
- return;
+ if(!renderCancelled){
+ var len = compositionsList.length;
+ while(currentExportingComposition < len){
+ if(compositionsList[currentExportingComposition].queued === true){
+ currentCompositionData = compositionsList[currentExportingComposition];
+ exportNextComposition();
+ return;
+ }
+ currentExportingComposition+=1;
}
- currentExportingComposition+=1;
}
//If we get here there are no more compositions to render and callback is executed
helperFootage.remove();
diff --git a/parser/DOMAnimationManager.js b/parser/DOMAnimationManager.js
index d71a0c2..e103dca 100644
--- a/parser/DOMAnimationManager.js
+++ b/parser/DOMAnimationManager.js
@@ -12,6 +12,8 @@
var mainLayers = [];
var filesDirectory;
var callback;
+ var pendingLayers = [];
+ var totalLayers = 0;
function getCompositionAnimationData(compo, compositionData,fDirectory){
mainComp = compo;
@@ -158,18 +160,21 @@
return textDataOb;
}
- function createLayers(compo, layersData, frameRate){
- var i, len = compo.layers.length;
- for(i = 0;i<len;i++){
- var layerOb = {};
- var layerInfo = compo.layers[i+1];
+ function analyzeNextLayer(){
+ if(pendingLayers.length == 0){
+ renderNextFrame();
+ }else{
+ var pendingItem = pendingLayers.pop();
+ UI.setProgress(pendingLayers.length/totalLayers);
+ var layerOb = pendingItem.lOb;
+ var layerInfo = pendingItem.lInfo;
+ var frameRate = pendingItem.frameRate;
var lType = extrasInstance.layerType(layerInfo);
-
if(lType == 'AudioLayer' || lType == 'CameraLayer' || layerInfo.enabled == false){
//TODO add audios
- layersData.push(layerOb);
layerOb.enabled = false;
- continue;
+ analyzeNextLayer();
+ return;
}else if(lType == 'TextLayer'){
var textProp = layerInfo.property("Source Text");
var textDocument = textProp.value;
@@ -201,10 +206,8 @@
layerOb.an = {};
if(lType=='PreCompLayer'){
- layerOb.layers = [];
layerOb.width = layerInfo.source.width;
layerOb.height = layerInfo.source.height;
- createLayers(layerInfo.source,layerOb.layers,layerInfo.source.frameRate);
}else if(lType == 'StillLayer'){
addStillAsset(layerOb,layerInfo);
layerOb.width = layerInfo.source.width;
@@ -221,7 +224,6 @@
layerOb.outPoint = layerInfo.outPoint*frameRate;
layerOb.startTime = layerInfo.startTime*frameRate;
layerOb.lastData = {};
- layersData.push(layerOb);
layerOb.ks = {};
if(layerInfo.transform.opacity.numKeys>1){
@@ -253,6 +255,31 @@
if(layerInfo.canSetTimeRemapEnabled && layerInfo.timeRemapEnabled){
extrasInstance.convertToBezierValues(layerInfo['Time Remap'], frameRate, layerOb,'tm');
}
+ if(!renderCancelled){
+ extrasInstance.setTimeout(analyzeNextLayer,100);
+ }else{
+ callback.apply();
+ }
+ }
+ }
+
+ function createLayers(compo, layersData, frameRate){
+ var i, len = compo.layers.length;
+ for(i = 0;i<len;i++){
+ var layerOb = {};
+ var layerInfo = compo.layers[i+1];
+ var lType = extrasInstance.layerType(layerInfo);
+ layersData.push(layerOb);
+ if(lType == 'AudioLayer' || lType == 'CameraLayer' || layerInfo.enabled == false){
+ //TODO add audios
+ layerOb.enabled = false;
+ continue;
+ }
+ pendingLayers.push({lInfo:layerInfo,lOb:layerOb,frameRate:frameRate});
+ if(lType=='PreCompLayer'){
+ layerOb.layers = [];
+ createLayers(layerInfo.source,layerOb.layers,layerInfo.source.frameRate);
+ }
}
}
@@ -349,7 +376,8 @@
processFinalData(mainLayers);
callback.apply();*/
// END TO TRAVERSE LAYER BY LAYER. NEEDED FOR TIME REMAP?
- renderNextFrame();
+ totalLayers = pendingLayers.length;
+ analyzeNextLayer();
}
function iterateLayer(layerInfo, layerOb,frameRate){
diff --git a/parser/UI.js b/parser/UI.js
index 6c47ff1..225b202 100644
--- a/parser/UI.js
+++ b/parser/UI.js
@@ -168,6 +168,11 @@
isPanelFocused = false;
}
+ function setProgress(value){
+ renderGroup.progress.value = (1 - value)*100;
+ renderGroup.infoText.text = ((1 - value)*100).toFixed(2) + '%';
+ }
+
function cancelRender(){
renderCancelled = true;
renderFinished();
@@ -348,7 +353,6 @@
var project = app.project;
var i,numItems = project.numItems;
- var types = '';
var count = 0;
for(i=0;i<numItems;i+=1){
if(extrasInstance.getprojectItemType(project.item(i+1))=='Comp'){
@@ -357,7 +361,6 @@
};
}
var numComps = availableCompositions.length;
- var itemsList = [];
for(i=0;i<numComps;i++){
availableCompositions[i].item = compsList.add('item',availableCompositions[i].comp.name);
if(availableCompositions[i].selected){
@@ -461,6 +464,7 @@
var ob ={};
ob.setExportText = setExportText;
+ ob.setProgress = setProgress;
UI = ob;
diff --git a/player/index.html b/player/index.html
index 5b2840e..5e21cde 100644
--- a/player/index.html
+++ b/player/index.html
@@ -28,7 +28,7 @@
</head>
<body style="background-color:#666; margin: 10px;height: 100%; font-family: sans-serif;font-size: 10px">
<div id="loader"></div>
-<div style="width:800px;height:800px;background-color:#cccccc" class="bodymovin" data-animation-path="exports/dalek" data-bm-player="0" data-anim-type="svg" data-anim-loop="true"></div>
+<div style="width:800px;height:800px;background-color:#cccccc" class="bodymovin" data-animation-path="exports/canvasShape1" data-bm-player="0" data-anim-type="svg" data-anim-loop="true"></div>
</body>
</html>