{
var myComp = app.project.activeItem;
var myLayer = myComp.layer(1);
var myPath = myLayer.property("Masks").property("Mask 1").property("Mask Path");
var numVerts = myPath.valueAtTime(myLayer.inPoint,false).vertices.length;
var myNulls = [];
var myNull;
var myVerts = [];
// create nulls
for (var i = 0; i < numVerts; i++){
myNull = myComp.layers.addNull(myComp.duration);
myNull.name = "Vertex " + (i+1);
myNulls[i] = myNull;
}
var t = myLayer.inPoint;
var p;
while (t <= myLayer.outPoint){
myVerts = myPath.valueAtTime(t,false).vertices;
p = myLayer.property("Position").valueAtTime(t,false) -
myLayer.property("Anchor Point").valueAtTime(t,false);
for (var i = 0; i < numVerts; i++){
myNulls[i].property("Position").setValueAtTime(t,p + myVerts[i]);
}
t += myComp.frameDuration;
}
}
{
myLayer = app.project.activeItem.selectedLayers[0]; // top active layer
ratio = .5523;
h = myLayer.width/2;
v = myLayer.height/2;
th = h*ratio;
tv = v*ratio;
newMask = myLayer.Masks.addProperty("ADBE Mask Atom");
newMask.maskMode = MaskMode.ADD;
myProperty = newMask.property("ADBE Mask Shape");
myShape = myProperty.value;
myShape.vertices = [[h,0],[0,v],[h,2*v],[2*h,v]];
myShape.inTangents = [[th,0],[0,-tv],[-th,0],[0,tv]];
myShape.outTangents = [[-th,0],[0,tv],[th,0],[0,-tv]];
myShape.closed = true;
myProperty.setValue(myShape);
}