(function() { var messageChannel = 'MESSAGE_CHANNEL_GATE_GAME'; var entityID; var racers; function sendMessage(message) { message.entityID = entityID; Messages.sendMessage( messageChannel, JSON.stringify(message) ); } function onReceivedMessage(channel, message, senderID) { try { var data = JSON.parse(message); } catch (e) { print('Error parsing message: ' + message); return; } print('data: ' + JSON.stringify(data)); switch (data.type) { case 'GO_THROUGH': var racer = racers[data.avatarSessionUUID]; if (!racer) { racers[data.avatarSessionUUID] = racer = {}; racer.avatarDisplayName = data.avatarDisplayName; } if (!racer.startTime) { racer.startTime = Date.now(); racer.time = 'racing...'; } else { racer.time = ((Date.now() - racer.startTime) / 1000).toFixed(3) + ' sec'; racer.startTime = null; } sendMessage({ type: 'RENDER', racers: racers }); break; } } return { preload: function(id) { entityID = id; racers = {}; Messages.subscribe(messageChannel); Messages.messageReceived.connect(null, onReceivedMessage); print('Hello Scoreboard'); }, unload: function(id) { Messages.unsubscribe(messageChannel); Messages.messageReceived.disconnect(null, onReceivedMessage); }, }; })