Skip to content

Commit

Permalink
Add x, y values for Mouse and Touch inputs
Browse files Browse the repository at this point in the history
  • Loading branch information
dmvaldman committed Oct 10, 2016
1 parent db4ab46 commit dacf532
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
16 changes: 15 additions & 1 deletion samsara/inputs/MouseInput.js
Expand Up @@ -17,6 +17,8 @@ define(function(require, exports, module) {
*
* MouseInput emits these events with the following payload data:
*
* `x` - x-position relative to screen (independent of scroll)
* `y` - y-position relative to screen (independent of scroll)
* `value` - Displacement in pixels from `mousedown`
* `delta` - Differential in pixels between successive mouse positions
* `velocity` - Velocity of mouse movement in pixels per second
Expand Down Expand Up @@ -84,6 +86,8 @@ define(function(require, exports, module) {
this._eventInput.on('mouseleave', handleLeave.bind(this));

this._payload = {
x : 0,
y : 0,
delta : null,
value : null,
cumulate : null,
Expand Down Expand Up @@ -139,12 +143,16 @@ define(function(require, exports, module) {
this._value = 0;
delta = 0;
velocity = 0;
if (this.options.direction === MouseInput.DIRECTION.X) payload.x = x;
if (this.options.direction === MouseInput.DIRECTION.Y) payload.y = y;
}
else {
if (this._cumulate === null) this._cumulate = [0, 0];
this._value = [0, 0];
delta = [0, 0];
velocity = [0, 0];
payload.x = x;
payload.y = y;
}

var payload = this._payload;
Expand Down Expand Up @@ -191,19 +199,25 @@ define(function(require, exports, module) {
var nextVel;
var nextDelta;

var payload = this._payload;

if (direction === MouseInput.DIRECTION.X) {
payload.x = x;
nextDelta = diffX;
nextVel = velX;
this._value += nextDelta;
this._cumulate += nextDelta;
}
else if (direction === MouseInput.DIRECTION.Y) {
payload.y = y;
nextDelta = diffY;
nextVel = velY;
this._value += nextDelta;
this._cumulate += nextDelta;
}
else {
payload.x = x;
payload.y = y;
nextDelta = [diffX, diffY];
nextVel = [velX, velY];
this._value[0] += nextDelta[0];
Expand All @@ -212,7 +226,7 @@ define(function(require, exports, module) {
this._cumulate[1] += nextDelta[1];
}

var payload = this._payload;

payload.delta = nextDelta;
payload.value = this._value;
payload.cumulate = this._cumulate;
Expand Down
26 changes: 20 additions & 6 deletions samsara/inputs/TouchInput.js
Expand Up @@ -17,6 +17,8 @@ define(function(require, exports, module) {
*
* TouchInput emits these events with the following payload data:
*
* `x` - x-position relative to screen (independent of scroll)
* `y` - y-position relative to screen (independent of scroll)
* `value` - Displacement in pixels from `touchstart`
* `delta` - Differential in pixels between successive mouse positions
* `velocity` - Velocity of mouse movement in pixels per second
Expand Down Expand Up @@ -110,7 +112,10 @@ define(function(require, exports, module) {
var velocity;
var delta;

var payload = {};
if (this.options.direction !== undefined) {
if (this.options.direction === TouchInput.DIRECTION.X) payload.x = data.x;
if (this.options.direction === TouchInput.DIRECTION.Y) payload.y = data.y;
if (!this._cumulate[touchId]) this._cumulate[touchId] = 0;
this._value[touchId] = 0;
velocity = 0;
Expand All @@ -121,11 +126,10 @@ define(function(require, exports, module) {
this._value[touchId] = [0, 0];
velocity = [0, 0];
delta = [0, 0];
payload.x = data.x;
payload.y = data.y;
}

var payload = {};
this._payload[data.touchId] = payload;

payload.delta = delta;
payload.value = this._value[touchId];
payload.cumulate = this._cumulate[touchId];
Expand All @@ -135,6 +139,8 @@ define(function(require, exports, module) {
payload.event = data.event;
payload.timestamp = data.timestamp;

this._payload[data.touchId] = payload;

this._eventOutput.emit('start', payload);
}

Expand All @@ -148,8 +154,11 @@ define(function(require, exports, module) {
var prevTime = prevData.timestamp;
var currTime = data.timestamp;

var diffX = scale * (data.x - prevData.x);
var diffY = scale * (data.y - prevData.y);
var x = data.x;
var y = data.y;

var diffX = scale * (x - prevData.x);
var diffY = scale * (y - prevData.y);

if (this.options.rails){
if ((direction === TouchInput.DIRECTION.X && Math.abs(diffY) > Math.abs(diffX)))
Expand All @@ -168,18 +177,22 @@ define(function(require, exports, module) {
var nextVel;
var nextDelta;
if (direction === TouchInput.DIRECTION.X) {
payload.x = x;
nextDelta = diffX;
nextVel = velX;
this._value[touchId] += nextDelta;
this._cumulate[touchId] += nextDelta;
}
else if (direction === TouchInput.DIRECTION.Y) {
payload.y = y;
nextDelta = diffY;
nextVel = velY;
this._value[touchId] += nextDelta;
this._cumulate[touchId] += nextDelta;
}
else {
payload.x = x;
payload.y = y;
nextDelta = [diffX, diffY];
nextVel = [velX, velY];
this._value[touchId][0] += nextDelta[0];
Expand All @@ -188,7 +201,6 @@ define(function(require, exports, module) {
this._cumulate[touchId][1] += nextDelta[1];
}

var payload = this._payload[data.touchId];
payload.delta = nextDelta;
payload.velocity = nextVel;
payload.value = this._value[touchId];
Expand All @@ -199,6 +211,8 @@ define(function(require, exports, module) {
payload.timestamp = data.timestamp;
payload.dt = dt;

var payload = this._payload[data.touchId];

this._eventOutput.emit('update', payload);
}

Expand Down

0 comments on commit dacf532

Please sign in to comment.