@ -1,5 +1,5 @@
# include "../yScripts/y_JSExtensions.jsx" ;
function Y GenericTool ( )
function Y BindBetween2 ( )
{
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,6 +95,110 @@ 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 < lists.length ; i + + )
{
lists [ i ] . removeAll ( ) ;
}
var sel = app . project . activeItem . selectedLayers ;
var compLayers = app . project . activeItem . layers ;
var selectableLayers = [ ] ;
for ( var i = 1 ; i <= compLayers . length ; i ++ )
{
selectableLayers . push ( compLayers [ i ] ) ;
}
var lst _layer = this . window . lst _layer ;
var lst _pa = this . window . lst _pa ;
var lst _pb = this . window . lst _pb ;
for ( var i = 0 ; i < lists . length ; i ++ )
{
for ( j = 0 ; j < selectableLayers . length ; j ++ )
{
lists [ i ] . add ( 'item' , selectableLayers [ j ] . index + "." + selectableLayers [ j ] . name ) ;
}
}
lst _layer . selection = 0 ;
lst _pa . selection = 0 ;
lst _pb . selection = 0 ;
}
this . init ( ) ;
return this ;
@ -101,10 +207,10 @@ function YGenericTool()
/ / C H E C K S t h a t t h e t o o l b o x e x i s t s , a n d i f i t d o e s n ´ t i t r u n s t h e s c r i p t o n i t s o w n .
if ( typeof ( YTB ) == 'undefined' )
{
y GenericTool = new YGenericTool ( ) ;
y GenericTool . activate ( ) ;
y BindBetween2 = new YBindBetween2 ( ) ;
y BindBetween2 . activate ( ) ;
}
else
{
YTB . addTool ( new Y GenericTool ( ) ) ;
YTB . addTool ( new Y BindBetween2 ( ) ) ;
}