Skip to content

Commit 001a0cb

Browse files
committed
Input transform fixed
1 parent 2341f77 commit 001a0cb

4 files changed

Lines changed: 53 additions & 70 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: '02a4bdd0-55d7-11e7-87f5-37983a7cf73e'
2+
build: 'b1e0db40-5608-11e7-9343-73f81cbe0a9c'
33
};
44
module.exports = CHECKSUM;

v3/src/components/TransformMatrix.js

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var TransformMatrix = function (a, b, c, d, tx, ty)
1414
ty = typeof ty === 'number' ? ty : 0;
1515

1616
this.matrix = new Float32Array([a, b, c, d, tx, ty, 0, 0, 1]);
17+
1718
this.decomposedMatrix = {
1819
translateX: 0,
1920
translateY: 0,
@@ -70,12 +71,14 @@ TransformMatrix.prototype.rotate = function (radian)
7071
TransformMatrix.prototype.multiply = function (otherMatrix)
7172
{
7273
var matrix = this.matrix;
74+
7375
var a0 = matrix[0];
7476
var b0 = matrix[1];
7577
var c0 = matrix[2];
7678
var d0 = matrix[3];
7779
var tx0 = matrix[4];
7880
var ty0 = matrix[5];
81+
7982
var a1 = otherMatrix[0];
8083
var b1 = otherMatrix[1];
8184
var c1 = otherMatrix[2];
@@ -96,6 +99,7 @@ TransformMatrix.prototype.multiply = function (otherMatrix)
9699
TransformMatrix.prototype.transform = function (a, b, c, d, tx, ty)
97100
{
98101
var matrix = this.matrix;
102+
99103
var a0 = matrix[0];
100104
var b0 = matrix[1];
101105
var c0 = matrix[2];
@@ -126,13 +130,8 @@ TransformMatrix.prototype.transformPoint = function (x, y, point)
126130
var tx = matrix[4];
127131
var ty = matrix[5];
128132

129-
// point.x = x * a + y * c + tx;
130-
// point.y = x * b + y * d + ty;
131-
132-
var id = 1 / ((a * d) + (c * -b));
133-
134-
point.x = (d * id * x) + (-c * id * y) + (((ty * c) - (tx * d)) * id);
135-
point.y = (a * id * y) + (-b * id * x) + (((-ty * a) + (tx * b)) * id);
133+
point.x = x * a + y * c + tx;
134+
point.y = x * b + y * d + ty;
136135

137136
return point;
138137
};
@@ -141,20 +140,21 @@ TransformMatrix.prototype.invert = function ()
141140
{
142141
var matrix = this.matrix;
143142

144-
var a1 = matrix[0];
145-
var b1 = matrix[1];
146-
var c1 = matrix[2];
147-
var d1 = matrix[3];
148-
var tx1 = matrix[4];
149-
var ty1 = matrix[5];
150-
var n = a1 * d1 - b1 * c1;
151-
152-
matrix[0] = d1 / n;
153-
matrix[1] = -b1 / n;
154-
matrix[2] = -c1 / n;
155-
matrix[3] = a1 / n;
156-
matrix[4] = (c1 * ty1 - d1 * tx1) / n;
157-
matrix[5] = -(a1 * ty1 - b1 * tx1) / n;
143+
var a = matrix[0];
144+
var b = matrix[1];
145+
var c = matrix[2];
146+
var d = matrix[3];
147+
var tx = matrix[4];
148+
var ty = matrix[5];
149+
150+
var n = a * d - b * c;
151+
152+
matrix[0] = d / n;
153+
matrix[1] = -b / n;
154+
matrix[2] = -c / n;
155+
matrix[3] = a / n;
156+
matrix[4] = (c * ty - d * tx) / n;
157+
matrix[5] = -(a * ty - b * tx) / n;
158158

159159
return this;
160160
};
@@ -176,43 +176,51 @@ TransformMatrix.prototype.setTransform = function (a, b, c, d, tx, ty)
176176
TransformMatrix.prototype.decomposeMatrix = function ()
177177
{
178178
var decomposedMatrix = this.decomposedMatrix;
179+
179180
var matrix = this.matrix;
181+
180182
var a = matrix[0];
181183
var b = matrix[1];
182184
var c = matrix[2];
183185
var d = matrix[3];
186+
184187
var a2 = a * a;
185188
var b2 = b * b;
186189
var c2 = c * c;
187190
var d2 = d * d;
191+
188192
var sx = mathSqrt(a2 + c2);
189193
var sy = mathSqrt(b2 + d2);
190194

191195
decomposedMatrix.translateX = matrix[4];
192196
decomposedMatrix.translateY = matrix[5];
197+
193198
decomposedMatrix.scaleX = sx;
194199
decomposedMatrix.scaleY = sy;
200+
195201
decomposedMatrix.rotation = mathAcos(a / sx) * (mathAtan(-c / a) < 0 ? -1 : 1);
196202

197203
return decomposedMatrix;
198204
};
199205

200206
/* identity + translate + rotate + scale */
201-
TransformMatrix.prototype.applyITRS = function (x, y, rotation, scaleX, scaleY)
207+
TransformMatrix.prototype.applyITRS = function (x, y, rotation, scaleX, scaleY)
202208
{
203209
var matrix = this.matrix;
210+
204211
var a = 1;
205212
var b = 0;
206213
var c = 0;
207214
var d = 1;
208-
var e = 0;
209-
var f = 0;
215+
var tx = 0;
216+
var ty = 0;
217+
210218
var sr = mathSin(rotation);
211219
var cr = mathCos(rotation);
212220

213221
// Translate
214-
matrix[4] = a * x + c * y + e;
215-
matrix[5] = b * x + d * y + f;
222+
matrix[4] = a * x + c * y + tx;
223+
matrix[5] = b * x + d * y + ty;
216224

217225
// Rotate
218226
matrix[0] = cr * a + -sr * c;

v3/src/input/components/GetTransformedPoint.js

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,43 +11,27 @@ var GetTransformedPoint = function (matrix, gameObject, x, y, output)
1111
if (output === undefined) { output = { x: 0, y: 0 }; }
1212

1313
matrix.applyITRS(gameObject.x, gameObject.y, -gameObject.rotation, gameObject.scaleX, gameObject.scaleY);
14-
matrix.invert();
15-
// matrix.transformPoint(x, y, output);
16-
var ma = matrix.matrix;
17-
var a = ma[0];
18-
var b = ma[1];
19-
var c = ma[2];
20-
var d = ma[3];
21-
var e = ma[4];
22-
var f = ma[5];
23-
24-
var tx = x * a + y * c + e;
25-
var ty = x * b + y * d + f;
2614

27-
output.x = tx;
28-
output.y = ty;
29-
30-
// var a = matrix.matrix[0];
31-
// var b = matrix.matrix[1];
32-
// var c = matrix.matrix[2];
33-
// var d = matrix.matrix[3];
34-
// var tx = matrix.matrix[4];
35-
// var ty = matrix.matrix[5];
15+
matrix.invert();
3616

37-
// Apply inverse of the matrix
17+
return matrix.transformPoint(x, y, output);
3818

39-
// var id = 1 / ((a * d) + (c * -b));
19+
// var ma = matrix.matrix;
4020

41-
// output.x = (d * id * x) + (-c * id * y) + (((ty * c) - (tx * d)) * id);
42-
// output.y = (a * id * y) + (-b * id * x) + (((-ty * a) + (tx * b)) * id);
21+
// var a = ma[0];
22+
// var b = ma[1];
23+
// var c = ma[2];
24+
// var d = ma[3];
25+
// var e = ma[4];
26+
// var f = ma[5];
4327

44-
// x -= tx;
45-
// y -= ty;
28+
// var tx = x * a + y * c + e;
29+
// var ty = x * b + y * d + f;
4630

47-
// output.x = (a * x) + (c * y) + tx;
48-
// output.y = (b * x) + (d * y) + ty;
31+
// output.x = tx;
32+
// output.y = ty;
4933

50-
return output;
34+
// return output;
5135
};
5236

5337
module.exports = GetTransformedPoint;

v3/src/input/components/PointWithinGameObject.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,13 @@
33

44
var PointWithinGameObject = function (gameObject, x, y)
55
{
6-
var width = gameObject.displayWidth;
7-
var height = gameObject.displayHeight;
6+
var width = gameObject.width;
7+
var height = gameObject.height;
88

99
var x1 = -width * gameObject.originX;
10+
var y1 = -height * gameObject.originY;
1011

11-
if (x >= x1 && x < x1 + width)
12-
{
13-
var y1 = -height * gameObject.originY;
14-
15-
if (y >= y1 && y < y1 + height)
16-
{
17-
return true;
18-
}
19-
}
20-
21-
return false;
12+
return (x >= x1 && x < (x1 + width) && y >= y1 && y < (y1 + height));
2213
};
2314

2415
module.exports = PointWithinGameObject;

0 commit comments

Comments
 (0)