# After Effects Expression - Global Wind Controller

### Full step by step Tutorial:

{% embed url="<https://www.youtube.com/watch?v=FYLpC9FTmDM>" %}

Code for ***Bend*** property:

```javascript
let windSpeed = thisComp.layer("WIND CONTROLLER").effect("wind speed")("Slider");
let indexByPos = linear(position[0], 0, thisComp.width, 0.7, 1.7);

Math.sin((time-indexByPos)*Math.PI*windSpeed/10)*windSpeed*2;

/*
Expression by Francisco Giordano, August 2020.
Free for personal use and commercial use.
Instagram @ae.fran.giodano - frangiordano96@gmail.com
*/
```

For the Start and End properties, you'll have to apply different expressions depending on the type of your layer:

{% tabs %}
{% tab title="If your layers are vectors" %}
Code for ***Start*** property:

```javascript
transform.position
```

Code for ***End*** property:

```javascript
[position[0], position[1]-thisComp.height/2];
```

{% endtab %}

{% tab title="If your layers are images" %}
Code for ***Start*** property:

```javascript
let myRect = sourceRectAtTime();
[myRect.width/2, myRect.height];
```

Code for ***End*** property:

```javascript
let myRect = sourceRectAtTime();
[myRect.width/2, -myRect.height];
```

{% endtab %}
{% endtabs %}

Code for ***Rotation*** property:

```javascript
let windDirection = thisComp.layer("WIND CONTROLLER").effect("wind direction")("Angle");
let indexByPos = linear(position[0], 0, thisComp.width, 0.5, 1.5);
let windSpeed = thisComp.layer("WIND CONTROLLER").effect("wind speed")("Slider");

let sinRotation = Math.sin((time-indexByPos)*Math.PI*windSpeed/10)*windSpeed/2;
let windRotation = linear(windDirection.valueAtTime(time-indexByPos), 90, -90, windSpeed, -windSpeed);

sinRotation + windRotation;

/*
Expression by Francisco Giordano, August 2020.
Free for personal use and commercial use.
Instagram @ae.fran.giodano - frangiordano96@gmail.com
*/
```
