Skip to content

Commit 1676f22

Browse files
committed
Automatically handle the drag values in rotated containers
1 parent 4a91b1e commit 1676f22

1 file changed

Lines changed: 27 additions & 5 deletions

File tree

src/input/InputPlugin.js

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,12 +1095,15 @@ var InputPlugin = new Class({
10951095

10961096
input.dragState = 2;
10971097

1098-
input.dragX = pointer.x - gameObject.x;
1099-
input.dragY = pointer.y - gameObject.y;
1100-
11011098
input.dragStartX = gameObject.x;
11021099
input.dragStartY = gameObject.y;
11031100

1101+
input.dragStartXGlobal = pointer.x;
1102+
input.dragStartYGlobal = pointer.y;
1103+
1104+
input.dragX = input.dragStartXGlobal - input.dragStartX;
1105+
input.dragY = input.dragStartYGlobal - input.dragStartY;
1106+
11041107
gameObject.emit(Events.GAMEOBJECT_DRAG_START, pointer, input.dragX, input.dragY);
11051108

11061109
this.emit(Events.DRAG_START, pointer, gameObject);
@@ -1288,8 +1291,27 @@ var InputPlugin = new Class({
12881291
this.emit(Events.DRAG_ENTER, pointer, gameObject, target);
12891292
}
12901293

1291-
var dragX = pointer.x - gameObject.input.dragX;
1292-
var dragY = pointer.y - gameObject.input.dragY;
1294+
var dragX;
1295+
var dragY;
1296+
1297+
if (!gameObject.parentContainer)
1298+
{
1299+
dragX = pointer.x - input.dragX;
1300+
dragY = pointer.y - input.dragY;
1301+
}
1302+
else
1303+
{
1304+
var dx = pointer.x - input.dragStartXGlobal;
1305+
var dy = pointer.y - input.dragStartYGlobal;
1306+
1307+
var rotation = gameObject.getParentRotation();
1308+
1309+
var dxRotated = dx * Math.cos(rotation) + dy * Math.sin(rotation);
1310+
var dyRotated = dy * Math.cos(rotation) - dx * Math.sin(rotation);
1311+
1312+
dragX = dxRotated + input.dragStartX;
1313+
dragY = dyRotated + input.dragStartY;
1314+
}
12931315

12941316
gameObject.emit(Events.GAMEOBJECT_DRAG, pointer, dragX, dragY);
12951317

0 commit comments

Comments
 (0)