Skip to content

Commit 8bae761

Browse files
committed
Pointer Down and Up events working on Game Objects
1 parent d12522e commit 8bae761

4 files changed

Lines changed: 71 additions & 17 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: '29bc3100-6824-11e7-b3dd-8943a02e40de'
2+
build: '8d1f7160-682b-11e7-b9b9-afea77e03fb0'
33
};
44
module.exports = CHECKSUM;

v3/src/input/GlobalInputManager.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ var GlobalInputManager = new Class({
5959

6060
var len = this.queue.length;
6161

62+
// Currently just 1 pointer supported
6263
var pointer = this.activePointer;
6364

64-
pointer.hasMoved = false;
65+
pointer.reset();
6566

6667
if (!this.enabled || len === 0)
6768
{
@@ -77,28 +78,25 @@ var GlobalInputManager = new Class({
7778
{
7879
var event = queue[i];
7980

81+
// Move to CONSTs so we can do integer comparisons instead of strings
8082
switch (event.type)
8183
{
8284
case 'mousemove':
8385

84-
pointer.update(event);
86+
pointer.move(event);
8587
this.events.dispatch(new MouseEvent.MOVE(event));
86-
8788
break;
8889

8990
case 'mousedown':
9091

91-
pointer.isDown = true;
92-
pointer.update(event);
92+
pointer.down(event);
9393
this.events.dispatch(new MouseEvent.DOWN(event));
94-
9594
break;
9695

9796
case 'mouseup':
9897

99-
pointer.isDown = false;
98+
pointer.up(event);
10099
this.events.dispatch(new MouseEvent.UP(event));
101-
102100
break;
103101
}
104102
}

v3/src/input/Pointer.js

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,52 @@ var Pointer = new Class({
1212

1313
this.x = 0;
1414
this.y = 0;
15-
this.hasMoved = false;
1615

1716
this.isDown = false;
17+
18+
this.dirty = false;
19+
20+
this.justDown = false;
21+
this.justUp = false;
22+
this.justMoved = false;
23+
},
24+
25+
reset: function ()
26+
{
27+
this.dirty = false;
28+
this.justDown = false;
29+
this.justUp = false;
30+
this.justMoved = false;
1831
},
1932

20-
update: function (event)
33+
move: function (event)
2134
{
35+
this.dirty = true;
36+
2237
this.x = event.x;
2338
this.y = event.y;
24-
this.hasMoved = true;
39+
40+
this.justMoved = true;
41+
},
42+
43+
down: function (event)
44+
{
45+
this.dirty = true;
46+
47+
this.x = event.x;
48+
this.y = event.y;
49+
50+
this.justDown = true;
51+
},
52+
53+
up: function (event)
54+
{
55+
this.dirty = true;
56+
57+
this.x = event.x;
58+
this.y = event.y;
59+
60+
this.justUp = true;
2561
}
2662

2763
});

v3/src/plugins/InputManager.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,37 @@ var InputManager = new Class({
9191
}
9292

9393
// Has the pointer moved? If so we need to re-check the interactive objects per camera in this State
94-
if (this.manager.activePointer.hasMoved)
94+
if (this.manager.activePointer.dirty)
9595
{
96+
this.hitTestPointer(this.manager.activePointer);
97+
9698
this.processPointer(this.manager.activePointer);
9799
}
98100
},
99101

102+
// Has it been pressed down or released in this update?
100103
processPointer: function (pointer)
104+
{
105+
var i;
106+
var over = this._over;
107+
108+
if (pointer.justDown)
109+
{
110+
for (i = 0; i < over.length; i++)
111+
{
112+
this.events.dispatch(new InputEvent.DOWN(pointer, over[i]));
113+
}
114+
}
115+
else if (pointer.justUp)
116+
{
117+
for (i = 0; i < over.length; i++)
118+
{
119+
this.events.dispatch(new InputEvent.UP(pointer, over[i]));
120+
}
121+
}
122+
},
123+
124+
hitTestPointer: function (pointer)
101125
{
102126
var i;
103127
var tested = [];
@@ -143,20 +167,16 @@ var InputManager = new Class({
143167
// Now we can process what has happened
144168
for (i = 0; i < justOut.length; i++)
145169
{
146-
// Dispatch event? (include the pointer)
147170
this.events.dispatch(new InputEvent.OUT(pointer, justOut[i]));
148171
}
149172

150173
for (i = 0; i < justOver.length; i++)
151174
{
152-
// Dispatch event? (include the pointer)
153175
this.events.dispatch(new InputEvent.OVER(pointer, justOver[i]));
154176
}
155177

156178
// Store everything that is currently over
157179
this._over = stillOver.concat(justOver);
158-
159-
// console.log('tested', tested.length, 'justOver', justOver.length, 'justOut', justOut.length, 'stillOver', stillOver.length, '_over', this._over.length);
160180
},
161181

162182
add: function (child)

0 commit comments

Comments
 (0)