From b908f63424ad147b367e59082430a072408dde62 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Sat, 6 Aug 2016 01:17:32 +0000 Subject: [PATCH] Oh. Device orientation is separate from location. git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3295 ed5197a5-7fde-0310-b194-c3ffbd925b24 --- core/client.js | 23 +++++++++++++++ packages/cory/geolocation/geolocation.js | 36 +++++++++++++++++++----- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/core/client.js b/core/client.js index f774427f..b430e0c0 100644 --- a/core/client.js +++ b/core/client.js @@ -6,6 +6,7 @@ var gCredentials; var gErrorCount = 0; var gCommandHistory = []; var gSendKeyEvents = false; +var gSendDeviceOrientationEvents = false; var gGeolocatorWatch; var kMaxCommandHistory = 16; @@ -162,6 +163,14 @@ function receive(data) { if (navigator && navigator.geolocation && gGeolocatorWatch !== undefined) { navigator.geolocation.clearWatch(gGeolocatorWatch); } + } else if (line && line[0] && line[0].action == "setSendDeviceOrientationEvents") { + let value = line[0].value; + if (value && !gSendDeviceOrientationEvents) { + window.addEventListener("deviceorientation", deviceOrientation); + } else if (!value && gSendDeviceOrientationEvents) { + window.removeEventListener("deviceorientation", deviceOrientation); + } + gSendDeviceOrientationEvents = value; } else { print(document.getElementById(target), line); } @@ -196,6 +205,18 @@ function geolocationError(error) { }); } +function deviceOrientation(event) { + send({ + event: 'deviceorientation', + orientation: { + alpha: event.alpha, + beta: event.beta, + gamma: event.gamma, + absolute: event.absolute, + }, + }); +}; + function keyEvent(event) { send({ event: "key", @@ -536,6 +557,8 @@ function connectSocket() { ['getCurrentPosition', 'options'], ['watchPosition', 'options'], ['clearWatch'], + + ['setSendDeviceOrientationEvents', 'value'], ], })); } diff --git a/packages/cory/geolocation/geolocation.js b/packages/cory/geolocation/geolocation.js index 8a715712..7e24ca21 100644 --- a/packages/cory/geolocation/geolocation.js +++ b/packages/cory/geolocation/geolocation.js @@ -1,19 +1,41 @@ "use strict"; -core.register("geolocation", function(event) { - terminal.print("hi"); +let gPosition = null; +let gOrientation = null; +let gError = null; + +function draw() { terminal.cork(); - if (event.position) { - for (let field in event.position.coords) { - let value = event.position.coords[field]; + terminal.clear(); + if (gPosition) { + for (let field in gPosition.coords) { + let value = gPosition.coords[field]; terminal.print(field, ": ", value != null ? value.toString() : "null"); } - } else if (event.error) { + } + if (gOrientation && gOrientation.alpha && gOrientation.beta && gOrientation.gamma) { + terminal.print(gOrientation.alpha.toString(), ", ", gOrientation.beta.toString(), ", ", gOrientation.gamma.toString(), ", ", gOrientation.absolute.toString()); + } + if (gError) { terminal.print(event.error.message); terminal.clearWatch(); } terminal.uncork(); +} + +core.register("geolocation", function(event) { + if (event.position) { + gPosition = event.position; + } else if (event.error) { + gError = event.error; + } + draw(); +}); + +core.register("deviceorientation", function(event) { + gOrientation = event.orientation; + draw(); }); terminal.watchPosition({enableHighAccuracy: true}); -//terminal.watchPosition(); \ No newline at end of file +terminal.setSendDeviceOrientationEvents(true); \ No newline at end of file