new expressions
diff --git a/player/js/3rd_party/transformation-matrix.js b/player/js/3rd_party/transformation-matrix.js
index 6a06af2..d1045eb 100644
--- a/player/js/3rd_party/transformation-matrix.js
+++ b/player/js/3rd_party/transformation-matrix.js
@@ -253,8 +253,7 @@
return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];
}
- function inversePoints(pts){
- //var determinant = this.a * this.d - this.b * this.c;
+ function inversePoint(pt) {
var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];
var a = this.props[5]/determinant;
var b = - this.props[1]/determinant;
@@ -262,9 +261,13 @@
var d = this.props[0]/determinant;
var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12])/determinant;
var f = - (this.props[0] * this.props[13] - this.props[1] * this.props[12])/determinant;
+ return [pt[0] * a + pt[1] * c + e, pt[0] * b + pt[1] * d + f, 0];
+ }
+
+ function inversePoints(pts){
var i, len = pts.length, retPts = [];
for(i=0;i<len;i+=1){
- retPts[i] = [pts[i][0] * a + pts[i][1] * c + e, pts[i][0] * b + pts[i][1] * d + f, 0]
+ retPts[i] = inversePoint(pts[i]);
}
return retPts;
}
@@ -329,6 +332,7 @@
this.clone = clone;
this.cloneFromProps = cloneFromProps;
this.inversePoints = inversePoints;
+ this.inversePoint = inversePoint;
this._t = this.transform;
this.props = [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index d4de791..5aff264 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -661,7 +661,7 @@
}
hasParent = !!(elem.hierarchy && elem.hierarchy.length);
if(hasParent && !parent){
- parent = elem.hierarchy[elem.hierarchy.length - 1].layerInterface;
+ parent = elem.hierarchy[0].layerInterface;
}
this.lock = true;
if(this.getPreValue){
diff --git a/player/js/utils/expressions/LayerInterface.js b/player/js/utils/expressions/LayerInterface.js
index 93482e5..f47ef8e 100644
--- a/player/js/utils/expressions/LayerInterface.js
+++ b/player/js/utils/expressions/LayerInterface.js
@@ -12,6 +12,19 @@
}
return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
}
+ function fromComp(arr){
+ var toWorldMat = new Matrix();
+ toWorldMat.reset();
+ this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
+ if(this._elem.hierarchy && this._elem.hierarchy.length){
+ var i, len = this._elem.hierarchy.length;
+ for(i=0;i<len;i+=1){
+ this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
+ }
+ return toWorldMat.inversePoint(arr);
+ }
+ return toWorldMat.inversePoint(arr);
+ }
return function(elem){
@@ -43,6 +56,7 @@
}
_thisLayerFunction.toWorld = toWorld;
_thisLayerFunction.toComp = toWorld;
+ _thisLayerFunction.fromComp = fromComp;
_thisLayerFunction._elem = elem;
Object.defineProperty(_thisLayerFunction, 'hasParent', {
get: function(){