(function() { var messageChannel = 'MESSAGE_CHANNEL_GATE_GAME'; var SOUND_URL = 'https://hifi-content.s3.amazonaws.com/wadewatts/Ring2.wav?v=' + Date.now(); var entityID; var sound; 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 'CHECKPOINT': if (entityID === data.gateID) { var position = Entities.getEntityProperties(entityID, 'position').position; var audioProperties = { volume: 0.1, position: position }; Audio.playSound(sound, audioProperties); } break; } } return { preload: function(id) { entityID = id; Messages.subscribe(messageChannel); Messages.messageReceived.connect(null, onReceivedMessage); sound = SoundCache.getSound(SOUND_URL); sendMessage({ type: 'INIT_GATE', gateID: entityID }); print('Hello Gate'); }, unload: function(id) { sendMessage({ type: 'REMOVE_GATE', gateID: entityID }); Messages.unsubscribe(messageChannel); Messages.messageReceived.disconnect(null, onReceivedMessage); }, enterEntity: function(id) { sendMessage({ type: 'PASS_THROUGH_GATE', avatarSessionUUID: MyAvatar.sessionUUID, avatarDisplayName: MyAvatar.displayName, gateID: entityID }); } }; })