mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 19:59:28 +02:00
Clean up tutorial scripts
This commit is contained in:
parent
a758942403
commit
1d699186a3
8 changed files with 136 additions and 633 deletions
|
@ -1,7 +1,7 @@
|
||||||
var DEBUG = false;
|
|
||||||
var VISIBLE_BY_DEFAULT = false;
|
var VISIBLE_BY_DEFAULT = false;
|
||||||
var PARENT_ID = "{00000000-0000-0000-0000-000000000001}";
|
var PARENT_ID = "{00000000-0000-0000-0000-000000000001}";
|
||||||
|
|
||||||
|
var DEBUG = false;
|
||||||
function debug() {
|
function debug() {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
print.apply(self, arguments);
|
print.apply(self, arguments);
|
||||||
|
|
|
@ -1,188 +1,3 @@
|
||||||
Step1EntityData = [
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"color": {
|
|
||||||
"blue": 255,
|
|
||||||
"green": 0,
|
|
||||||
"red": 255
|
|
||||||
},
|
|
||||||
"created": "2016-08-29T22:57:55Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.018359377980232239,
|
|
||||||
"y": 0.018359377980232239,
|
|
||||||
"z": 0.018359377980232239
|
|
||||||
},
|
|
||||||
"id": "{3bb83d9c-11db-4bc1-a61b-36921370cb40}",
|
|
||||||
"name": "tutorial/box_spawn",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"collisionless": 1,
|
|
||||||
"position": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0.8,
|
|
||||||
"z": 0.7790381908416748
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.031799376010894775,
|
|
||||||
"x": -0.015899688005447388,
|
|
||||||
"y": 0.79706859588623047,
|
|
||||||
"z": 0.7631385326385498
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"shape": "Cube",
|
|
||||||
"type": "Box",
|
|
||||||
"userData": "{\"tag\":\"step2\"}",
|
|
||||||
"visible": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"color": {
|
|
||||||
"blue": 181,
|
|
||||||
"green": 181,
|
|
||||||
"red": 181
|
|
||||||
},
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.37322089076042175,
|
|
||||||
"y": 0.8015166997909546,
|
|
||||||
"z": 0.37322089076042175
|
|
||||||
},
|
|
||||||
"name": "tutorial/pillar2",
|
|
||||||
//"shapeType": "simple-hull",
|
|
||||||
"position": {
|
|
||||||
"x": 0.019208565354347229,
|
|
||||||
"y": -0.1,
|
|
||||||
"z": 0.75276124477386475
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"shape": "Cube",
|
|
||||||
"type": "Box",
|
|
||||||
"userData": "{\"tag\":\"step2\"}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"compoundShapeURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Trash-Can-4.obj",
|
|
||||||
"created": "2016-08-29T22:57:55Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.57461458444595337,
|
|
||||||
"y": 0.35781359672546387,
|
|
||||||
"z": 0.57461458444595337
|
|
||||||
},
|
|
||||||
"gravity": {
|
|
||||||
"x": 0,
|
|
||||||
"y": -5,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"id": "{2a8a9cb8-4501-4089-8fb8-6b1b5100db10}",
|
|
||||||
"modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Trach-Can-3.fbx",
|
|
||||||
"name": "tutorial/basket",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 0.022034257650375366,
|
|
||||||
"y": 0.47968916893005371,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.88791579008102417,
|
|
||||||
"x": -0.42192363739013672,
|
|
||||||
"y": 0.23573127388954163,
|
|
||||||
"z": -0.44395789504051208
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": -1.52587890625e-05,
|
|
||||||
"y": -1.52587890625e-05,
|
|
||||||
"z": -1.52587890625e-05
|
|
||||||
},
|
|
||||||
"shapeType": "compound",
|
|
||||||
"type": "Model",
|
|
||||||
"userData": "{\"hifiHomeKey\":{\"reset\":true},\"tag\":\"step2\"}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"collisionless": 1,
|
|
||||||
"color": {
|
|
||||||
"blue": 255,
|
|
||||||
"green": 0,
|
|
||||||
"red": 255
|
|
||||||
},
|
|
||||||
"created": "2016-08-29T22:57:55Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.43770244717597961,
|
|
||||||
"y": 0.33723857998847961,
|
|
||||||
"z": 0.43770244717597961
|
|
||||||
},
|
|
||||||
"id": "{436aec80-15e8-4fc3-bd74-f173b731a922}",
|
|
||||||
"ignoreForCollisions": 1,
|
|
||||||
"name": "tutorial/basket_collider",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 0.02785143256187439,
|
|
||||||
"y": 0.50166182518005371,
|
|
||||||
"z": 0.0017895996570587158
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.70490902662277222,
|
|
||||||
"x": -0.32460308074951172,
|
|
||||||
"y": 0.3492073118686676,
|
|
||||||
"z": -0.35066491365432739
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"type": "Sphere",
|
|
||||||
"userData": "{\"tag\":\"step2\"}",
|
|
||||||
"visible": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"color": {
|
|
||||||
"blue": 181,
|
|
||||||
"green": 181,
|
|
||||||
"red": 181
|
|
||||||
},
|
|
||||||
"created": "2016-08-29T22:57:55Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.37322089076042175,
|
|
||||||
"y": 0.8015000104904175,
|
|
||||||
"z": 0.37322089076042175
|
|
||||||
},
|
|
||||||
"id": "{221be6c2-e0d6-4a7c-b9d4-a77e6b7d1c9a}",
|
|
||||||
"name": "tutorial/pillar1",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 0.019208565354347229,
|
|
||||||
"y": -0.1,
|
|
||||||
"z": 0.025902509689331055
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 1.1320732831954956,
|
|
||||||
"x": -0.54682809114456177,
|
|
||||||
"y": -0.5660366415977478,
|
|
||||||
"z": -0.54013413190841675
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"shape": "Cube",
|
|
||||||
"type": "Box",
|
|
||||||
"userData": "{\"tag\":\"step2\"}"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
birdFirework1 = {
|
birdFirework1 = {
|
||||||
"clientOnly": 0,
|
"clientOnly": 0,
|
||||||
"collisionsWillMove": 1,
|
"collisionsWillMove": 1,
|
||||||
|
@ -320,233 +135,3 @@ Step1BlockData = {
|
||||||
"type": "Box",
|
"type": "Box",
|
||||||
"userData": JSON.stringify({ hifiHomeKey: { reset: true } }),
|
"userData": JSON.stringify({ hifiHomeKey: { reset: true } }),
|
||||||
};
|
};
|
||||||
|
|
||||||
StepGunData = [
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"created": "2016-08-23T22:18:46Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 2.4929797649383545,
|
|
||||||
"y": 0.94968640804290771,
|
|
||||||
"z": 1.0870213508605957
|
|
||||||
},
|
|
||||||
"id": "{de28363f-d1f8-4001-8e6b-1b5876699f49}",
|
|
||||||
"modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/table2_re-oriented.fbx",
|
|
||||||
"name": "tutorial/table",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 0.17360222339630127,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 2.8807060718536377,
|
|
||||||
"x": -1.2667508125305176,
|
|
||||||
"y": -1.4403530359268188,
|
|
||||||
"z": -1.4403530359268188
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 0.70705735683441162,
|
|
||||||
"x": -1.52587890625e-05,
|
|
||||||
"y": -0.70717936754226685,
|
|
||||||
"z": -1.52587890625e-05
|
|
||||||
},
|
|
||||||
"shapeType": "static-mesh",
|
|
||||||
"type": "Model",
|
|
||||||
"userData": "{\"tag\":\"step4\"}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"compoundShapeURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Trash-Can-4.obj",
|
|
||||||
"created": "2016-08-23T22:18:46Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.57461458444595337,
|
|
||||||
"y": 0.35781359672546387,
|
|
||||||
"z": 0.57461458444595337
|
|
||||||
},
|
|
||||||
"gravity": {
|
|
||||||
"x": 0,
|
|
||||||
"y": -5,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"id": "{51e7cf16-e624-44a8-b835-47c35c6ad5f0}",
|
|
||||||
"modelURL": "http://hifi-content.s3.amazonaws.com/alan/dev/Trach-Can-3.fbx",
|
|
||||||
"name": "tutorial/basket",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 3.8134055137634277,
|
|
||||||
"y": 0.6480712890625,
|
|
||||||
"z": 0.015498995780944824
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.88791579008102417,
|
|
||||||
"x": 3.3694477081298828,
|
|
||||||
"y": 0.20411339402198792,
|
|
||||||
"z": -0.42845889925956726
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": -1.52587890625e-05,
|
|
||||||
"y": -1.52587890625e-05,
|
|
||||||
"z": -1.52587890625e-05
|
|
||||||
},
|
|
||||||
"shapeType": "compound",
|
|
||||||
"type": "Model",
|
|
||||||
"userData": "{\"hifiHomeKey\":{\"reset\":true},\"tag\":\"step4\"}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"collisionless": 1,
|
|
||||||
"color": {
|
|
||||||
"blue": 0,
|
|
||||||
"green": 0,
|
|
||||||
"red": 255
|
|
||||||
},
|
|
||||||
"created": "2016-08-23T22:20:57Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.0649842768907547,
|
|
||||||
"y": 0.0649842768907547,
|
|
||||||
"z": 0.0649842768907547
|
|
||||||
},
|
|
||||||
"id": "{264943d2-600f-4d22-ad30-ccd57f7c4424}",
|
|
||||||
"ignoreForCollisions": 1,
|
|
||||||
"name": "tutorial/gun_spawn",
|
|
||||||
visible: false,
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 0,
|
|
||||||
"y": 0.62629544734954834,
|
|
||||||
"z": 0.028602004051208496
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.11255607008934021,
|
|
||||||
"x": -0.056278035044670105,
|
|
||||||
"y": 0.57001739740371704,
|
|
||||||
"z": -0.027676030993461609
|
|
||||||
},
|
|
||||||
"shape": "Cube",
|
|
||||||
"type": "Box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clientOnly": 0,
|
|
||||||
"collisionless": 1,
|
|
||||||
"color": {
|
|
||||||
"blue": 255,
|
|
||||||
"green": 0,
|
|
||||||
"red": 255
|
|
||||||
},
|
|
||||||
"created": "2016-08-23T22:18:46Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.43770244717597961,
|
|
||||||
"y": 0.33723857998847961,
|
|
||||||
"z": 0.43770244717597961
|
|
||||||
},
|
|
||||||
"id": "{a8944645-3234-484f-aed1-1a63d76aa51c}",
|
|
||||||
"ignoreForCollisions": 1,
|
|
||||||
"name": "tutorial/basket_collider",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"position": {
|
|
||||||
"x": 3.8192229270935059,
|
|
||||||
"y": 0.6700439453125,
|
|
||||||
"z": 0.017288565635681152
|
|
||||||
},
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.70490902662277222,
|
|
||||||
"x": 3.4667685031890869,
|
|
||||||
"y": 0.31758943200111389,
|
|
||||||
"z": -0.33516594767570496
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 1,
|
|
||||||
"x": 0,
|
|
||||||
"y": 0,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"type": "Sphere",
|
|
||||||
"userData": "{\"tag\":\"step4\"}",
|
|
||||||
"visible": 0
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
GunData = {
|
|
||||||
"clientOnly": 0,
|
|
||||||
"collisionsWillMove": 1,
|
|
||||||
"compoundShapeURL": "http://hifi-production.s3.amazonaws.com/tutorials/pingPongGun/Pingpong-Gun-New.obj",
|
|
||||||
"created": "2016-08-23T22:12:13Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.125,
|
|
||||||
"y": 0.38749998807907104,
|
|
||||||
"z": 0.99309998750686646
|
|
||||||
},
|
|
||||||
"dynamic": 1,
|
|
||||||
"gravity": {
|
|
||||||
"x": 0,
|
|
||||||
"y": -5,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
|
|
||||||
"id": "{8d3fa3f2-8b59-4f47-8bb4-c03574239c9f}",
|
|
||||||
"modelURL": "http://hifi-production.s3.amazonaws.com/tutorials/pingPongGun/Pingpong-Gun-New.fbx",
|
|
||||||
"name": "tutorial/gun",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 3.219977855682373,
|
|
||||||
"x": -2.5046753883361816,
|
|
||||||
"y": -1.8901374340057373,
|
|
||||||
"z": -0.68512386083602905
|
|
||||||
},
|
|
||||||
velocity: {
|
|
||||||
x: 0,
|
|
||||||
y: -1,
|
|
||||||
z: 0
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 0.69534718990325928,
|
|
||||||
"x": -0.13302478194236755,
|
|
||||||
"y": -0.12684555351734161,
|
|
||||||
"z": 0.69477111101150513
|
|
||||||
},
|
|
||||||
"script": "http://hifi-production.s3.amazonaws.com/tutorials/entity_scripts/pingPongGun.js",
|
|
||||||
"shapeType": "compound",
|
|
||||||
"type": "Model",
|
|
||||||
"userData": "{\"grabbableKey\":{\"invertSolidWhileHeld\":true},\"wearable\":{\"joints\":{\"RightHand\":[{\"x\":0.1177130937576294,\"y\":0.12922893464565277,\"z\":0.08307232707738876},{\"x\":0.4934672713279724,\"y\":0.3605862259864807,\"z\":0.6394805908203125,\"w\":-0.4664038419723511}],\"LeftHand\":[{\"x\":0.09151676297187805,\"y\":0.13639454543590546,\"z\":0.09354984760284424},{\"x\":-0.19628101587295532,\"y\":0.6418180465698242,\"z\":0.2830369472503662,\"w\":0.6851521730422974}]}}}"
|
|
||||||
};
|
|
||||||
|
|
||||||
HandsAboveHeadData = [
|
|
||||||
{
|
|
||||||
name: "tutorial/sign",
|
|
||||||
"backgroundColor": {
|
|
||||||
"blue": 187,
|
|
||||||
"green": 242,
|
|
||||||
"red": 198
|
|
||||||
},
|
|
||||||
"clientOnly": 0,
|
|
||||||
"created": "2016-08-23T22:42:48Z",
|
|
||||||
"dimensions": {
|
|
||||||
"x": 0.58140444755554199,
|
|
||||||
"y": 0.38676983118057251,
|
|
||||||
"z": 0.0099999997764825821
|
|
||||||
},
|
|
||||||
"id": "{c0ceabcf-501e-41fe-99e9-aca47a44122f}",
|
|
||||||
"owningAvatarID": "{00000000-0000-0000-0000-000000000000}",
|
|
||||||
"queryAACube": {
|
|
||||||
"scale": 0.69837099313735962,
|
|
||||||
"x": -0.34918549656867981,
|
|
||||||
"y": -0.34918549656867981,
|
|
||||||
"z": -0.34918549656867981
|
|
||||||
},
|
|
||||||
"rotation": {
|
|
||||||
"w": 0.70710676908493042,
|
|
||||||
"x": 0,
|
|
||||||
"y": -0.70710670948028564,
|
|
||||||
"z": 0
|
|
||||||
},
|
|
||||||
"text": "Put your hands above your head.",
|
|
||||||
"textColor": {
|
|
||||||
"blue": 0,
|
|
||||||
"green": 0,
|
|
||||||
"red": 0
|
|
||||||
},
|
|
||||||
"type": "Text"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
|
@ -1,36 +1,21 @@
|
||||||
|
//
|
||||||
|
// fuse.js
|
||||||
|
//
|
||||||
|
// Created by Ryan Huffman on 9/1/16.
|
||||||
|
// Copyright 2016 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var findEntity = function(properties, searchRadius, filterFn) {
|
Script.include('utils.js');
|
||||||
var entities = findEntities(properties, searchRadius, filterFn);
|
|
||||||
return entities.length > 0 ? entities[0] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return all entities with properties `properties` within radius `searchRadius`
|
var DEBUG = false;
|
||||||
var findEntities = function(properties, searchRadius, filterFn) {
|
function debug() {
|
||||||
if (!filterFn) {
|
if (DEBUG) {
|
||||||
filterFn = function(properties, key, value) {
|
print.apply(self, arguments);
|
||||||
return value == properties[key];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
searchRadius = searchRadius ? searchRadius : 100000;
|
|
||||||
var entities = Entities.findEntities({ x: 0, y: 0, z: 0 }, searchRadius);
|
|
||||||
var matchedEntities = [];
|
|
||||||
var keys = Object.keys(properties);
|
|
||||||
for (var i = 0; i < entities.length; ++i) {
|
|
||||||
var match = true;
|
|
||||||
var candidateProperties = Entities.getEntityProperties(entities[i], keys);
|
|
||||||
for (var key in properties) {
|
|
||||||
if (!filterFn(properties, key, candidateProperties[key])) {
|
|
||||||
// This isn't a match, move to next entity
|
|
||||||
match = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (match) {
|
|
||||||
matchedEntities.push(entities[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return matchedEntities;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var fuseSound = SoundCache.getSound("https://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/fuse.wav");
|
var fuseSound = SoundCache.getSound("https://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/fuse.wav");
|
||||||
|
@ -48,9 +33,8 @@
|
||||||
};
|
};
|
||||||
Fuse.prototype = {
|
Fuse.prototype = {
|
||||||
light: function() {
|
light: function() {
|
||||||
print("LIT", this.entityID);
|
debug("LIT", this.entityID);
|
||||||
var anim = Entities.getEntityProperties(this.entityID, ['animation']).animation;
|
var anim = Entities.getEntityProperties(this.entityID, ['animation']).animation;
|
||||||
print("anim: ", anim.currentFrame, Object.keys(anim));
|
|
||||||
|
|
||||||
if (anim.currentFrame < 140) {
|
if (anim.currentFrame < 140) {
|
||||||
return;
|
return;
|
||||||
|
@ -86,8 +70,8 @@
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
Script.setTimeout(function() {
|
Script.setTimeout(function() {
|
||||||
print("BLOW UP");
|
debug("BLOW UP");
|
||||||
var spinnerID = findEntity({ name: "tutorial/equip/spinner" }, 20);
|
var spinnerID = Utils.findEntity({ name: "tutorial/equip/spinner" }, 20);
|
||||||
Entities.callEntityMethod(spinnerID, "onLit");
|
Entities.callEntityMethod(spinnerID, "onLit");
|
||||||
injector.stop();
|
injector.stop();
|
||||||
|
|
||||||
|
|
|
@ -1,55 +1,12 @@
|
||||||
(function() {
|
(function() {
|
||||||
var findEntity = function(properties, searchRadius, filterFn) {
|
Script.include('utils.js');
|
||||||
var entities = findEntities(properties, searchRadius, filterFn);
|
|
||||||
return entities.length > 0 ? entities[0] : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return all entities with properties `properties` within radius `searchRadius`
|
|
||||||
var findEntities = function(properties, searchRadius, filterFn) {
|
|
||||||
if (!filterFn) {
|
|
||||||
filterFn = function(properties, key, value) {
|
|
||||||
return value == properties[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
searchRadius = searchRadius ? searchRadius : 100000;
|
|
||||||
var entities = Entities.findEntities({ x: 0, y: 0, z: 0 }, searchRadius);
|
|
||||||
var matchedEntities = [];
|
|
||||||
var keys = Object.keys(properties);
|
|
||||||
for (var i = 0; i < entities.length; ++i) {
|
|
||||||
var match = true;
|
|
||||||
var candidateProperties = Entities.getEntityProperties(entities[i], keys);
|
|
||||||
for (var key in properties) {
|
|
||||||
if (!filterFn(properties, key, candidateProperties[key])) {
|
|
||||||
// This isn't a match, move to next entity
|
|
||||||
match = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (match) {
|
|
||||||
matchedEntities.push(entities[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return matchedEntities;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getChildProperties(entityID, propertyNames) {
|
|
||||||
var childEntityIDs = Entities.getChildrenIDs(entityID);
|
|
||||||
var results = {}
|
|
||||||
for (var i = 0; i < childEntityIDs.length; ++i) {
|
|
||||||
var childEntityID = childEntityIDs[i];
|
|
||||||
var properties = Entities.getEntityProperties(childEntityID, propertyNames);
|
|
||||||
results[childEntityID] = properties;
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
var Fuse = function() {
|
var Fuse = function() {
|
||||||
};
|
};
|
||||||
Fuse.prototype = {
|
Fuse.prototype = {
|
||||||
onLit: function() {
|
onLit: function() {
|
||||||
print("LIT", this.entityID);
|
print("LIT", this.entityID);
|
||||||
var fuseID = findEntity({ name: "tutorial/equip/fuse" }, 20);
|
var fuseID = Utils.findEntity({ name: "tutorial/equip/fuse" }, 20);
|
||||||
Entities.callEntityMethod(fuseID, "light");
|
Entities.callEntityMethod(fuseID, "light");
|
||||||
},
|
},
|
||||||
preload: function(entityID) {
|
preload: function(entityID) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ if (!Function.prototype.bind) {
|
||||||
|
|
||||||
if (this.prototype) {
|
if (this.prototype) {
|
||||||
// Function.prototype doesn't have a prototype property
|
// Function.prototype doesn't have a prototype property
|
||||||
fNOP.prototype = this.prototype;
|
fNOP.prototype = this.prototype;
|
||||||
}
|
}
|
||||||
fBound.prototype = new fNOP();
|
fBound.prototype = new fNOP();
|
||||||
|
|
||||||
|
@ -43,8 +43,7 @@ function getOwnershipTokenID(parentEntityID) {
|
||||||
var childID = childEntityIDs[i];
|
var childID = childEntityIDs[i];
|
||||||
var properties = Entities.getEntityProperties(childID, ['name', 'userData', 'lifetime', 'age']);
|
var properties = Entities.getEntityProperties(childID, ['name', 'userData', 'lifetime', 'age']);
|
||||||
var childName = properties.name;
|
var childName = properties.name;
|
||||||
//debug("Owner lifetime: ", properties.lifetime, properties.age);
|
if (childName.indexOf(TOKEN_NAME_PREFIX) == 0) {
|
||||||
if (properties.age > 0.5 && childName.indexOf(TOKEN_NAME_PREFIX) == 0) {
|
|
||||||
if (ownerID === null || childName < ownerName) {
|
if (ownerID === null || childName < ownerName) {
|
||||||
ownerID = childID;
|
ownerID = childID;
|
||||||
ownerName = childName;
|
ownerName = childName;
|
||||||
|
@ -89,7 +88,6 @@ OwnershipToken = function(name, parentEntityID, options) {
|
||||||
this.checkEverySeconds = getOption(options, 'checkEverySeconds', 1000);
|
this.checkEverySeconds = getOption(options, 'checkEverySeconds', 1000);
|
||||||
this.updateTokenLifetimeEvery = getOption(options, 'updateTokenLifetimeEvery', 2000);
|
this.updateTokenLifetimeEvery = getOption(options, 'updateTokenLifetimeEvery', 2000);
|
||||||
|
|
||||||
//this.onRequestingOwnership = getOption(options, 'onRequestingOwnership', function() { });
|
|
||||||
this.onGainedOwnership = getOption(options, 'onGainedOwnership', function() { });
|
this.onGainedOwnership = getOption(options, 'onGainedOwnership', function() { });
|
||||||
this.onLostOwnership = getOption(options, 'onLostOwnership', function() { });
|
this.onLostOwnership = getOption(options, 'onLostOwnership', function() { });
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,21 @@
|
||||||
|
//
|
||||||
|
// spinner.js
|
||||||
|
//
|
||||||
|
// Created by Ryan Huffman on 9/1/16.
|
||||||
|
// Copyright 2016 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
var DEBUG = false;
|
||||||
|
function debug() {
|
||||||
|
if (DEBUG) {
|
||||||
|
print.apply(self, arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var spinnerSound = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/Pinwheel.L.wav");
|
var spinnerSound = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/Pinwheel.L.wav");
|
||||||
var Spinner = function() {
|
var Spinner = function() {
|
||||||
};
|
};
|
||||||
|
@ -14,7 +31,7 @@
|
||||||
}
|
}
|
||||||
Spinner.prototype = {
|
Spinner.prototype = {
|
||||||
onLit: function() {
|
onLit: function() {
|
||||||
print("LIT SPINNER", this.entityID);
|
debug("LIT SPINNER", this.entityID);
|
||||||
Entities.editEntity(this.entityID, {
|
Entities.editEntity(this.entityID, {
|
||||||
"angularDamping": 0.1,
|
"angularDamping": 0.1,
|
||||||
"angularVelocity": {
|
"angularVelocity": {
|
||||||
|
@ -26,10 +43,9 @@
|
||||||
var injector = Audio.playSound(spinnerSound, {
|
var injector = Audio.playSound(spinnerSound, {
|
||||||
position: Entities.getEntityProperties(this.entityID, 'position').position,
|
position: Entities.getEntityProperties(this.entityID, 'position').position,
|
||||||
volume: 1.0,
|
volume: 1.0,
|
||||||
loop: false
|
loop: false
|
||||||
});
|
});
|
||||||
|
|
||||||
print("HERE2");
|
|
||||||
var childrenProps = getChildProperties(this.entityID, ['type']);
|
var childrenProps = getChildProperties(this.entityID, ['type']);
|
||||||
for (var childEntityID in childrenProps) {
|
for (var childEntityID in childrenProps) {
|
||||||
var props = childrenProps[childEntityID];
|
var props = childrenProps[childEntityID];
|
||||||
|
@ -43,10 +59,9 @@
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
Script.setTimeout(function() {
|
Script.setTimeout(function() {
|
||||||
print("BLOW UP");
|
debug("BLOW UP");
|
||||||
injector.stop();
|
injector.stop();
|
||||||
|
|
||||||
print("HERE");
|
|
||||||
var childrenProps = getChildProperties(self.entityID, ['type']);
|
var childrenProps = getChildProperties(self.entityID, ['type']);
|
||||||
for (var childEntityID in childrenProps) {
|
for (var childEntityID in childrenProps) {
|
||||||
var props = childrenProps[childEntityID];
|
var props = childrenProps[childEntityID];
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
//
|
||||||
|
// touchControllerConfiguration.js
|
||||||
|
//
|
||||||
|
// Created by Ryan Huffman on 9/1/16.
|
||||||
|
// Copyright 2016 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
var CONTROLLER_LENGTH_OFFSET = 0.0762;
|
var CONTROLLER_LENGTH_OFFSET = 0.0762;
|
||||||
var leftBasePosition = {
|
var leftBasePosition = {
|
||||||
x: CONTROLLER_LENGTH_OFFSET / 2,
|
x: CONTROLLER_LENGTH_OFFSET / 2,
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
//
|
||||||
|
// tutorial.js
|
||||||
|
//
|
||||||
|
// Created by Ryan Huffman on 9/1/16.
|
||||||
|
// Copyright 2016 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
Script.include("entityData.js");
|
||||||
|
Script.include("viveHandsv2.js");
|
||||||
|
Script.include("lighter/createButaneLighter.js");
|
||||||
|
Script.include('ownershipToken.js');
|
||||||
|
|
||||||
if (!Function.prototype.bind) {
|
if (!Function.prototype.bind) {
|
||||||
Function.prototype.bind = function(oThis) {
|
Function.prototype.bind = function(oThis) {
|
||||||
if (typeof this !== 'function') {
|
if (typeof this !== 'function') {
|
||||||
|
@ -26,15 +41,31 @@ if (!Function.prototype.bind) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Script.include("entityData.js");
|
var DEBUG = false;
|
||||||
|
function debug() {
|
||||||
|
if (DEBUG) {
|
||||||
|
print.apply(self, arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Script.include("viveHandsv2.js");
|
var INFO = true;
|
||||||
Script.include("lighter/createButaneLighter.js");
|
function info() {
|
||||||
Script.include('ownershipToken.js');
|
if (INFO) {
|
||||||
|
print.apply(self, arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var BASKET_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Trach-Can-3.fbx";
|
var BASKET_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Trach-Can-3.fbx";
|
||||||
var BASKET_COLLIDER_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Trash-Can-4.obj";
|
var BASKET_COLLIDER_URL = "http://hifi-content.s3.amazonaws.com/alan/dev/Trash-Can-4.obj";
|
||||||
//var successSound = SoundCache.getSound(Script.resolvePath("success48.wav"));
|
|
||||||
|
var NEAR_BOX_SPAWN_NAME = "tutorial/nearGrab/box_spawn";
|
||||||
|
var FAR_BOX_SPAWN_NAME = "tutorial/farGrab/box_spawn";
|
||||||
|
var NEAR_BASKET_COLLIDER_NAME = "tutorial/nearGrab/basket_collider";
|
||||||
|
var FAR_BASKET_COLLIDER_NAME = "tutorial/farGrab/basket_collider";
|
||||||
|
var GUN_BASKET_COLLIDER_NAME = "tutorial/equip/basket_collider";
|
||||||
|
var GUN_SPAWN_NAME = "tutorial/gun_spawn";
|
||||||
|
var TELEPORT_PAD_NAME = "tutorial/teleport/pad"
|
||||||
|
|
||||||
var successSound = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/good_one.L.wav");
|
var successSound = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/DomainContent/Tutorial/Sounds/good_one.L.wav");
|
||||||
|
|
||||||
function beginsWithFilter(value, key) {
|
function beginsWithFilter(value, key) {
|
||||||
|
@ -74,8 +105,24 @@ findEntities = function(properties, searchRadius, filterFn) {
|
||||||
|
|
||||||
return matchedEntities;
|
return matchedEntities;
|
||||||
}
|
}
|
||||||
// On start tutorial...
|
|
||||||
|
|
||||||
|
function setControllerVisible(name, visible) {
|
||||||
|
return;
|
||||||
|
Messages.sendLocalMessage('Controller-Display', JSON.stringify({
|
||||||
|
name: name,
|
||||||
|
visible: visible,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
function setControllerPartsVisible(parts) {
|
||||||
|
Messages.sendLocalMessage('Controller-Display-Parts', JSON.stringify(parts));
|
||||||
|
}
|
||||||
|
|
||||||
|
function setControllerPartLayer(part, layer) {
|
||||||
|
data = {};
|
||||||
|
data[part] = layer;
|
||||||
|
Messages.sendLocalMessage('Controller-Set-Part-Layer', JSON.stringify(data));
|
||||||
|
}
|
||||||
|
|
||||||
function triggerHapticPulse() {
|
function triggerHapticPulse() {
|
||||||
function scheduleHaptics(delay, strength, duration) {
|
function scheduleHaptics(delay, strength, duration) {
|
||||||
|
@ -91,18 +138,8 @@ function triggerHapticPulse() {
|
||||||
scheduleHaptics(1200, 0.1, 100);
|
scheduleHaptics(1200, 0.1, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load assets
|
|
||||||
var NEAR_BOX_SPAWN_NAME = "tutorial/nearGrab/box_spawn";
|
|
||||||
var FAR_BOX_SPAWN_NAME = "tutorial/farGrab/box_spawn";
|
|
||||||
var NEAR_BASKET_COLLIDER_NAME = "tutorial/nearGrab/basket_collider";
|
|
||||||
var FAR_BASKET_COLLIDER_NAME = "tutorial/farGrab/basket_collider";
|
|
||||||
var GUN_BASKET_COLLIDER_NAME = "tutorial/equip/basket_collider";
|
|
||||||
var GUN_SPAWN_NAME = "tutorial/gun_spawn";
|
|
||||||
var GUN_AMMO_NAME = "Tutorial Ping Pong Ball"
|
|
||||||
var TELEPORT_PAD_NAME = "tutorial/teleport/pad"
|
|
||||||
|
|
||||||
function spawn(entityData, transform, modifyFn) {
|
function spawn(entityData, transform, modifyFn) {
|
||||||
print("Creating: ", entityData);
|
debug("Creating: ", entityData);
|
||||||
if (!transform) {
|
if (!transform) {
|
||||||
transform = {
|
transform = {
|
||||||
position: { x: 0, y: 0, z: 0 },
|
position: { x: 0, y: 0, z: 0 },
|
||||||
|
@ -112,7 +149,7 @@ function spawn(entityData, transform, modifyFn) {
|
||||||
var ids = [];
|
var ids = [];
|
||||||
for (var i = 0; i < entityData.length; ++i) {
|
for (var i = 0; i < entityData.length; ++i) {
|
||||||
var data = entityData[i];
|
var data = entityData[i];
|
||||||
print("Creating: ", data.name);
|
debug("Creating: ", data.name);
|
||||||
data.position = Vec3.sum(transform.position, data.position);
|
data.position = Vec3.sum(transform.position, data.position);
|
||||||
data.rotation = Quat.multiply(data.rotation, transform.rotation);
|
data.rotation = Quat.multiply(data.rotation, transform.rotation);
|
||||||
if (modifyFn) {
|
if (modifyFn) {
|
||||||
|
@ -120,7 +157,7 @@ function spawn(entityData, transform, modifyFn) {
|
||||||
}
|
}
|
||||||
var id = Entities.addEntity(data);
|
var id = Entities.addEntity(data);
|
||||||
ids.push(id);
|
ids.push(id);
|
||||||
print(id, "data:", JSON.stringify(data));
|
debug(id, "data:", JSON.stringify(data));
|
||||||
}
|
}
|
||||||
return ids;
|
return ids;
|
||||||
}
|
}
|
||||||
|
@ -140,26 +177,22 @@ function spawnWithTag(entityData, transform, tag) {
|
||||||
var userData = parseJSON(data.userData);
|
var userData = parseJSON(data.userData);
|
||||||
userData.tag = tag;
|
userData.tag = tag;
|
||||||
data.userData = JSON.stringify(userData);
|
data.userData = JSON.stringify(userData);
|
||||||
print("In modify", tag, userData, data.userData);
|
debug("In modify", tag, userData, data.userData);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
return spawn(entityData, transform, modifyFn);
|
return spawn(entityData, transform, modifyFn);
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteEntitiesWithTag(tag) {
|
function deleteEntitiesWithTag(tag) {
|
||||||
print("searching for...:", tag);
|
debug("searching for...:", tag);
|
||||||
var entityIDs = findEntitiesWithTag(tag);
|
var entityIDs = findEntitiesWithTag(tag);
|
||||||
for (var i = 0; i < entityIDs.length; ++i) {
|
for (var i = 0; i < entityIDs.length; ++i) {
|
||||||
//print("Deleteing:", entityIDs[i]);
|
|
||||||
Entities.deleteEntity(entityIDs[i]);
|
Entities.deleteEntity(entityIDs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function editEntitiesWithTag(tag, propertiesOrFn) {
|
function editEntitiesWithTag(tag, propertiesOrFn) {
|
||||||
//print("Editing:", tag);
|
|
||||||
var entityIDs = findEntitiesWithTag(tag);
|
var entityIDs = findEntitiesWithTag(tag);
|
||||||
//print("Editing...", entityIDs);
|
|
||||||
for (var i = 0; i < entityIDs.length; ++i) {
|
for (var i = 0; i < entityIDs.length; ++i) {
|
||||||
//print("Editing...", entityIDs[i]);
|
|
||||||
if (isFunction(propertiesOrFn)) {
|
if (isFunction(propertiesOrFn)) {
|
||||||
Entities.editEntity(entityIDs[i], propertiesOrFn(entityIDs[i]));
|
Entities.editEntity(entityIDs[i], propertiesOrFn(entityIDs[i]));
|
||||||
} else {
|
} else {
|
||||||
|
@ -349,21 +382,14 @@ stepOrient.prototype = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// this.overlay = new StayInFrontOverlay("model", {
|
|
||||||
// url: "http://hifi-content.s3.amazonaws.com/alan/dev/Prompt-Cards/welcome.fbx?11",
|
|
||||||
// ignoreRayIntersection: true,
|
|
||||||
// visible: false
|
|
||||||
// }, 1.5, { x: 0, y: 0.3, z: 0 });
|
|
||||||
|
|
||||||
// Spawn content set
|
// Spawn content set
|
||||||
//spawnWithTag(HandsAboveHeadData, defaultTransform, tag);
|
debug("raise hands...", this.tag);
|
||||||
print("raise hands...", this.tag);
|
|
||||||
editEntitiesWithTag(this.tag, { visible: true });
|
editEntitiesWithTag(this.tag, { visible: true });
|
||||||
|
|
||||||
|
|
||||||
this.checkIntervalID = null;
|
this.checkIntervalID = null;
|
||||||
function checkForHandsAboveHead() {
|
function checkForHandsAboveHead() {
|
||||||
print("Orient: Checking for hands above head...");
|
debug("Orient: Checking for hands above head...");
|
||||||
if (MyAvatar.getLeftPalmPosition().y > (MyAvatar.getHeadPosition().y + 0.1)) {
|
if (MyAvatar.getLeftPalmPosition().y > (MyAvatar.getHeadPosition().y + 0.1)) {
|
||||||
Script.clearInterval(this.checkIntervalID);
|
Script.clearInterval(this.checkIntervalID);
|
||||||
this.checkIntervalID = null;
|
this.checkIntervalID = null;
|
||||||
|
@ -421,16 +447,14 @@ stepRaiseAboveHead.prototype = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Spawn content set
|
debug("raise hands...", this.tag);
|
||||||
print("raise hands...", this.tag);
|
|
||||||
editEntitiesWithTag(this.tag, { visible: true });
|
editEntitiesWithTag(this.tag, { visible: true });
|
||||||
|
|
||||||
|
|
||||||
// Wait 2 seconds before starting to check for hands
|
// Wait 2 seconds before starting to check for hands
|
||||||
this.waitTimeoutID = Script.setTimeout(function() {
|
this.waitTimeoutID = Script.setTimeout(function() {
|
||||||
this.checkIntervalID = null;
|
this.checkIntervalID = null;
|
||||||
function checkForHandsAboveHead() {
|
function checkForHandsAboveHead() {
|
||||||
print("Raise above head: Checking for hands above head...");
|
debug("Raise above head: Checking for hands above head...");
|
||||||
if (MyAvatar.getLeftPalmPosition().y > (MyAvatar.getHeadPosition().y + 0.1)) {
|
if (MyAvatar.getLeftPalmPosition().y > (MyAvatar.getHeadPosition().y + 0.1)) {
|
||||||
Script.clearInterval(this.checkIntervalID);
|
Script.clearInterval(this.checkIntervalID);
|
||||||
this.checkIntervalID = null;
|
this.checkIntervalID = null;
|
||||||
|
@ -455,24 +479,6 @@ stepRaiseAboveHead.prototype = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function setControllerVisible(name, visible) {
|
|
||||||
return;
|
|
||||||
Messages.sendLocalMessage('Controller-Display', JSON.stringify({
|
|
||||||
name: name,
|
|
||||||
visible: visible,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
function setControllerPartsVisible(parts) {
|
|
||||||
Messages.sendLocalMessage('Controller-Display-Parts', JSON.stringify(parts));
|
|
||||||
}
|
|
||||||
|
|
||||||
function setControllerPartLayer(part, layer) {
|
|
||||||
data = {};
|
|
||||||
data[part] = layer;
|
|
||||||
Messages.sendLocalMessage('Controller-Set-Part-Layer', JSON.stringify(data));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -498,13 +504,12 @@ stepNearGrab.prototype = {
|
||||||
var tag = this.tag;
|
var tag = this.tag;
|
||||||
|
|
||||||
// Spawn content set
|
// Spawn content set
|
||||||
//spawnWithTag(Step1EntityData, null, tag);
|
|
||||||
showEntitiesWithTag(this.tag, { visible: true });
|
showEntitiesWithTag(this.tag, { visible: true });
|
||||||
showEntitiesWithTag('bothGrab', { visible: true });
|
showEntitiesWithTag('bothGrab', { visible: true });
|
||||||
|
|
||||||
var boxSpawnID = findEntity({ name: NEAR_BOX_SPAWN_NAME }, 10000);
|
var boxSpawnID = findEntity({ name: NEAR_BOX_SPAWN_NAME }, 10000);
|
||||||
if (!boxSpawnID) {
|
if (!boxSpawnID) {
|
||||||
print("Error creating block, cannot find spawn");
|
info("Error creating block, cannot find spawn");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var boxSpawnPosition = Entities.getEntityProperties(boxSpawnID, 'position').position;
|
var boxSpawnPosition = Entities.getEntityProperties(boxSpawnID, 'position').position;
|
||||||
|
@ -530,7 +535,7 @@ stepNearGrab.prototype = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (channel == "Entity-Exploded") {
|
if (channel == "Entity-Exploded") {
|
||||||
print("TUTORIAL: Got entity-exploded message");
|
debug("TUTORIAL: Got entity-exploded message");
|
||||||
|
|
||||||
var data = parseJSON(message);
|
var data = parseJSON(message);
|
||||||
if (this.birdIDs.indexOf(data.entityID) >= 0) {
|
if (this.birdIDs.indexOf(data.entityID) >= 0) {
|
||||||
|
@ -541,7 +546,7 @@ stepNearGrab.prototype = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cleanup: function() {
|
cleanup: function() {
|
||||||
print("cleaning up near grab");
|
debug("cleaning up near grab");
|
||||||
this.finished = true;
|
this.finished = true;
|
||||||
setControllerVisible("trigger", false);
|
setControllerVisible("trigger", false);
|
||||||
setControllerPartLayer('tips', 'blank');
|
setControllerPartLayer('tips', 'blank');
|
||||||
|
@ -590,7 +595,7 @@ stepFarGrab.prototype = {
|
||||||
|
|
||||||
var boxSpawnID = findEntity({ name: FAR_BOX_SPAWN_NAME }, 10000);
|
var boxSpawnID = findEntity({ name: FAR_BOX_SPAWN_NAME }, 10000);
|
||||||
if (!boxSpawnID) {
|
if (!boxSpawnID) {
|
||||||
print("Error creating block, cannot find spawn");
|
debug("Error creating block, cannot find spawn");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var boxSpawnPosition = Entities.getEntityProperties(boxSpawnID, 'position').position;
|
var boxSpawnPosition = Entities.getEntityProperties(boxSpawnID, 'position').position;
|
||||||
|
@ -610,7 +615,7 @@ stepFarGrab.prototype = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (channel == "Entity-Exploded") {
|
if (channel == "Entity-Exploded") {
|
||||||
print("TUTORIAL: Got entity-exploded message");
|
debug("TUTORIAL: Got entity-exploded message");
|
||||||
var data = parseJSON(message);
|
var data = parseJSON(message);
|
||||||
if (this.birdIDs.indexOf(data.entityID) >= 0) {
|
if (this.birdIDs.indexOf(data.entityID) >= 0) {
|
||||||
playSuccessSound();
|
playSuccessSound();
|
||||||
|
@ -694,7 +699,7 @@ stepEquip.prototype = {
|
||||||
function createGun() {
|
function createGun() {
|
||||||
var boxSpawnID = findEntity({ name: GUN_SPAWN_NAME }, 10000);
|
var boxSpawnID = findEntity({ name: GUN_SPAWN_NAME }, 10000);
|
||||||
if (!boxSpawnID) {
|
if (!boxSpawnID) {
|
||||||
print("Error creating block, cannot find spawn");
|
info("Error creating block, cannot find spawn");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -707,12 +712,9 @@ stepEquip.prototype = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Enabled grab
|
|
||||||
// Create table ?
|
|
||||||
// Create blocks and basket
|
|
||||||
this.gunID = createGun.bind(this)();
|
this.gunID = createGun.bind(this)();
|
||||||
this.startWatchingGun();
|
this.startWatchingGun();
|
||||||
print("Created", this.gunID);
|
debug("Created", this.gunID);
|
||||||
this.onFinish = onFinish;
|
this.onFinish = onFinish;
|
||||||
},
|
},
|
||||||
startWatchingGun: function() {
|
startWatchingGun: function() {
|
||||||
|
@ -737,7 +739,7 @@ stepEquip.prototype = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
print("Got message", channel, message, sender, MyAvatar.sessionUUID);
|
debug("Got message", channel, message, sender, MyAvatar.sessionUUID);
|
||||||
|
|
||||||
if (channel == "Tutorial-Spinner") {
|
if (channel == "Tutorial-Spinner") {
|
||||||
if (this.currentPart == this.PART1 && message == "wasLit") {
|
if (this.currentPart == this.PART1 && message == "wasLit") {
|
||||||
|
@ -753,7 +755,7 @@ stepEquip.prototype = {
|
||||||
if (this.currentPart == this.PART2) {
|
if (this.currentPart == this.PART2) {
|
||||||
var data = parseJSON(message);
|
var data = parseJSON(message);
|
||||||
if (data.action == 'release' && data.grabbedEntity == this.gunID) {
|
if (data.action == 'release' && data.grabbedEntity == this.gunID) {
|
||||||
print("got release");
|
info("got release");
|
||||||
this.stopWatchingGun();
|
this.stopWatchingGun();
|
||||||
this.currentPart = this.COMPLETE;
|
this.currentPart = this.COMPLETE;
|
||||||
playSuccessSound();
|
playSuccessSound();
|
||||||
|
@ -820,17 +822,16 @@ stepTurnAround.prototype = {
|
||||||
var dir = Quat.getFront(MyAvatar.orientation);
|
var dir = Quat.getFront(MyAvatar.orientation);
|
||||||
var angle = Math.atan2(dir.z, dir.x);
|
var angle = Math.atan2(dir.z, dir.x);
|
||||||
var angleDegrees = ((angle / Math.PI) * 180);
|
var angleDegrees = ((angle / Math.PI) * 180);
|
||||||
print("CHECK");
|
|
||||||
if (!hasTurnedAround) {
|
if (!hasTurnedAround) {
|
||||||
if (Math.abs(angleDegrees) > 140) {
|
if (Math.abs(angleDegrees) > 140) {
|
||||||
hasTurnedAround = true;
|
hasTurnedAround = true;
|
||||||
print("half way there...");
|
info("Half way turned around");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (Math.abs(angleDegrees) < 30) {
|
if (Math.abs(angleDegrees) < 30) {
|
||||||
Script.clearInterval(this.interval);
|
Script.clearInterval(this.interval);
|
||||||
this.interval = null;
|
this.interval = null;
|
||||||
print("DONE");
|
info("Turned around");
|
||||||
playSuccessSound();
|
playSuccessSound();
|
||||||
onFinish();
|
onFinish();
|
||||||
}
|
}
|
||||||
|
@ -876,20 +877,21 @@ stepTeleport.prototype = {
|
||||||
|
|
||||||
// Wait until touching teleport pad...
|
// Wait until touching teleport pad...
|
||||||
var padID = findEntity({ name: TELEPORT_PAD_NAME }, 100);
|
var padID = findEntity({ name: TELEPORT_PAD_NAME }, 100);
|
||||||
print(padID);
|
|
||||||
var padProps = Entities.getEntityProperties(padID, ["position", "dimensions"]);
|
var padProps = Entities.getEntityProperties(padID, ["position", "dimensions"]);
|
||||||
print(Object.keys(padProps));
|
|
||||||
var xMin = padProps.position.x - padProps.dimensions.x / 2;
|
var xMin = padProps.position.x - padProps.dimensions.x / 2;
|
||||||
var xMax = padProps.position.x + padProps.dimensions.x / 2;
|
var xMax = padProps.position.x + padProps.dimensions.x / 2;
|
||||||
var zMin = padProps.position.z - padProps.dimensions.z / 2;
|
var zMin = padProps.position.z - padProps.dimensions.z / 2;
|
||||||
var zMax = padProps.position.z + padProps.dimensions.z / 2;
|
var zMax = padProps.position.z + padProps.dimensions.z / 2;
|
||||||
function checkCollides() {
|
function checkCollides() {
|
||||||
print("Checking if on pad...");
|
debug("Checking if on pad...");
|
||||||
|
|
||||||
var pos = MyAvatar.position;
|
var pos = MyAvatar.position;
|
||||||
print('x', pos.x, xMin, xMax);
|
|
||||||
print('z', pos.z, zMin, zMax);
|
debug('x', pos.x, xMin, xMax);
|
||||||
|
debug('z', pos.z, zMin, zMax);
|
||||||
|
|
||||||
if (pos.x > xMin && pos.x < xMax && pos.z > zMin && pos.z < zMax) {
|
if (pos.x > xMin && pos.x < xMax && pos.z > zMin && pos.z < zMax) {
|
||||||
print("On pad!!");
|
debug("On teleport pad");
|
||||||
Script.clearInterval(this.checkCollidesTimer);
|
Script.clearInterval(this.checkCollidesTimer);
|
||||||
this.checkCollidesTimer = null;
|
this.checkCollidesTimer = null;
|
||||||
playSuccessSound();
|
playSuccessSound();
|
||||||
|
@ -901,8 +903,6 @@ stepTeleport.prototype = {
|
||||||
showEntitiesWithTag(this.tag);
|
showEntitiesWithTag(this.tag);
|
||||||
},
|
},
|
||||||
cleanup: function() {
|
cleanup: function() {
|
||||||
//setControllerVisible("teleport", false);
|
|
||||||
|
|
||||||
setControllerPartLayer('touchpad', 'blank');
|
setControllerPartLayer('touchpad', 'blank');
|
||||||
setControllerPartLayer('tips', 'blank');
|
setControllerPartLayer('tips', 'blank');
|
||||||
|
|
||||||
|
@ -968,7 +968,7 @@ function showEntitiesWithTag(tag) {
|
||||||
collisionless = data.collidable === true ? false : true;
|
collisionless = data.collidable === true ? false : true;
|
||||||
}
|
}
|
||||||
if (data.soundKey) {
|
if (data.soundKey) {
|
||||||
print("Setting sound key to true");
|
debug("Setting sound key to true");
|
||||||
data.soundKey.playing = true;
|
data.soundKey.playing = true;
|
||||||
}
|
}
|
||||||
var newProperties = {
|
var newProperties = {
|
||||||
|
@ -1055,12 +1055,12 @@ TutorialManager = function() {
|
||||||
|
|
||||||
if (currentStepNum >= STEPS.length) {
|
if (currentStepNum >= STEPS.length) {
|
||||||
// Done
|
// Done
|
||||||
print("DONE WITH TUTORIAL");
|
info("DONE WITH TUTORIAL");
|
||||||
currentStepNum = -1;
|
currentStepNum = -1;
|
||||||
currentStep = null;
|
currentStep = null;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
print("Starting step", currentStepNum);
|
info("Starting step", currentStepNum);
|
||||||
currentStep = STEPS[currentStepNum];
|
currentStep = STEPS[currentStepNum];
|
||||||
startedLastStepAt = Date.now();
|
startedLastStepAt = Date.now();
|
||||||
currentStep.start(this.onFinish);
|
currentStep.start(this.onFinish);
|
||||||
|
@ -1082,49 +1082,3 @@ TutorialManager = function() {
|
||||||
currentStep = null;
|
currentStep = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Script.scriptEnding.connect(function() {
|
|
||||||
Controller.enableMapping('handControllerPointer-click');
|
|
||||||
});
|
|
||||||
|
|
||||||
// var entityID = '{be3d10a3-262a-4827-b30c-ec025c4325dc}';
|
|
||||||
// var token = new OwnershipToken(Math.random() * 100000, entityID, {
|
|
||||||
// onGainedOwnership: function(token) {
|
|
||||||
// //Script.setTimeout(function() { token.destroy() }, 15000);
|
|
||||||
// Controller.keyReleaseEvent.connect(keyReleaseHandler);
|
|
||||||
// startTutorial();
|
|
||||||
// },
|
|
||||||
// onLostOwnership: function(token) {
|
|
||||||
// Controller.keyReleaseEvent.disconnect(keyReleaseHandler);
|
|
||||||
// stopTutorial();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
//tutorialManager = new TutorialManager();
|
|
||||||
//tutorialManager.startTutorial();
|
|
||||||
//Controller.keyReleaseEvent.connect(keyReleaseHandler);
|
|
||||||
Script.scriptEnding.connect(function() {
|
|
||||||
//token.destroy();
|
|
||||||
//stopTutorial();
|
|
||||||
});
|
|
||||||
|
|
||||||
// function keyReleaseHandler(event) {
|
|
||||||
// print(event.text);
|
|
||||||
// if (event.text == ",") {
|
|
||||||
// if (!tutorialManager.startNextStep()) {
|
|
||||||
// tutorialManager.startTutorial();
|
|
||||||
// }
|
|
||||||
// } else if (event.text == "F11") {
|
|
||||||
// tutorialManager.restartStep();
|
|
||||||
// } else if (event.text == "F10") {
|
|
||||||
// MyAvatar.shouldRenderLocally = !MyAvatar.shouldRenderLocally;
|
|
||||||
// } else if (event.text == "r") {
|
|
||||||
// tutorialManager.stopTutorial();
|
|
||||||
// tutorialManager.startTutorial();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Messages.sendLocalMessage('Controller-Display', JSON.stringify({
|
|
||||||
// name: "menu",
|
|
||||||
// visible: false,
|
|
||||||
// }));
|
|
||||||
|
|
Loading…
Reference in a new issue