Skip to content

Commit 59bd3e2

Browse files
committed
Initial implementation of gestures/modifiers
1 parent 14d6e31 commit 59bd3e2

File tree

2 files changed

+65
-7
lines changed

2 files changed

+65
-7
lines changed

‎examples/basic/index.html‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@
7575
},
7676
'vive-controls': {
7777
gripdown: 'changeTask',
78-
trackpaddown: 'logdefault'
78+
trackpaddown: 'logdefault',
79+
'trackpad.doubletouch': 'doubletouch',
80+
'trackpad.doublepress': 'doublepress',
81+
'trackpad.longpress': 'longpress'
7982
},
8083
'oculus-touch-controls': {
8184
abuttondown: 'changeTask'
@@ -129,7 +132,6 @@
129132
console.log(text);
130133
drawText(text);
131134
}
132-
133135
mappingText.setAttribute('text', {value: 'Current mapping: ' + AFRAME.currentInputMapping});
134136

135137
var keys = Object.keys(inputActions);
@@ -140,11 +142,10 @@
140142
logEvent(evt);
141143
});
142144

143-
scene.addEventListener('logtask1', function(evt) { logEvent(evt); });
144-
scene.addEventListener('logtask2', function(evt) { logEvent(evt); });
145-
scene.addEventListener('logdefault', function(evt) { logEvent(evt); });
146-
scene.addEventListener('righthand', function(evt) { logEvent(evt); });
147-
scene.addEventListener('lefthand', function(evt) { logEvent(evt); });
145+
var events = ['logtask1', 'logdefault', 'righthand', 'lefthand', 'doubletouch', 'doublepress', 'longpress'];
146+
for (var i = 0; i < events.length; i++) {
147+
scene.addEventListener(events[i], function(evt) { logEvent(evt); });
148+
}
148149
}
149150
</script>
150151
</html>

‎index.js‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,64 @@ AFRAME.registerSystem('input-mapping', {
117117
}
118118

119119
var self = this;
120+
function LongPress (el, eventName) {
121+
this.pressTimer = null;
122+
this.timeOut = 1000;
123+
124+
el.addEventListener(eventName + 'down', evt => {
125+
this.pressTimer = window.setTimeout(function () { console.log('Long press'); }, 1000);
126+
});
127+
128+
el.addEventListener(eventName + 'up', evt => {
129+
clearTimeout(this.pressTimer);
130+
});
131+
}
132+
133+
function DoublePress (el, eventName) {
134+
this.lastTime = 0;
135+
this.timeOut = 250;
136+
137+
el.addEventListener(eventName + 'down', evt => {
138+
var time = performance.now();
139+
if (time - this.lastTime < this.timeOut) {
140+
console.log('Double click');
141+
} else {
142+
this.lastTime = time;
143+
}
144+
});
145+
}
146+
147+
function DoubleTouch (el, eventName) {
148+
this.lastTime = 0;
149+
this.timeOut = 250;
150+
151+
el.addEventListener(eventName + 'touchstart', evt => {
152+
var time = performance.now();
153+
if (time - this.lastTime < this.timeOut) {
154+
console.log('Double touch');
155+
} else {
156+
this.lastTime = time;
157+
}
158+
});
159+
}
160+
161+
var behaviours = {
162+
'longpress': LongPress,
163+
'doublepress': DoublePress,
164+
'doubletouch': DoubleTouch
165+
};
166+
120167
for (var eventName in mappingsPerController) {
168+
var behaviour = null;
169+
if (eventName.indexOf('.') !== -1) {
170+
var aux = eventName.split('.');
171+
eventName = aux[0];
172+
behaviourName = aux[1];
173+
console.log(eventName, behaviourName);
174+
behaviour = new behaviours[behaviourName](controllerObj.element, eventName);
175+
continue;
176+
}
177+
121178
var handler = function (event) {
122179
self.checkValidInputMapping();
123180

0 commit comments

Comments
 (0)