From c95cb97b9bbf29e69971a8fb3faa8dcd89f5295d Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Fri, 31 Aug 2018 19:29:48 -0700 Subject: [PATCH] adding working version with networking signals --- interface/resources/serverless/redirect.json | 1609 +++++++++--------- interface/src/Application.cpp | 31 +- interface/src/Application.h | 4 +- libraries/networking/src/AddressManager.cpp | 44 +- libraries/networking/src/AddressManager.h | 12 +- libraries/networking/src/DomainHandler.cpp | 21 +- libraries/networking/src/DomainHandler.h | 4 +- 7 files changed, 891 insertions(+), 834 deletions(-) diff --git a/interface/resources/serverless/redirect.json b/interface/resources/serverless/redirect.json index 71dfae4212..fd81b6d433 100644 --- a/interface/resources/serverless/redirect.json +++ b/interface/resources/serverless/redirect.json @@ -5,91 +5,91 @@ "clientOnly": false, "collidesWith": "static,dynamic,kinematic,otherAvatar,", "collisionMask": 23, - "created": "2018-08-29T22:59:44Z", + "created": "2018-08-31T21:40:18Z", "dimensions": { - "blue": 0.26190000772476196, - "green": 0.5595999956130981, - "red": 0.5318999886512756, - "x": 0.5318999886512756, - "y": 0.5595999956130981, - "z": 0.26190000772476196 + "blue": 0.8231174349784851, + "green": 1.8264780044555664, + "red": 1.2112245559692383, + "x": 1.2112245559692383, + "y": 1.8264780044555664, + "z": 0.8231174349784851 }, - "id": "{4782f05d-ca51-41d4-9d19-21b8cad5ec2d}", - "lastEdited": 1535584079688600, - "lastEditedBy": "{f5457c14-32ca-45c2-9dde-4f5b30b3be1b}", - "name": "Try Again Box", + "id": "{1a8bf6e0-6f03-4761-9aba-1f624fae1236}", + "lastEdited": 1535751992686833, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", + "name": "Try Again Zone", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 4.54052734375, - "green": 1.722428798675537, - "red": 4.593362331390381, - "x": 0.5933623313903809, - "y": -7.777571201324463, - "z": 0.54052734375 + "blue": 4.442525863647461, + "green": 1.9289360046386719, + "red": 2.600449562072754, + "x": -1.399550437927246, + "y": -7.571063995361328, + "z": 0.44252586364746094 }, "queryAACube": { - "scale": 0.8152676820755005, - "x": 4.185728549957275, - "y": 1.3147950172424316, - "z": 4.1328935623168945 + "scale": 2.3410699367523193, + "x": 1.4299145936965942, + "y": 0.7584010362625122, + "z": 3.2719907760620117 }, "rotation": { - "w": 0.9868703484535217, - "x": -0.010178769007325172, - "y": -0.15702557563781738, - "z": 0.03642075136303902 - }, - "script": "file:///C:/Users/wayne/development/tryAgainBoxEntityScript.js", - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "clientOnly": false, - "created": "2018-08-29T23:01:55Z", - "dimensions": { - "blue": 0.26190000772476196, - "green": 0.5595999956130981, - "red": 0.5318999886512756, - "x": 0.5318999886512756, - "y": 0.5595999956130981, - "z": 0.26190000772476196 - }, - "id": "{8c9287c8-3826-4f2e-944e-05d8d4715fb8}", - "lastEdited": 1535584095676575, - "lastEditedBy": "{f5457c14-32ca-45c2-9dde-4f5b30b3be1b}", - "name": "Back Box", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.9590959548950195, - "green": 1.738053798675537, - "red": 5.0181121826171875, - "x": 1.0181121826171875, - "y": -7.761946201324463, - "z": -0.04090404510498047 - }, - "queryAACube": { - "scale": 0.8152676820755005, - "x": 4.610478401184082, - "y": 1.3304200172424316, - "z": 3.551462173461914 - }, - "rotation": { - "w": 0.9366722106933594, + "w": 0.9743700623512268, "x": 0, - "y": -0.3502073884010315, + "y": -0.22495104372501373, "z": 0 }, - "script": "file:///C:/Users/wayne/development/backBoxEntityScript.js", - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":true}}", - "visible": false + "script": "file:///C:/Users/wayne/development/zoneTryAgainEntityScript.js", + "shapeType": "box", + "type": "Zone", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" }, { "clientOnly": false, - "created": "2018-08-29T22:57:33Z", + "collidesWith": "static,dynamic,kinematic,otherAvatar,", + "collisionMask": 23, + "created": "2018-08-31T21:44:40Z", + "dimensions": { + "blue": 0.7544999718666077, + "green": 1.8265000581741333, + "red": 1.0555000305175781, + "x": 1.0555000305175781, + "y": 1.8265000581741333, + "z": 0.7544999718666077 + }, + "id": "{eb439982-948a-4393-8e8c-fdd833e6d9a7}", + "lastEdited": 1535752005525769, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", + "name": "Back Zone", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 2.538674831390381, + "green": 1.8022732734680176, + "red": 3.5101304054260254, + "x": -0.4898695945739746, + "y": -7.697726726531982, + "z": -1.4613251686096191 + }, + "queryAACube": { + "scale": 2.2404136657714844, + "x": 2.389923572540283, + "y": 0.6820664405822754, + "z": 1.4184679985046387 + }, + "rotation": { + "w": 0.9304176568984985, + "x": 0, + "y": -0.36650121212005615, + "z": 0 + }, + "script": "file:///C:/Users/wayne/development/zoneBackEntityScript.js", + "shapeType": "box", + "type": "Zone", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "clientOnly": false, + "created": "2018-08-31T21:35:56Z", "dimensions": { "blue": 14.40000057220459, "green": 14.40000057220459, @@ -98,9 +98,9 @@ "y": 14.40000057220459, "z": 14.40000057220459 }, - "id": "{8e6bd656-d764-4724-a89d-7b4ff96abf8a}", - "lastEdited": 1535583477860044, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "id": "{dbae0b3a-a7ff-4eb1-9177-fd1f20b3cec8}", + "lastEdited": 1535751789461074, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { "blue": 2.3440732955932617, @@ -127,6 +127,239 @@ "type": "Zone", "userData": "{\"grabbableKey\":{\"grabbable\":false}}" }, + { + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 0 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 11.117486953735352, + "green": 3.580313205718994, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 3.580313205718994, + "z": 11.117486953735352 + }, + "id": "{c92b026b-e13c-448a-903c-2773f9fdc2e8}", + "lastEdited": 1535751961512543, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 1.9063844680786133, + "green": 1.15850830078125, + "red": 0.16632509231567383, + "x": -3.833674907684326, + "y": -8.34149169921875, + "z": -2.0936155319213867 + }, + "queryAACube": { + "scale": 11.681488037109375, + "x": -5.674418926239014, + "y": -4.6822357177734375, + "z": -3.934359550476074 + }, + "rotation": { + "w": 0.9666743278503418, + "x": -4.57763671875e-05, + "y": -0.2560006380081177, + "z": 1.52587890625e-05 + }, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 0 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 11.117486953735352, + "green": 3.580313205718994, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 3.580313205718994, + "z": 11.117486953735352 + }, + "id": "{cd72debb-75a6-420d-b39f-b903fb069798}", + "lastEdited": 1535751362199714, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 6.1806135177612305, + "green": 1.1588134765625, + "red": 1.4755167961120605, + "x": -2.5244832038879395, + "y": -8.3411865234375, + "z": 2.1806135177612305 + }, + "queryAACube": { + "scale": 11.681488037109375, + "x": -4.365227222442627, + "y": -4.6819305419921875, + "z": 0.33986949920654297 + }, + "rotation": { + "w": 0.8637980222702026, + "x": -4.57763671875e-05, + "y": 0.5038070678710938, + "z": -1.52587890625e-05 + }, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 0 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 11.117486953735352, + "green": 3.580313205718994, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 3.580313205718994, + "z": 11.117486953735352 + }, + "id": "{abe300d5-32b8-4d0c-bf82-e78005b79b70}", + "lastEdited": 1535751362199153, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 5.268576622009277, + "green": 1.1588134765625, + "red": 6.100250244140625, + "x": 2.100250244140625, + "y": -8.3411865234375, + "z": 1.2685766220092773 + }, + "queryAACube": { + "scale": 11.681488037109375, + "x": 0.2595062255859375, + "y": -4.6819305419921875, + "z": -0.5721673965454102 + }, + "rotation": { + "w": 0.9662165641784668, + "x": -4.57763671875e-05, + "y": -0.2576791048049927, + "z": 1.52587890625e-05 + }, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{66757fda-b7ad-4858-83ab-724b01710cc2}", + "lastEdited": 1535751362198937, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 1.3116319179534912, + "green": 0.15618896484375, + "red": 2.705613613128662, + "x": -1.294386386871338, + "y": -9.34381103515625, + "z": -2.688368082046509 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 2.5324084758758545, + "y": -0.017016112804412842, + "z": 1.1384267807006836 + }, + "rotation": { + "w": 0.46953535079956055, + "x": -0.16719311475753784, + "y": -0.7982757091522217, + "z": 0.3380941152572632 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{24eda146-92f8-4e43-b084-fb555626427b}", + "lastEdited": 1535751362198263, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 1.3116319179534912, + "green": 0, + "red": 2.705613613128662, + "x": -1.294386386871338, + "y": -9.5, + "z": -2.688368082046509 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 2.5324084758758545, + "y": -0.17320507764816284, + "z": 1.1384267807006836 + }, + "rotation": { + "w": 0.9127794504165649, + "x": 0.2575265169143677, + "y": 0.15553522109985352, + "z": 0.2761729955673218 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, { "alpha": 0, "alphaFinish": 0, @@ -148,7 +381,7 @@ "y": 255, "z": 255 }, - "created": "2018-08-29T22:57:33Z", + "created": "2018-08-31T21:35:56Z", "dimensions": { "blue": 13.24000072479248, "green": 13.24000072479248, @@ -181,8 +414,419 @@ }, "emitRate": 6, "emitSpeed": 0, - "id": "{b5ba3aa4-2eb9-4cfd-aec7-43635511c6b7}", - "lastEdited": 1535583477861791, + "emitterShouldTrail": true, + "id": "{b9a46e3e-f982-4a46-b38d-2a38e5cc5fbc}", + "lastEdited": 1535751362199964, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "lifespan": 10, + "maxParticles": 10, + "name": "Stars", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "particleRadius": 0.07000000029802322, + "polarFinish": 3.1415927410125732, + "position": { + "blue": 3.78922963142395, + "green": 0.5220947265625, + "red": 1.1928560733795166, + "x": -2.8071439266204834, + "y": -8.9779052734375, + "z": -0.2107703685760498 + }, + "queryAACube": { + "scale": 22.932353973388672, + "x": -10.273321151733398, + "y": -10.944082260131836, + "z": -7.676947593688965 + }, + "radiusFinish": 0, + "radiusStart": 0, + "rotation": { + "w": 0.996429443359375, + "x": -1.52587890625e-05, + "y": -0.08442819118499756, + "z": -4.57763671875e-05 + }, + "speedSpread": 0, + "spinFinish": null, + "spinStart": null, + "textures": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/star.png", + "type": "ParticleEffect", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 0 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 11.117486953735352, + "green": 3.580313205718994, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 3.580313205718994, + "z": 11.117486953735352 + }, + "id": "{e6897ca3-1c22-429f-a1b6-173ff47397a7}", + "lastEdited": 1535751362197848, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 0, + "green": 1.1583251953125, + "red": 4.971565246582031, + "x": 0.9715652465820312, + "y": -8.3416748046875, + "z": -4 + }, + "queryAACube": { + "scale": 11.681488037109375, + "x": -0.8691787719726562, + "y": -4.6824188232421875, + "z": -5.8407440185546875 + }, + "rotation": { + "w": 0.8637980222702026, + "x": -4.57763671875e-05, + "y": 0.5038070678710938, + "z": -1.52587890625e-05 + }, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{16ca16ab-eee3-41b1-b583-159245aa2010}", + "lastEdited": 1535751362197055, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 1.3116319179534912, + "green": 0.0772705078125, + "red": 2.705613613128662, + "x": -1.294386386871338, + "y": -9.4227294921875, + "z": -2.688368082046509 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 2.5324084758758545, + "y": -0.09593456983566284, + "z": 1.1384267807006836 + }, + "rotation": { + "w": -0.38777750730514526, + "x": -0.37337303161621094, + "y": -0.8409399390220642, + "z": 0.055222392082214355 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "clientOnly": false, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 2.1097896099090576, + "green": 0.04847164824604988, + "red": 1.458284616470337, + "x": 1.458284616470337, + "y": 0.04847164824604988, + "z": 2.1097896099090576 + }, + "id": "{482ae172-c411-41fb-9a41-4215eef25478}", + "lastEdited": 1535751754378548, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", + "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/portal2.fbx", + "name": "Back", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 1.5835940837860107, + "green": 0.2467041015625, + "red": 3.0345542430877686, + "x": -0.9654457569122314, + "y": -9.2532958984375, + "z": -2.4164059162139893 + }, + "queryAACube": { + "scale": 2.5651814937591553, + "x": 1.751963496208191, + "y": -1.0358866453170776, + "z": 0.3010033369064331 + }, + "rotation": { + "w": 0.9084458351135254, + "x": -1.52587890625e-05, + "y": 0.4179598093032837, + "z": -0.0001068115234375 + }, + "script": "file:///C:/Users/wayne/development/backEntityScript.js", + "scriptTimestamp": 1535751754379, + "shapeType": "static-mesh", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "clientOnly": false, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 9.030570983886719, + "green": 0.0719478651881218, + "red": 9.030570983886719, + "x": 9.030570983886719, + "y": 0.0719478651881218, + "z": 9.030570983886719 + }, + "id": "{33440bf8-f9ce-4d52-9b29-1b321e226982}", + "lastEdited": 1535751362197214, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/floor.fbx", + "name": "Floor", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 4.2324604988098145, + "green": 0.17547607421875, + "red": 4.802988529205322, + "x": 0.8029885292053223, + "y": -9.32452392578125, + "z": 0.23246049880981445 + }, + "queryAACube": { + "scale": 12.771358489990234, + "x": -1.582690715789795, + "y": -6.210203170776367, + "z": -2.1532187461853027 + }, + "rotation": { + "w": 0.8648051023483276, + "x": -1.52587890625e-05, + "y": 0.5020675659179688, + "z": -4.57763671875e-05 + }, + "shapeType": "simple-hull", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{7639140e-cd6f-4f86-97f7-00a19f50253e}", + "lastEdited": 1535751362198721, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 3.8216662406921387, + "green": 0, + "red": 1.2409718036651611, + "x": -2.759028196334839, + "y": -9.5, + "z": -0.17833375930786133 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 1.0677666664123535, + "y": -0.17320507764816284, + "z": 3.648461103439331 + }, + "rotation": { + "w": 0.6444342136383057, + "x": -0.08220034837722778, + "y": -0.6649118661880493, + "z": 0.3684900999069214 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "clientOnly": false, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 2.1097896099090576, + "green": 0.04847164824604988, + "red": 1.458284616470337, + "x": 1.458284616470337, + "y": 0.04847164824604988, + "z": 2.1097896099090576 + }, + "id": "{7755bf99-b026-490d-a682-edadd3f65701}", + "lastEdited": 1535751900322535, + "lastEditedBy": "{ace8f357-ad94-49e1-b4d0-39c4d5a936f3}", + "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/portal1.fbx", + "name": "Try Again", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 3.946338653564453, + "green": 0.2467041015625, + "red": 1.6013128757476807, + "x": -2.3986871242523193, + "y": -9.2532958984375, + "z": -0.053661346435546875 + }, + "queryAACube": { + "scale": 2.5651814937591553, + "x": 0.318722128868103, + "y": -1.0358866453170776, + "z": 2.663747787475586 + }, + "rotation": { + "w": 0.8220492601394653, + "x": -1.52587890625e-05, + "y": 0.5693598985671997, + "z": -0.0001068115234375 + }, + "script": "file:///C:/Users/wayne/development/tryAgainEntityScript.js", + "shapeType": "static-mesh", + "type": "Model", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{81207b9c-e3f2-4ee1-bb81-0e14f37e4687}", + "lastEdited": 1535751362197613, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 3.8216662406921387, + "green": 0.15618896484375, + "red": 1.2409718036651611, + "x": -2.759028196334839, + "y": -9.34381103515625, + "z": -0.17833375930786133 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 1.0677666664123535, + "y": -0.017016112804412842, + "z": 3.648461103439331 + }, + "rotation": { + "w": 0.6747081279754639, + "x": -0.06532388925552368, + "y": -0.6342412233352661, + "z": 0.37175559997558594 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false + }, + { + "alpha": 0, + "alphaFinish": 0, + "alphaStart": 0.25, + "clientOnly": false, + "colorFinish": { + "blue": 0, + "green": 0, + "red": 0, + "x": 0, + "y": 0, + "z": 0 + }, + "colorStart": { + "blue": 255, + "green": 255, + "red": 255, + "x": 255, + "y": 255, + "z": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 13.24000072479248, + "green": 13.24000072479248, + "red": 13.24000072479248, + "x": 13.24000072479248, + "y": 13.24000072479248, + "z": 13.24000072479248 + }, + "emitAcceleration": { + "blue": 0, + "green": 0.10000000149011612, + "red": 0, + "x": 0, + "y": 0.10000000149011612, + "z": 0 + }, + "emitDimensions": { + "blue": 1, + "green": 1, + "red": 1, + "x": 1, + "y": 1, + "z": 1 + }, + "emitOrientation": { + "w": 1, + "x": -1.52587890625e-05, + "y": -1.52587890625e-05, + "z": -1.52587890625e-05 + }, + "emitRate": 6, + "emitSpeed": 0, + "id": "{b8f11bf5-410e-4e35-b4c3-91c86c01351d}", + "lastEdited": 1535751362196710, "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", "lifespan": 10, "maxParticles": 10, @@ -219,558 +863,6 @@ "type": "ParticleEffect", "userData": "{\"grabbableKey\":{\"grabbable\":false}}" }, - { - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 0 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 3.580313205718994, - "z": 11.117486953735352 - }, - "id": "{12a26c55-c411-4c4c-a124-cac9c80f9532}", - "lastEdited": 1535583681180522, - "lastEditedBy": "{f5457c14-32ca-45c2-9dde-4f5b30b3be1b}", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 1.9063844680786133, - "green": 1.15850830078125, - "red": 0.16632509231567383, - "x": -3.833674907684326, - "y": -8.34149169921875, - "z": -2.0936155319213867 - }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -5.674418926239014, - "y": -4.6822357177734375, - "z": -3.934359550476074 - }, - "rotation": { - "w": 0.9666743278503418, - "x": -4.57763671875e-05, - "y": -0.2560006380081177, - "z": 1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{e8fd2c79-1303-49e4-8e4a-823272d6558c}", - "lastEdited": 1535583477862445, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 1.3116319179534912, - "green": 0.0772705078125, - "red": 2.705613613128662, - "x": -1.294386386871338, - "y": -9.4227294921875, - "z": -2.688368082046509 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 2.5324084758758545, - "y": -0.09593456983566284, - "z": 1.1384267807006836 - }, - "rotation": { - "w": -0.38777750730514526, - "x": -0.37337303161621094, - "y": -0.8409399390220642, - "z": 0.055222392082214355 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "clientOnly": false, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 9.030570983886719, - "green": 0.0719478651881218, - "red": 9.030570983886719, - "x": 9.030570983886719, - "y": 0.0719478651881218, - "z": 9.030570983886719 - }, - "id": "{85b4551d-c05d-4038-b188-30ad5db9c23a}", - "lastEdited": 1535583477861514, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/floor.fbx", - "name": "Floor", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 4.2324604988098145, - "green": 0.17547607421875, - "red": 4.802988529205322, - "x": 0.8029885292053223, - "y": -9.32452392578125, - "z": 0.23246049880981445 - }, - "queryAACube": { - "scale": 12.771358489990234, - "x": -1.582690715789795, - "y": -6.210203170776367, - "z": -2.1532187461853027 - }, - "rotation": { - "w": 0.8648051023483276, - "x": -1.52587890625e-05, - "y": 0.5020675659179688, - "z": -4.57763671875e-05 - }, - "shapeType": "simple-hull", - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "clientOnly": false, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.06014331430196762, - "green": 2.582186460494995, - "red": 2.582186698913574, - "x": 2.582186698913574, - "y": 2.582186460494995, - "z": 0.06014331430196762 - }, - "id": "{8e4d8047-c2e2-4b2c-bfa2-c732d419d59a}", - "lastEdited": 1535583477860645, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/oopsDialog.fbx", - "name": "Oops Dialog", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 1.45927095413208, - "green": 1.6763916015625, - "red": 0, - "x": -4, - "y": -7.8236083984375, - "z": -2.54072904586792 - }, - "queryAACube": { - "scale": 3.6522583961486816, - "x": -1.8261291980743408, - "y": -0.14973759651184082, - "z": -0.36685824394226074 - }, - "rotation": { - "w": 0.8684672117233276, - "x": -4.57763671875e-05, - "y": 0.4957197904586792, - "z": -7.62939453125e-05 - }, - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{4fc1436d-00e7-43ec-83e1-f70cff544885}", - "lastEdited": 1535583477862827, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.8216662406921387, - "green": 0.15618896484375, - "red": 1.2409718036651611, - "x": -2.759028196334839, - "y": -9.34381103515625, - "z": -0.17833375930786133 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 1.0677666664123535, - "y": -0.017016112804412842, - "z": 3.648461103439331 - }, - "rotation": { - "w": 0.6747081279754639, - "x": -0.06532388925552368, - "y": -0.6342412233352661, - "z": 0.37175559997558594 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 0 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 3.580313205718994, - "z": 11.117486953735352 - }, - "id": "{81a7c620-88ea-4056-b148-449d963c7eb5}", - "lastEdited": 1535583477860260, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 0, - "green": 1.1583251953125, - "red": 4.971565246582031, - "x": 0.9715652465820312, - "y": -8.3416748046875, - "z": -4 - }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -0.8691787719726562, - "y": -4.6824188232421875, - "z": -5.8407440185546875 - }, - "rotation": { - "w": 0.8637980222702026, - "x": -4.57763671875e-05, - "y": 0.5038070678710938, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "clientOnly": false, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 2.1097896099090576, - "green": 0.04847164824604988, - "red": 1.458284616470337, - "x": 1.458284616470337, - "y": 0.04847164824604988, - "z": 2.1097896099090576 - }, - "id": "{09436993-6042-49ff-bfec-0fd28f792251}", - "lastEdited": 1535583477863518, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/portal1.fbx", - "name": "Try Again", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.946338653564453, - "green": 0.2467041015625, - "red": 1.6013128757476807, - "x": -2.3986871242523193, - "y": -9.2532958984375, - "z": -0.053661346435546875 - }, - "queryAACube": { - "scale": 2.5651814937591553, - "x": 0.318722128868103, - "y": -1.0358866453170776, - "z": 2.663747787475586 - }, - "rotation": { - "w": 0.8220492601394653, - "x": -1.52587890625e-05, - "y": 0.5693598985671997, - "z": -0.0001068115234375 - }, - "script": "file:///C:/Users/wayne/development/tryAgainEntityScript.js", - "shapeType": "static-mesh", - "type": "Model", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{86188ae0-6b36-4753-a5c0-0ba31b8ca89a}", - "lastEdited": 1535583477861108, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 1.3116319179534912, - "green": 0, - "red": 2.705613613128662, - "x": -1.294386386871338, - "y": -9.5, - "z": -2.688368082046509 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 2.5324084758758545, - "y": -0.17320507764816284, - "z": 1.1384267807006836 - }, - "rotation": { - "w": 0.9127794504165649, - "x": 0.2575265169143677, - "y": 0.15553522109985352, - "z": 0.2761729955673218 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{ffa954a9-43e4-47b1-82c9-b921ed3414b0}", - "lastEdited": 1535583477861316, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.8216662406921387, - "green": 0.0772705078125, - "red": 1.2409718036651611, - "x": -2.759028196334839, - "y": -9.4227294921875, - "z": -0.17833375930786133 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 1.0677666664123535, - "y": -0.09593456983566284, - "z": 3.648461103439331 - }, - "rotation": { - "w": 0.926024317741394, - "x": 0.20308232307434082, - "y": -0.010269343852996826, - "z": 0.3179827928543091 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{e86df231-a55a-4ca7-ae68-d3271a543d10}", - "lastEdited": 1535583477860886, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 3.8216662406921387, - "green": 0, - "red": 1.2409718036651611, - "x": -2.759028196334839, - "y": -9.5, - "z": -0.17833375930786133 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 1.0677666664123535, - "y": -0.17320507764816284, - "z": 3.648461103439331 - }, - "rotation": { - "w": 0.6444342136383057, - "x": -0.08220034837722778, - "y": -0.6649118661880493, - "z": 0.3684900999069214 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "angularDamping": 0, - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 0.20000000298023224, - "green": 0.20000000298023224, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 0.20000000298023224, - "z": 0.20000000298023224 - }, - "id": "{252ffb06-db92-4732-9315-7ee293c24ab8}", - "lastEdited": 1535583477862267, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "name": "Particle Rotate", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 1.3116319179534912, - "green": 0.15618896484375, - "red": 2.705613613128662, - "x": -1.294386386871338, - "y": -9.34381103515625, - "z": -2.688368082046509 - }, - "queryAACube": { - "scale": 0.3464101552963257, - "x": 2.5324084758758545, - "y": -0.017016112804412842, - "z": 1.1384267807006836 - }, - "rotation": { - "w": 0.46953535079956055, - "x": -0.16719311475753784, - "y": -0.7982757091522217, - "z": 0.3380941152572632 - }, - "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", - "scriptTimestamp": 1532724769253, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 0 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 3.580313205718994, - "z": 11.117486953735352 - }, - "id": "{1c93807b-311d-48cd-af5e-b477d33b2811}", - "lastEdited": 1535583477860455, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 5.268576622009277, - "green": 1.1588134765625, - "red": 6.100250244140625, - "x": 2.100250244140625, - "y": -8.3411865234375, - "z": 1.2685766220092773 - }, - "queryAACube": { - "scale": 11.681488037109375, - "x": 0.2595062255859375, - "y": -4.6819305419921875, - "z": -0.5721673965454102 - }, - "rotation": { - "w": 0.9662165641784668, - "x": -4.57763671875e-05, - "y": -0.2576791048049927, - "z": 1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, { "alpha": 0, "alphaFinish": 0, @@ -797,7 +889,7 @@ "y": 204, "z": 255 }, - "created": "2018-08-29T22:57:33Z", + "created": "2018-08-31T21:35:56Z", "dimensions": { "blue": 2.5, "green": 2.5, @@ -831,8 +923,8 @@ "emitRate": 2, "emitSpeed": 0, "emitterShouldTrail": true, - "id": "{4cb534d1-5494-4aaa-aa28-ff5cee6e0b8f}", - "lastEdited": 1535583477862081, + "id": "{4e72df75-67d7-4ce2-bdea-e78adae8904a}", + "lastEdited": 1535751362199482, "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", "lifespan": 10, "maxParticles": 40, @@ -870,144 +962,6 @@ "type": "ParticleEffect", "userData": "{\"grabbableKey\":{\"grabbable\":false}}" }, - { - "clientOnly": false, - "color": { - "blue": 0, - "green": 0, - "red": 0 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 11.117486953735352, - "green": 3.580313205718994, - "red": 0.20000000298023224, - "x": 0.20000000298023224, - "y": 3.580313205718994, - "z": 11.117486953735352 - }, - "id": "{a58a8ffe-17ee-4154-b8bb-54e2f0ca9a9d}", - "lastEdited": 1535583477862953, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "position": { - "blue": 6.1806135177612305, - "green": 1.1588134765625, - "red": 1.4755167961120605, - "x": -2.5244832038879395, - "y": -8.3411865234375, - "z": 2.1806135177612305 - }, - "queryAACube": { - "scale": 11.681488037109375, - "x": -4.365227222442627, - "y": -4.6819305419921875, - "z": 0.33986949920654297 - }, - "rotation": { - "w": 0.8637980222702026, - "x": -4.57763671875e-05, - "y": 0.5038070678710938, - "z": -1.52587890625e-05 - }, - "shape": "Cube", - "type": "Box", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}", - "visible": false - }, - { - "alpha": 0, - "alphaFinish": 0, - "alphaStart": 0.25, - "clientOnly": false, - "colorFinish": { - "blue": 0, - "green": 0, - "red": 0, - "x": 0, - "y": 0, - "z": 0 - }, - "colorStart": { - "blue": 255, - "green": 255, - "red": 255, - "x": 255, - "y": 255, - "z": 255 - }, - "created": "2018-08-29T22:57:33Z", - "dimensions": { - "blue": 13.24000072479248, - "green": 13.24000072479248, - "red": 13.24000072479248, - "x": 13.24000072479248, - "y": 13.24000072479248, - "z": 13.24000072479248 - }, - "emitAcceleration": { - "blue": 0, - "green": 0.10000000149011612, - "red": 0, - "x": 0, - "y": 0.10000000149011612, - "z": 0 - }, - "emitDimensions": { - "blue": 1, - "green": 1, - "red": 1, - "x": 1, - "y": 1, - "z": 1 - }, - "emitOrientation": { - "w": 1, - "x": -1.52587890625e-05, - "y": -1.52587890625e-05, - "z": -1.52587890625e-05 - }, - "emitRate": 6, - "emitSpeed": 0, - "emitterShouldTrail": true, - "id": "{b6c56e83-f098-422d-a0e8-fd1497c62fbe}", - "lastEdited": 1535583477863251, - "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "lifespan": 10, - "maxParticles": 10, - "name": "Stars", - "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", - "particleRadius": 0.07000000029802322, - "polarFinish": 3.1415927410125732, - "position": { - "blue": 3.78922963142395, - "green": 0.5220947265625, - "red": 1.1928560733795166, - "x": -2.8071439266204834, - "y": -8.9779052734375, - "z": -0.2107703685760498 - }, - "queryAACube": { - "scale": 22.932353973388672, - "x": -10.273321151733398, - "y": -10.944082260131836, - "z": -7.676947593688965 - }, - "radiusFinish": 0, - "radiusStart": 0, - "rotation": { - "w": 0.996429443359375, - "x": -1.52587890625e-05, - "y": -0.08442819118499756, - "z": -4.57763671875e-05 - }, - "speedSpread": 0, - "spinFinish": null, - "spinStart": null, - "textures": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/star.png", - "type": "ParticleEffect", - "userData": "{\"grabbableKey\":{\"grabbable\":false}}" - }, { "alpha": 0, "alphaFinish": 0, @@ -1034,7 +988,7 @@ "y": 227, "z": 211 }, - "created": "2018-08-29T22:57:33Z", + "created": "2018-08-31T21:35:56Z", "dimensions": { "blue": 2.5, "green": 2.5, @@ -1067,8 +1021,8 @@ }, "emitRate": 2, "emitSpeed": 0, - "id": "{f87fab56-c8d8-4ff8-abf0-35a76dfccf2b}", - "lastEdited": 1535583477862685, + "id": "{3482eecd-0acc-4fb9-bd67-b160fa7c14d7}", + "lastEdited": 1535751362200185, "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", "lifespan": 10, "maxParticles": 40, @@ -1108,51 +1062,94 @@ }, { "clientOnly": false, - "created": "2018-08-29T22:57:33Z", + "created": "2018-08-31T21:35:56Z", "dimensions": { - "blue": 2.1097896099090576, - "green": 0.04847164824604988, - "red": 1.458284616470337, - "x": 1.458284616470337, - "y": 0.04847164824604988, - "z": 2.1097896099090576 + "blue": 0.06014331430196762, + "green": 2.582186460494995, + "red": 2.582186698913574, + "x": 2.582186698913574, + "y": 2.582186460494995, + "z": 0.06014331430196762 }, - "id": "{1af53cfc-0cce-467a-96e0-a937f2651ce2}", - "lastEdited": 1535583477863389, + "id": "{729e9f39-5750-42a4-97a8-0fc79b300a32}", + "lastEdited": 1535751362197365, "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", - "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/portal2.fbx", - "name": "Back", + "modelURL": "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/oopsDialog.fbx", + "name": "Oops Dialog", "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", "position": { - "blue": 1.5835940837860107, - "green": 0.2467041015625, - "red": 3.0345542430877686, - "x": -0.9654457569122314, - "y": -9.2532958984375, - "z": -2.4164059162139893 + "blue": 1.45927095413208, + "green": 1.6763916015625, + "red": 0, + "x": -4, + "y": -7.8236083984375, + "z": -2.54072904586792 }, "queryAACube": { - "scale": 2.5651814937591553, - "x": 1.751963496208191, - "y": -1.0358866453170776, - "z": 0.3010033369064331 + "scale": 3.6522583961486816, + "x": -1.8261291980743408, + "y": -0.14973759651184082, + "z": -0.36685824394226074 }, "rotation": { - "w": 0.9084458351135254, - "x": -1.52587890625e-05, - "y": 0.4179598093032837, - "z": -0.0001068115234375 + "w": 0.8684672117233276, + "x": -4.57763671875e-05, + "y": 0.4957197904586792, + "z": -7.62939453125e-05 }, - "script": "file:///C:/Users/wayne/development/tryAgainEntityScript.js", - "shapeType": "static-mesh", "type": "Model", "userData": "{\"grabbableKey\":{\"grabbable\":false}}" + }, + { + "angularDamping": 0, + "clientOnly": false, + "color": { + "blue": 0, + "green": 0, + "red": 255 + }, + "created": "2018-08-31T21:35:56Z", + "dimensions": { + "blue": 0.20000000298023224, + "green": 0.20000000298023224, + "red": 0.20000000298023224, + "x": 0.20000000298023224, + "y": 0.20000000298023224, + "z": 0.20000000298023224 + }, + "id": "{bd032130-bbd7-4c0b-9b98-ab9c9362be9b}", + "lastEdited": 1535751362198499, + "lastEditedBy": "{8cc0d68c-b354-4c5f-992d-56b89e8072c5}", + "name": "Particle Rotate", + "owningAvatarID": "{00000000-0000-0000-0000-000000000000}", + "position": { + "blue": 3.8216662406921387, + "green": 0.0772705078125, + "red": 1.2409718036651611, + "x": -2.759028196334839, + "y": -9.4227294921875, + "z": -0.17833375930786133 + }, + "queryAACube": { + "scale": 0.3464101552963257, + "x": 1.0677666664123535, + "y": -0.09593456983566284, + "z": 3.648461103439331 + }, + "rotation": { + "w": 0.926024317741394, + "x": 0.20308232307434082, + "y": -0.010269343852996826, + "z": 0.3179827928543091 + }, + "script": "http://hifi-content.s3.amazonaws.com/alexia/Models/Portal/rotate.js", + "scriptTimestamp": 1532724769253, + "shape": "Cube", + "type": "Box", + "userData": "{\"grabbableKey\":{\"grabbable\":false}}", + "visible": false } ], - "Paths": - { - "/": "/1.46,-9,0.7/0,0.487,0,0.86663" - }, - "Id": "{351e561a-ee5e-4e8b-87ab-d28677d3b374}", + "Id": "{99bc5288-05fd-4d80-a406-a44c948f7066}", "Version": 93 -} +} \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 86a1421127..e50473bf29 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1185,6 +1185,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo const DomainHandler& domainHandler = nodeList->getDomainHandler(); connect(&domainHandler, SIGNAL(domainURLChanged(QUrl)), SLOT(domainURLChanged(QUrl))); + connect(&domainHandler, SIGNAL(redirectToErrorDomainURL(QUrl)), SLOT(goToErrorDomainURL(QUrl))); connect(&domainHandler, &DomainHandler::domainURLChanged, [](QUrl domainURL){ setCrashAnnotation("domain", domainURL.toString().toStdString()); }); @@ -2251,6 +2252,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo connect(this, &QCoreApplication::aboutToQuit, this, &Application::addAssetToWorldMessageClose); connect(&domainHandler, &DomainHandler::domainURLChanged, this, &Application::addAssetToWorldMessageClose); + connect(&domainHandler, &DomainHandler::redirectToErrorDomainURL, this, &Application::addAssetToWorldMessageClose); updateSystemTabletMode(); @@ -2343,14 +2345,6 @@ void Application::domainConnectionRefused(const QString& reasonMessage, int reas } } -void Application::domainConnectionRedirect() { - auto addressManager = DependencyManager::get(); - - addressManager->handleLookupString(REDIRECT_HIFI_ADDRESS); - getMyAvatar()->setWorldVelocity(glm::vec3(0.0f)); -} - - QString Application::getUserAgent() { if (QThread::currentThread() != thread()) { QString userAgent; @@ -3481,7 +3475,7 @@ void Application::setIsServerlessMode(bool serverlessDomain) { } } -void Application::loadServerlessDomain(QUrl domainURL) { +void Application::loadServerlessDomain(QUrl domainURL, bool errorDomain) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "loadServerlessDomain", Q_ARG(QUrl, domainURL)); return; @@ -3515,8 +3509,11 @@ void Application::loadServerlessDomain(QUrl domainURL) { } std::map namedPaths = tmpTree->getNamedPaths(); - nodeList->getDomainHandler().connectedToServerless(namedPaths); - + if (errorDomain) { + nodeList->getDomainHandler().loadedErrorDomain(namedPaths); + } else { + nodeList->getDomainHandler().connectedToServerless(namedPaths); + } _fullSceneReceivedCounter++; } @@ -6381,6 +6378,7 @@ void Application::clearDomainAvatars() { void Application::domainURLChanged(QUrl domainURL) { // disable physics until we have enough information about our new location to not cause craziness. resetPhysicsReadyInformation(); + auto urlStr = domainURL.toString().toStdString(); setIsServerlessMode(domainURL.scheme() != URL_SCHEME_HIFI); if (isServerlessMode()) { loadServerlessDomain(domainURL); @@ -6388,6 +6386,17 @@ void Application::domainURLChanged(QUrl domainURL) { updateWindowTitle(); } +void Application::goToErrorDomainURL(QUrl errorDomainURL) { + // disable physics until we have enough information about our new location to not cause craziness. + resetPhysicsReadyInformation(); + auto urlStr = errorDomainURL.toString().toStdString(); + setIsServerlessMode(errorDomainURL.scheme() != URL_SCHEME_HIFI); + if (isServerlessMode()) { + loadServerlessDomain(errorDomainURL, true); + } + updateWindowTitle(); +} + void Application::resettingDomain() { _notifiedPacketVersionMismatchThisDomain = false; diff --git a/interface/src/Application.h b/interface/src/Application.h index e38b5a3919..7fe88e9b6a 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -426,7 +426,7 @@ public slots: void setPreferredCursor(const QString& cursor); void setIsServerlessMode(bool serverlessDomain); - void loadServerlessDomain(QUrl domainURL); + void loadServerlessDomain(QUrl domainURL, bool errorDomain = false); void updateVerboseLogging(); @@ -465,6 +465,7 @@ private slots: void setSessionUUID(const QUuid& sessionUUID) const; void domainURLChanged(QUrl domainURL); + void goToErrorDomainURL(QUrl errorDomainURL); void updateWindowTitle() const; void nodeAdded(SharedNodePointer node) const; void nodeActivated(SharedNodePointer node); @@ -474,7 +475,6 @@ private slots: void updateDisplayMode(); void setDisplayPlugin(DisplayPluginPointer newPlugin); void domainConnectionRefused(const QString& reasonMessage, int reason, const QString& extraInfo); - void domainConnectionRedirect(); void addAssetToWorldCheckModelSize(); diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index 01db8dfd79..62cd79a609 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -114,6 +114,9 @@ QUrl AddressManager::currentFacingPublicAddress() const { return shareableAddress; } +QUrl AddressManager::lastAddress() const { + return _lastVisitedURL; +} void AddressManager::loadSettings(const QString& lookupString) { #if defined(USE_GLES) && defined(Q_OS_WIN) @@ -151,6 +154,12 @@ void AddressManager::goForward() { } } +void AddressManager::goToLastAddress() { + // this should always return something as long as the URL isn't empty. + auto urlStr = _lastVisitedURL.toString().toStdString(); + handleUrl(_lastVisitedURL, LookupTrigger::AttemptedRefresh); +} + void AddressManager::storeCurrentAddress() { auto url = currentAddress(); @@ -250,9 +259,12 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { UserActivityLogger::getInstance().wentTo(trigger, URL_TYPE_USER, lookupUrl.toString()); + // save the last visited domain URL. + _lastVisitedURL = lookupUrl; + // in case we're failing to connect to where we thought this user was // store their username as previous lookup so we can refresh their location via API - _previousLookup = lookupUrl; + _previousAPILookup = lookupUrl; } else { // we're assuming this is either a network address or global place name // check if it is a network address first @@ -262,8 +274,11 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { UserActivityLogger::getInstance().wentTo(trigger, URL_TYPE_NETWORK_ADDRESS, lookupUrl.toString()); + // save the last visited domain URL. + _lastVisitedURL = lookupUrl; + // a network address lookup clears the previous lookup since we don't expect to re-attempt it - _previousLookup.clear(); + _previousAPILookup.clear(); // If the host changed then we have already saved to history if (hostChanged) { @@ -281,8 +296,11 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { } else if (handleDomainID(lookupUrl.host())){ UserActivityLogger::getInstance().wentTo(trigger, URL_TYPE_DOMAIN_ID, lookupUrl.toString()); + // save the last visited domain URL. + _lastVisitedURL = lookupUrl; + // store this domain ID as the previous lookup in case we're failing to connect and want to refresh API info - _previousLookup = lookupUrl; + _previousAPILookup = lookupUrl; // no place name - this is probably a domain ID // try to look up the domain ID on the metaverse API @@ -290,8 +308,11 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { } else { UserActivityLogger::getInstance().wentTo(trigger, URL_TYPE_PLACE, lookupUrl.toString()); + // save the last visited domain URL. + _lastVisitedURL = lookupUrl; + // store this place name as the previous lookup in case we fail to connect and want to refresh API info - _previousLookup = lookupUrl; + _previousAPILookup = lookupUrl; // wasn't an address - lookup the place name // we may have a path that defines a relative viewpoint - pass that through the lookup so we can go to it after @@ -305,7 +326,7 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { qCDebug(networking) << "Going to relative path" << lookupUrl.path(); // a path lookup clears the previous lookup since we don't expect to re-attempt it - _previousLookup.clear(); + _previousAPILookup.clear(); // if this is a relative path then handle it as a relative viewpoint handlePath(lookupUrl.path(), trigger, true); @@ -317,7 +338,10 @@ bool AddressManager::handleUrl(const QUrl& lookupUrl, LookupTrigger trigger) { // be loaded over http(s) // lookupUrl.scheme() == URL_SCHEME_HTTP || // lookupUrl.scheme() == URL_SCHEME_HTTPS || - _previousLookup.clear(); + // TODO once a file can return a connection refusal if there were to be some kind of load error, we'd + // need to store the previous domain tried in _lastVisitedURL. For now , do not store it. + + _previousAPILookup.clear(); _shareablePlaceName.clear(); if (lookupUrl.toString() != REDIRECT_HIFI_ADDRESS) { setDomainInfo(lookupUrl, trigger); @@ -386,7 +410,7 @@ void AddressManager::handleAPIResponse(QNetworkReply* requestReply) { QJsonObject dataObject = responseObject["data"].toObject(); // Lookup succeeded, don't keep re-trying it (especially on server restarts) - _previousLookup.clear(); + _previousAPILookup.clear(); if (!dataObject.isEmpty()) { goToAddressFromObject(dataObject.toVariantMap(), requestReply); @@ -552,7 +576,7 @@ void AddressManager::handleAPIError(QNetworkReply* errorReply) { if (errorReply->error() == QNetworkReply::ContentNotFoundError) { // if this is a lookup that has no result, don't keep re-trying it - _previousLookup.clear(); + _previousAPILookup.clear(); emit lookupResultIsNotFound(); } @@ -847,8 +871,8 @@ void AddressManager::goToUser(const QString& username, bool shouldMatchOrientati void AddressManager::refreshPreviousLookup() { // if we have a non-empty previous lookup, fire it again now (but don't re-store it in the history) - if (!_previousLookup.isEmpty()) { - handleUrl(_previousLookup, LookupTrigger::AttemptedRefresh); + if (!_previousAPILookup.isEmpty()) { + handleUrl(_previousAPILookup, LookupTrigger::AttemptedRefresh); } else { handleUrl(currentAddress(), LookupTrigger::AttemptedRefresh); } diff --git a/libraries/networking/src/AddressManager.h b/libraries/networking/src/AddressManager.h index 245517d8cd..fab2bdd6cb 100644 --- a/libraries/networking/src/AddressManager.h +++ b/libraries/networking/src/AddressManager.h @@ -145,6 +145,7 @@ public: UserInput, Back, Forward, + //Retry, StartupFromSettings, DomainPathResponse, Internal, @@ -165,6 +166,8 @@ public: QString currentPath(bool withOrientation = true) const; QString currentFacingPath() const; + QUrl lastAddress() const; + const QUuid& getRootPlaceID() const { return _rootPlaceID; } QString getPlaceName() const; QString getDomainID() const; @@ -246,6 +249,12 @@ public slots: */ void goToUser(const QString& username, bool shouldMatchOrientation = true); + /**jsdoc + * Go to the last address tried. This will be the last URL tried from location.handleLookupString + * @function location.goToLastAddress + */ + void goToLastAddress(); + /**jsdoc * Refresh the current address, e.g., after connecting to a domain in order to position the user to the desired location. * @function location.refreshPreviousLookup @@ -447,6 +456,7 @@ private: void addCurrentAddressToHistory(LookupTrigger trigger); QUrl _domainURL; + QUrl _lastVisitedURL; QUuid _rootPlaceID; PositionGetter _positionGetter; @@ -460,7 +470,7 @@ private: QString _newHostLookupPath; - QUrl _previousLookup; + QUrl _previousAPILookup; }; #endif // hifi_AddressManager_h diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index 827232129f..0febe1e155 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -99,6 +99,7 @@ void DomainHandler::softReset() { clearSettings(); + _isInErrorState = false; _connectionDenialsSinceKeypairRegen = 0; _checkInPacketsSinceLastReply = 0; @@ -129,6 +130,7 @@ void DomainHandler::hardReset() { } void DomainHandler::setErrorDomainURL(const QUrl& url) { + _errorDomainURL = url; return; } @@ -175,7 +177,8 @@ void DomainHandler::setURLAndID(QUrl domainURL, QUuid domainID) { domainPort = DEFAULT_DOMAIN_SERVER_PORT; } - if (_domainURL != domainURL || _sockAddr.getPort() != domainPort) { + // if it's in the error state, reset and try again. + if ((_domainURL != domainURL || _sockAddr.getPort() != domainPort) || _isInErrorState) { // re-set the domain info so that auth information is reloaded hardReset(); @@ -210,7 +213,8 @@ void DomainHandler::setURLAndID(QUrl domainURL, QUuid domainID) { void DomainHandler::setIceServerHostnameAndID(const QString& iceServerHostname, const QUuid& id) { - if (_iceServerSockAddr.getAddress().toString() != iceServerHostname || id != _pendingDomainID) { + // if it's in the error state, reset and try again. + if ((_iceServerSockAddr.getAddress().toString() != iceServerHostname || id != _pendingDomainID) || _isInErrorState) { // re-set the domain info to connect to new domain hardReset(); @@ -320,6 +324,17 @@ void DomainHandler::connectedToServerless(std::map namedPaths) setIsConnected(true); } +void DomainHandler::loadedErrorDomain(std::map namedPaths) { + auto lookup = namedPaths.find("/"); + QString viewpoint; + if (lookup != namedPaths.end()) { + viewpoint = lookup->second; + } else { + viewpoint = DOMAIN_SPAWNING_POINT; + } + DependencyManager::get()->goToViewpointForPath(viewpoint, QString()); +} + void DomainHandler::requestDomainSettings() { qCDebug(networking) << "Requesting settings from domain server"; @@ -461,7 +476,7 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer namedPaths); + void DomainHandler::loadedErrorDomain(std::map namedPaths); + QString getViewPointFromNamedPath(QString namedPath); bool hasSettings() const { return !_settingsObject.isEmpty(); } @@ -182,7 +184,7 @@ signals: void settingsReceiveFail(); void domainConnectionRefused(QString reasonMessage, int reason, const QString& extraInfo); - void redirectToErrorDomainURL(); + void redirectToErrorDomainURL(QUrl errorDomaunURL); void limitOfSilentDomainCheckInsReached();