diff --git a/yScripts/y_yBindBetween2.jsx b/yScripts/y_yBindBetween2.jsx index 94c4fef..9816cf7 100644 --- a/yScripts/y_yBindBetween2.jsx +++ b/yScripts/y_yBindBetween2.jsx @@ -1,5 +1,5 @@ #include "../yScripts/y_JSExtensions.jsx"; -function YGenericTool() +function YBindBetween2() { this.info = { @@ -66,21 +66,23 @@ function YGenericTool() info: Group\ {\ alignment:['center','bottom'], \ - icon: Image {preferredSize: [15, 18]},\ - website: StaticText { text:'" + this.info.url + "', alignment:['fill','center'] },\ + icon: Image\ + {\ + preferredSize: [15, 18]\ + },\ + website: StaticText\ + {\ + text:'" + this.info.url + "', alignment:['fill','center']\ + },\ }\ }"; } this.createUI = function createUI() { - res = - "window {\ - resizeable : true\ - closeButton : true\ - text:'wtf'\ - }" - this.window = new Window( res ); + this.window = new Window( this.res ); + this.refresh(); + this.window.exec_btn.onClick = this.run; this.window.layout.layout(true); this.window.center(); this.window.show(); @@ -93,7 +95,111 @@ function YGenericTool() { this.yTool.yMainFunction(); } - + this.run = function run() + { + app.beginUndoGroup('Bind Between Two'); + + selectedLayerName=String(this.window.lst_layer.selection); + parentALayerName=String(this.window.lst_pa.selection); + parentBLayerName=String(this.window.lst_pb.selection); + layerN = selectedLayerName.substr(0, selectedLayerName.indexOf('.')); + paN = parentALayerName.substr(0, parentALayerName.indexOf('.')); + pbN = parentBLayerName.substr(0, parentBLayerName.indexOf('.')); + layer = app.project.activeItem.layers[layerN]; + pa = app.project.activeItem.layers[paN]; + pb = app.project.activeItem.layers[pbN]; + layer("Effects").addProperty("Layer Control"); + layer("Effects")("Layer Control").name = 'ctrl01'; + layer("Effects")("ctrl01")("Layer").setValue(pa.index); + layer("Effects").addProperty("Layer Control"); + layer("Effects")("Layer Control").name = 'ctrl02'; + layer("Effects")("ctrl02")("Layer").setValue(pb.index); + layer("Effects").addProperty("Angle Control"); + layer("Effects")("Angle Control").name = 'offset'; + layer("Effects")("offset")("Angle").setValue(0); + layer("Effects").addProperty("Slider Control"); + layer("Effects")("Slider Control").name = 'weight'; + layer("Effects")("weight")(1).setValue(50); + layer("Effects").addProperty("Checkbox Control"); + layer("Effects")("Checkbox Control").name = 'stretch'; + posExp ='\ + a = effect("ctrl01")("Layer");\ + b = effect("ctrl02")("Layer");\ + aPos = a.toComp(a.anchorPoint);\ + bPos = b.toComp(b.anchorPoint);\ + w= effect("weight")(1)/100;\ + (aPos*(1-w)+bPos*(w))' + rotExp ='\ + a =effect("ctrl01")("Layer");\ + b = effect("ctrl02")("Layer");\ + aPos = a.toComp(a.anchorPoint);\ + bPos = b.toComp(b.anchorPoint);\ + rx = lookAt(aPos,bPos)[0];\ + ry = lookAt(aPos,bPos)[1];\ + offset = effect("offset")("Angle");\ + if (aPos[1] > bPos[1]){\ + (ry) -90 + offset\ + }else{\ + 90 - (ry) + offset\ + }' + scaleExp ='\ + a = effect("ctrl01")("Layer");\ + b = effect("ctrl02")("Layer");\ + aPos = a.toComp(a.anchorPoint);\ + bPos = b.toComp(b.anchorPoint);\ + d = Math.sqrt(Math.pow((aPos[0]-bPos[0]),2)+Math.pow((aPos[1]-bPos[1]),2));\ + x = transform.scale[0];\ + y = transform.scale[1];\ + sx = ((d*100)/this.width)/100;\ + stretch = effect("stretch")("Checkbox");\ + if(stretch==true){\ + [x*sx,y]\ + }else{\ + [x,y]\ + }' + + layer.transform.position.expression = posExp; + layer.transform.rotation.expression= rotExp; + layer.transform.scale.expression= scaleExp; + + app.endUndoGroup(); + } + + this.refresh = function refresh() + { + + var lists = [ this.window.lst_pa , this.window.lst_layer , this.window.lst_pb ]//they should be in this order for the assignment of the selection index works right/ + + for(i=0;i