diff --git a/interface/resources/html/img/controls-help-oculus.png b/interface/resources/html/img/controls-help-oculus.png index 85e25c2a19..0bd0a656de 100644 Binary files a/interface/resources/html/img/controls-help-oculus.png and b/interface/resources/html/img/controls-help-oculus.png differ diff --git a/interface/resources/meshes/controller/touch/Oculus-Labels-L.fbx b/interface/resources/meshes/controller/touch/Oculus-Labels-L.fbx index 4f1f60be0b..50f415b7ca 100644 Binary files a/interface/resources/meshes/controller/touch/Oculus-Labels-L.fbx and b/interface/resources/meshes/controller/touch/Oculus-Labels-L.fbx differ diff --git a/interface/resources/meshes/controller/touch/Oculus-Labels-R.fbx b/interface/resources/meshes/controller/touch/Oculus-Labels-R.fbx index 49a3d6c832..9e9d92541c 100644 Binary files a/interface/resources/meshes/controller/touch/Oculus-Labels-R.fbx and b/interface/resources/meshes/controller/touch/Oculus-Labels-R.fbx differ diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js index 513e70d18c..2ed09232e6 100644 --- a/scripts/system/controllers/handControllerGrab.js +++ b/scripts/system/controllers/handControllerGrab.js @@ -195,6 +195,8 @@ var STATE_OVERLAY_TOUCHING = 8; var holdEnabled = true; var nearGrabEnabled = true; var farGrabEnabled = true; +var myAvatarScalingEnabled = true; +var objectScalingEnabled = true; // "collidesWith" is specified by comma-separated list of group names // the possible group names are: static, dynamic, kinematic, myAvatar, otherAvatar @@ -2312,6 +2314,10 @@ function MyController(hand) { }; this.maybeScale = function(props) { + if (!objectScalingEnabled) { + return; + } + if (!this.shouldScale) { // If both secondary triggers squeezed, and the non-holding hand is empty, start scaling if (this.secondarySqueezed() && this.getOtherHandController().secondarySqueezed() && this.getOtherHandController().state === STATE_OFF) { @@ -2331,6 +2337,10 @@ function MyController(hand) { } this.maybeScaleMyAvatar = function() { + if (!myAvatarScalingEnabled) { + return; + } + if (!this.shouldScale) { // If both secondary triggers squeezed, start scaling if (this.secondarySqueezed() && this.getOtherHandController().secondarySqueezed()) { @@ -3016,6 +3026,14 @@ var handleHandMessages = function(channel, message, sender) { print("farGrabEnabled: ", data.farGrabEnabled); farGrabEnabled = data.farGrabEnabled; } + if (data.myAvatarScalingEnabled !== undefined) { + print("myAvatarScalingEnabled: ", data.myAvatarScalingEnabled); + myAvatarScalingEnabled = data.myAvatarScalingEnabled; + } + if (data.objectScalingEnabled !== undefined) { + print("objectScalingEnabled: ", data.objectScalingEnabled); + objectScalingEnabled = data.objectScalingEnabled; + } } else if (channel === 'Hifi-Hand-Grab') { try { data = JSON.parse(message); diff --git a/scripts/system/controllers/touchControllerConfiguration.js b/scripts/system/controllers/touchControllerConfiguration.js index 6241a776c4..a4622fd5e6 100644 --- a/scripts/system/controllers/touchControllerConfiguration.js +++ b/scripts/system/controllers/touchControllerConfiguration.js @@ -74,6 +74,9 @@ TOUCH_CONTROLLER_CONFIGURATION_LEFT = { teleport: { defaultTextureURL: BASE_URL + "Oculus-Labels-L.fbx/Oculus-Labels-L.fbm/Teleport.png" }, + both_triggers: { + defaultTextureURL: BASE_URL + "Oculus-Labels-L.fbx/Oculus-Labels-L.fbm/Grip-Trigger.png" + }, } }, @@ -212,7 +215,7 @@ TOUCH_CONTROLLER_CONFIGURATION_RIGHT = { modelURL: BASE_URL + "Oculus-Labels-R.fbx", naturalPosition: { x: 0.009739525616168976, y: -0.0017818436026573181, z: 0.016794726252555847 }, - textureName: "Texture", + textureName: "blank", defaultTextureLayer: "blank", textureLayers: { blank: { @@ -230,6 +233,9 @@ TOUCH_CONTROLLER_CONFIGURATION_RIGHT = { teleport: { defaultTextureURL: BASE_URL + "Oculus-Labels-R.fbx/Oculus-Labels-R.fbm/Teleport.png" }, + both_triggers: { + defaultTextureURL: BASE_URL + "Oculus-Labels-R.fbx/Oculus-Labels-R.fbm/Grip-Trigger.png" + }, } }, diff --git a/server-console/src/main.js b/server-console/src/main.js index c99e39faf8..b387aa5dd0 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -42,7 +42,7 @@ const appIcon = path.join(__dirname, '../resources/console.png'); const DELETE_LOG_FILES_OLDER_THAN_X_SECONDS = 60 * 60 * 24 * 7; // 7 Days const LOG_FILE_REGEX = /(domain-server|ac-monitor|ac)-.*-std(out|err).txt/; -const HOME_CONTENT_URL = "http://cachefly.highfidelity.com/home-tutorial-release-5572.tar.gz"; +const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-28.tar.gz"; function getBuildInfo() { var buildInfoPath = null; diff --git a/tutorial/tutorial.js b/tutorial/tutorial.js index b75bf74579..26fa51e896 100644 --- a/tutorial/tutorial.js +++ b/tutorial/tutorial.js @@ -58,6 +58,9 @@ function info() { } } +const CONTROLLER_TOUCH = 'touch'; +const CONTROLLER_VIVE = 'vive'; + var NEAR_BOX_SPAWN_NAME = "tutorial/nearGrab/box_spawn"; var FAR_BOX_SPAWN_NAME = "tutorial/farGrab/box_spawn"; var GUN_SPAWN_NAME = "tutorial/gun_spawn"; @@ -323,7 +326,7 @@ function hideEntitiesWithTag(tag) { //}); } -/** +/** * Return the entity properties for an entity with a given name if it is in our * cached list of entities. Otherwise, return undefined. */ @@ -371,6 +374,8 @@ function disableEverything() { nearGrabEnabled: true, holdEnabled: false, farGrabEnabled: false, + myAvatarScalingEnabled: false, + objectScalingEnabled: false, })); setControllerPartLayer('touchpad', 'blank'); setControllerPartLayer('trigger', 'blank'); @@ -399,6 +404,8 @@ function reenableEverything() { nearGrabEnabled: true, holdEnabled: true, farGrabEnabled: true, + myAvatarScalingEnabled: true, + objectScalingEnabled: true, })); setControllerPartLayer('touchpad', 'blank'); setControllerPartLayer('trigger', 'blank'); @@ -516,12 +523,14 @@ stepOrient.prototype = { // STEP: Near Grab // // // /////////////////////////////////////////////////////////////////////////////// -var stepNearGrab = function() { +var stepNearGrab = function(tutorialManager) { this.name = 'nearGrab'; - this.tag = "nearGrab"; + this.tags = ["bothGrab", "nearGrab", "nearGrab-" + tutorialManager.controllerName]; this.tempTag = "nearGrab-temporary"; this.birdIDs = []; + this.controllerName = tutorialManager.controllerName; + Messages.subscribe("Entity-Exploded"); Messages.messageReceived.connect(this.onMessage.bind(this)); } @@ -530,12 +539,17 @@ stepNearGrab.prototype = { this.finished = false; this.onFinish = onFinish; - setControllerPartLayer('tips', 'trigger'); - setControllerPartLayer('trigger', 'highlight'); + if (this.controllerName === CONTROLLER_TOUCH) { + setControllerPartLayer('tips', 'both_triggers'); + setControllerPartLayer('trigger', 'highlight'); + setControllerPartLayer('grip', 'highlight'); + } else { + setControllerPartLayer('tips', 'trigger'); + setControllerPartLayer('trigger', 'highlight'); + } - // Spawn content set - showEntitiesWithTag(this.tag, { visible: true }); - showEntitiesWithTag('bothGrab', { visible: true }); + // Show content set + showEntitiesWithTags(this.tags); var boxSpawnPosition = getEntityWithName(NEAR_BOX_SPAWN_NAME).position; function createBlock(fireworkNumber) { @@ -573,8 +587,8 @@ stepNearGrab.prototype = { this.finished = true; setControllerPartLayer('tips', 'blank'); setControllerPartLayer('trigger', 'normal'); - hideEntitiesWithTag(this.tag, { visible: false}); - hideEntitiesWithTag('bothGrab', { visible: false}); + setControllerPartLayer('grip', 'normal'); + hideEntitiesWithTags(this.tags); deleteEntitiesWithTag(this.tempTag); if (this.positionWatcher) { this.positionWatcher.destroy(); @@ -696,6 +710,7 @@ PositionWatcher.prototype = { /////////////////////////////////////////////////////////////////////////////// var stepEquip = function(tutorialManager) { const controllerName = tutorialManager.controllerName; + this.controllerName = controllerName; this.name = 'equip'; @@ -714,8 +729,13 @@ var stepEquip = function(tutorialManager) { } stepEquip.prototype = { start: function(onFinish) { - setControllerPartLayer('tips', 'trigger'); - setControllerPartLayer('trigger', 'highlight'); + if (this.controllerName === CONTROLLER_TOUCH) { + setControllerPartLayer('tips', 'grip'); + setControllerPartLayer('grip', 'highlight'); + } else { + setControllerPartLayer('tips', 'trigger'); + setControllerPartLayer('trigger', 'highlight'); + } Messages.sendLocalMessage('Hifi-Grab-Disable', JSON.stringify({ holdEnabled: true, diff --git a/tutorial/tutorialEntityIDs.js b/tutorial/tutorialEntityIDs.js index 0200c2c247..f53ac1a56c 100644 --- a/tutorial/tutorialEntityIDs.js +++ b/tutorial/tutorialEntityIDs.js @@ -52,6 +52,16 @@ TUTORIAL_TAG_TO_ENTITY_IDS_MAP = { "tag": "farGrab" } }, + "nearGrab-vive": { + "{88221a22-b710-4d35-852b-5257b0aa77dc}": { + "tag": "nearGrab-vive" + } + }, + "nearGrab-touch": { + "{7c0f2fde-6c5c-459b-bf82-421979cebf2e}": { + "tag": "nearGrab-touch" + } + }, "nearGrab": { "{55c861ef-60ca-4722-a6c5-9c6967966ec5}": { "tag": "nearGrab" @@ -59,9 +69,6 @@ TUTORIAL_TAG_TO_ENTITY_IDS_MAP = { "{644d655b-ae66-43b1-9bab-a44b9a8ad632}": { "tag": "nearGrab" }, - "{88221a22-b710-4d35-852b-5257b0aa77dc}": { - "tag": "nearGrab" - }, "{8bf0baa1-88d0-448a-a782-100d4413bd82}": { "tag": "nearGrab" }, @@ -70,13 +77,20 @@ TUTORIAL_TAG_TO_ENTITY_IDS_MAP = { "tag": "nearGrab" } }, + "equip-part1-touch": { + "{470f0634-8be7-4b52-a8bd-5183d489fcb6}": { + "tag": "equip-part1-touch" + } + }, + "equip-part1-vive": { + "{97ced5e7-fc81-40f9-a9e8-f85b4b30f24c}": { + "tag": "equip-part1-vive" + } + }, "equip-part1": { "{d73822ca-0a34-4cf4-a530-3258ac459a14}": { "tag": "equip-part1" }, - "{97ced5e7-fc81-40f9-a9e8-f85b4b30f24c}": { - "tag": "equip-part1" - }, "{8572d991-5777-45df-97bf-7243d7b12f81}": { "tag": "equip-part1" }, @@ -102,16 +116,17 @@ TUTORIAL_TAG_TO_ENTITY_IDS_MAP = { "equip-part2-vive": { "{b5d17eda-90ab-40cf-b973-efcecb2e992e}": { "tag": "equip-part2-vive" + }, + "{6307cd16-dd1d-4988-a339-578178436b45}": { + "tag": "equip-part2-vive" } }, "equip-part2-touch": { "{69195139-e020-4739-bb2c-50faebc6860a}": { "tag": "equip-part2-touch" - } - }, - "equip-part2": { - "{6307cd16-dd1d-4988-a339-578178436b45}": { - "tag": "equip-part2" + }, + "{9b0a99ae-221b-4e59-ba3c-d8e64a083774}": { + "tag": "equip-part2-touch" } }, "bothGrab": {