(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0) { setState("closeEntryDoors"); } } // // closeEntryDoors // function closeEntryDoorsEnter() { editEntity("entry-collision", { collisionless: false, visible: true }); } function closeEntryDoorsUpdate(dt) { if (timeInState > 3.0) { setState("openExitDoors"); } } // // openExitDoors // function openExitDoorsEnter() { editEntity("exit-collision", { collisionless: true, visible: false }); } function openExitDoorsUpdate(dt) { // TODO: push player out of the container if (numAvatarsInContainer() === 0) { setState("idle"); } } // // // function setState(newState) { if (state !== newState) { // exit old state if (stateTable[state]) { var exitFunc = stateTable[state].exit; if (exitFunc) { exitFunc(); } } else { debug("ERROR: no state table for state = " + state); } // enter new state if (stateTable[newState]) { var enterFunc = stateTable[newState].enter; if (enterFunc) { enterFunc(); } } else { debug("ERROR: no state table for state = " + newState); } timeInState = 0; state = newState; debug("state = " + state); } } function numAvatarsInEntry() { var count = 0; var keys = Object.keys(numAvatarsInEntryTriggerMap); var i, l = keys.length; for (i = 0; i < l; i++) { if (numAvatarsInEntryTriggerMap[keys[i]] > 0.0) { count++; } } return count; } function numAvatarsInContainer() { var count = 0; var keys = Object.keys(numAvatarsInContainerTriggerMap); var i, l = keys.length; for (i = 0; i < l; i++) { if (numAvatarsInContainerTriggerMap[keys[i]] > 0.0) { count++; } } return count; } function update(dt) { var updateFunc = stateTable[state].update; timeInState += dt; if (updateFunc) { updateFunc(dt); } // decrement timers for trigger maps var keys = Object.keys(numAvatarsInEntryTriggerMap); var i, l = keys.length; for (i = 0; i < l; i++) { numAvatarsInEntryTriggerMap[keys[i]] -= dt; } keys = Object.keys(numAvatarsInContainerTriggerMap); l = keys.length; for (i = 0; i < l; i++) { numAvatarsInContainerTriggerMap[keys[i]] -= dt; } } function reset() { goToState("idle"); } EntityViewer.setPosition(ORIGIN); EntityViewer.setCenterRadius(60000); var octreeQueryInterval = Script.setInterval(function() { EntityViewer.queryOctree(); }, 1000); Script.update.connect(update); Messages.subscribe(TRIGGER_CHANNEL); Messages.messageReceived.connect(function (channel, message, senderID) { var AVATAR_TRIGGER_TIMEOUT = 10.0; print("MESSAGE, channel = " + channel + ", message = " + message + ", senderID = " + senderID); if (channel === TRIGGER_CHANNEL) { var data = JSON.parse(message); if (data.inside) { if (data.entityID === lookupEntityByName("entry-back-trigger")) { numAvatarsInEntryTriggerMap[senderID] = AVATAR_TRIGGER_TIMEOUT; } else if (data.entityID === lookupEntityByName("container-trigger")) { numAvatarsInContainerTriggerMap[senderID] = AVATAR_TRIGGER_TIMEOUT; } } else { if (data.entityID === lookupEntityByName("entry-back-trigger")) { numAvatarsInEntryTriggerMap[senderID] = 0; } else if (data.entityID === lookupEntityByName("container-trigger")) { numAvatarsInContainerTriggerMap[senderID] = 0; } } } else if (channel === RESET_CHANNEL) { reset(); } }); setState("uninitialized"); },{}]},{},[1]);