mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-17 22:08:27 +02:00
Merge pull request #14249 from wayne-chen/mergedInterstitialBugFixes
Merged interstitial bug fixes
This commit is contained in:
commit
04d251c321
6 changed files with 108 additions and 50 deletions
BIN
scripts/system/assets/models/black-sphere.fbx
Normal file
BIN
scripts/system/assets/models/black-sphere.fbx
Normal file
Binary file not shown.
BIN
scripts/system/assets/sounds/crystals_and_voices.mp3
Normal file
BIN
scripts/system/assets/sounds/crystals_and_voices.mp3
Normal file
Binary file not shown.
|
@ -298,7 +298,7 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
};
|
||||
|
||||
this.restoreIgnoredEntities = function() {
|
||||
for (var i = 0; i < this.ignoredEntities; i++) {
|
||||
for (var i = 0; i < this.ignoredEntities.length; i++) {
|
||||
var data = {
|
||||
action: 'remove',
|
||||
id: this.ignoredEntities[i]
|
||||
|
@ -317,15 +317,6 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
if ((intersection.type === Picks.INTERSECTED_ENTITY && entityType === "Web") ||
|
||||
intersection.type === Picks.INTERSECTED_OVERLAY || Window.isPointOnDesktopWindow(point2d)) {
|
||||
return true;
|
||||
} else if (intersection.type === Picks.INTERSECTED_ENTITY && !Window.isPhysicsEnabled()) {
|
||||
// add to ignored items.
|
||||
var data = {
|
||||
action: 'add',
|
||||
id: intersection.objectID
|
||||
};
|
||||
Messages.sendMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data));
|
||||
this.ignoredEntities.push(intersection.objectID);
|
||||
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
@ -386,7 +377,6 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
this.isReady = function (controllerData) {
|
||||
if (HMD.active) {
|
||||
if (this.notPointingAtEntity(controllerData)) {
|
||||
this.restoreIgnoredEntities();
|
||||
return makeRunningValues(false, [], []);
|
||||
}
|
||||
|
||||
|
@ -398,17 +388,28 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
return makeRunningValues(true, [], []);
|
||||
} else {
|
||||
this.destroyContextOverlay();
|
||||
this.restoreIgnoredEntities();
|
||||
return makeRunningValues(false, [], []);
|
||||
}
|
||||
}
|
||||
this.restoreIgnoredEntities();
|
||||
return makeRunningValues(false, [], []);
|
||||
};
|
||||
|
||||
this.run = function (controllerData) {
|
||||
|
||||
var intersection = controllerData.rayPicks[this.hand];
|
||||
if (intersection.type === Picks.INTERSECTED_ENTITY && !Window.isPhysicsEnabled()) {
|
||||
// add to ignored items.
|
||||
if (this.ignoredEntities.indexOf(intersection.objectID) === -1) {
|
||||
var data = {
|
||||
action: 'add',
|
||||
id: intersection.objectID
|
||||
};
|
||||
Messages.sendMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data));
|
||||
this.ignoredEntities.push(intersection.objectID);
|
||||
}
|
||||
}
|
||||
if (controllerData.triggerValues[this.hand] < TRIGGER_OFF_VALUE ||
|
||||
this.notPointingAtEntity(controllerData) || this.targetIsNull()) {
|
||||
(this.notPointingAtEntity(controllerData) && Window.isPhysicsEnabled()) || this.targetIsNull()) {
|
||||
this.endFarGrabAction();
|
||||
Selection.removeFromSelectedItemsList(DISPATCHER_HOVERING_LIST, "entity",
|
||||
this.highlightedEntity);
|
||||
|
|
|
@ -701,6 +701,10 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
};
|
||||
|
||||
this.isReady = function(controllerData, deltaTime) {
|
||||
if (Window.interstitialModeEnabled && !Window.isPhysicsEnabled()) {
|
||||
return makeRunningValues(false, [], []);
|
||||
}
|
||||
|
||||
var otherModule = this.getOtherModule();
|
||||
if (!this.disabled && this.buttonValue !== 0 && !otherModule.active) {
|
||||
this.active = true;
|
||||
|
|
|
@ -18,6 +18,7 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
this.hand = hand;
|
||||
this.otherHand = this.hand === RIGHT_HAND ? LEFT_HAND : RIGHT_HAND;
|
||||
this.running = false;
|
||||
this.ignoredObjects = [];
|
||||
|
||||
this.parameters = makeDispatcherModuleParameters(
|
||||
160,
|
||||
|
@ -72,6 +73,48 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
return this.hand === RIGHT_HAND ? leftOverlayLaserInput : rightOverlayLaserInput;
|
||||
};
|
||||
|
||||
this.addObjectToIgnoreList = function(controllerData) {
|
||||
if (Window.interstitialModeEnabled && !Window.isPhysicsEnabled()) {
|
||||
var intersection = controllerData.rayPicks[this.hand];
|
||||
var objectID = intersection.objectID;
|
||||
|
||||
if (intersection.type === Picks.INTERSECTED_OVERLAY) {
|
||||
var overlayIndex = this.ignoredObjects.indexOf(objectID);
|
||||
|
||||
var overlayName = Overlays.getProperty(objectID, "name");
|
||||
if (overlayName !== "Loading-Destination-Card-Text" && overlayName !== "Loading-Destination-Card-GoTo-Image" &&
|
||||
overlayName !== "Loading-Destination-Card-GoTo-Image-Hover") {
|
||||
var data = {
|
||||
action: 'add',
|
||||
id: objectID
|
||||
};
|
||||
Messages.sendMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data));
|
||||
this.ignoredObjects.push(objectID);
|
||||
}
|
||||
} else if (intersection.type === Picks.INTERSECTED_ENTITY) {
|
||||
var entityIndex = this.ignoredObjects.indexOf(objectID);
|
||||
var data = {
|
||||
action: 'add',
|
||||
id: objectID
|
||||
};
|
||||
Messages.sendMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data));
|
||||
this.ignoredObjects.push(objectID);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.restoreIgnoredObjects = function() {
|
||||
for (var index = 0; index < this.ignoredObjects.length; index++) {
|
||||
var data = {
|
||||
action: 'remove',
|
||||
id: this.ignoredObjects[index]
|
||||
};
|
||||
Messages.sendMessage('Hifi-Hand-RayPick-Blacklist', JSON.stringify(data));
|
||||
}
|
||||
|
||||
this.ignoredObjects = [];
|
||||
};
|
||||
|
||||
this.isPointingAtTriggerable = function(controllerData, triggerPressed, checkEntitiesOnly) {
|
||||
// allow pointing at tablet, unlocked web entities, or web overlays automatically without pressing trigger,
|
||||
// but for pointing at locked web entities or non-web overlays user must be pressing trigger
|
||||
|
@ -137,6 +180,10 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
return makeRunningValues(true, [], []);
|
||||
}
|
||||
}
|
||||
|
||||
if (Window.interstitialModeEnabled && Window.isPhysicsEnabled()) {
|
||||
this.restoreIgnoredObjects();
|
||||
}
|
||||
return makeRunningValues(false, [], []);
|
||||
};
|
||||
|
||||
|
@ -149,6 +196,7 @@ Script.include("/~/system/libraries/controllers.js");
|
|||
var allowThisModule = !otherModuleRunning && !grabModuleNeedsToRun;
|
||||
var isTriggerPressed = controllerData.triggerValues[this.hand] > TRIGGER_OFF_VALUE;
|
||||
var laserOn = isTriggerPressed || this.parameters.handLaser.allwaysOn;
|
||||
this.addObjectToIgnoreList(controllerData);
|
||||
if (allowThisModule) {
|
||||
if (isTriggerPressed && !this.isPointingAtTriggerable(controllerData, isTriggerPressed, true)) {
|
||||
// if trigger is down + not pointing at a web entity, keep running web surface laser
|
||||
|
|
|
@ -18,10 +18,11 @@
|
|||
var DEBUG = false;
|
||||
var MIN_LOADING_PROGRESS = 3.6;
|
||||
var TOTAL_LOADING_PROGRESS = 3.8;
|
||||
var EPSILON = 0.01;
|
||||
var EPSILON = 0.05;
|
||||
var TEXTURE_EPSILON = 0.01;
|
||||
var isVisible = false;
|
||||
var VOLUME = 0.4;
|
||||
var tune = SoundCache.getSound("http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/crystals_and_voices.wav");
|
||||
var tune = SoundCache.getSound(Script.resolvePath("/~/system/assets/sounds/crystals_and_voices.mp3"));
|
||||
var sample = null;
|
||||
var MAX_LEFT_MARGIN = 1.9;
|
||||
var INNER_CIRCLE_WIDTH = 4.7;
|
||||
|
@ -63,9 +64,9 @@
|
|||
|
||||
var loadingSphereID = Overlays.addOverlay("model", {
|
||||
name: "Loading-Sphere",
|
||||
position: Vec3.sum(Vec3.sum(MyAvatar.position, {x: 0.0, y: -1.0, z: 0.0}), Vec3.multiplyQbyV(MyAvatar.orientation, {x: 0, y: 0.95, z: 0})),
|
||||
orientation: Quat.multiply(Quat.fromVec3Degrees({x: 0, y: 180, z: 0}), MyAvatar.orientation),
|
||||
url: "http://hifi-content.s3.amazonaws.com/alexia/LoadingScreens/black-sphere.fbx",
|
||||
position: Vec3.sum(Vec3.sum(MyAvatar.position, { x: 0.0, y: -1.0, z: 0.0 }), Vec3.multiplyQbyV(MyAvatar.orientation, { x: 0, y: 0.95, z: 0 })),
|
||||
orientation: Quat.multiply(Quat.fromVec3Degrees({ x: 0, y: 180, z: 0 }), MyAvatar.orientation),
|
||||
url: Script.resolvePath("/~/system/assets/models/black-sphere.fbx"),
|
||||
dimensions: DEFAULT_DIMENSIONS,
|
||||
alpha: 1,
|
||||
visible: isVisible,
|
||||
|
@ -76,12 +77,12 @@
|
|||
});
|
||||
|
||||
var anchorOverlay = Overlays.addOverlay("cube", {
|
||||
dimensions: {x: 0.2, y: 0.2, z: 0.2},
|
||||
dimensions: { x: 0.2, y: 0.2, z: 0.2 },
|
||||
visible: false,
|
||||
grabbable: false,
|
||||
ignoreRayIntersection: true,
|
||||
localPosition: {x: 0.0, y: getAnchorLocalYOffset(), z: DEFAULT_Z_OFFSET },
|
||||
orientation: Quat.multiply(Quat.fromVec3Degrees({x: 0, y: 180, z: 0}), MyAvatar.orientation),
|
||||
localPosition: { x: 0.0, y: getAnchorLocalYOffset(), z: DEFAULT_Z_OFFSET },
|
||||
orientation: Quat.multiply(Quat.fromVec3Degrees({ x: 0, y: 180, z: 0 }), MyAvatar.orientation),
|
||||
solid: true,
|
||||
drawInFront: true,
|
||||
parentID: loadingSphereID
|
||||
|
@ -113,7 +114,6 @@
|
|||
backgroundAlpha: 1,
|
||||
lineHeight: 0.13,
|
||||
visible: isVisible,
|
||||
backgroundAlpha: 0,
|
||||
ignoreRayIntersection: true,
|
||||
drawInFront: true,
|
||||
grabbable: false,
|
||||
|
@ -125,7 +125,7 @@
|
|||
|
||||
var domainToolTip = Overlays.addOverlay("text3d", {
|
||||
name: "Loading-Tooltip",
|
||||
localPosition: { x: 0.0 , y: -1.6, z: 0.0 },
|
||||
localPosition: { x: 0.0, y: -1.6, z: 0.0 },
|
||||
text: toolTip,
|
||||
textAlpha: 1,
|
||||
backgroundAlpha: 0.00393,
|
||||
|
@ -140,14 +140,14 @@
|
|||
|
||||
var loadingToTheSpotText = Overlays.addOverlay("text3d", {
|
||||
name: "Loading-Destination-Card-Text",
|
||||
localPosition: { x: 0.0 , y: -1.687, z: -0.3 },
|
||||
localPosition: { x: 0.0, y: -1.687, z: -0.3 },
|
||||
text: "Go To TheSpot",
|
||||
textAlpha: 1,
|
||||
backgroundAlpha: 0.00393,
|
||||
lineHeight: 0.10,
|
||||
visible: isVisible,
|
||||
ignoreRayIntersection: true,
|
||||
dimensions: {x: 1, y: 0.17},
|
||||
dimensions: { x: 1, y: 0.17 },
|
||||
drawInFront: true,
|
||||
grabbable: false,
|
||||
localOrientation: Quat.fromVec3Degrees({ x: 0, y: 180, z: 0 }),
|
||||
|
@ -156,7 +156,7 @@
|
|||
|
||||
var loadingToTheSpotID = Overlays.addOverlay("image3d", {
|
||||
name: "Loading-Destination-Card-GoTo-Image",
|
||||
localPosition: { x: 0.0 , y: -1.75, z: -0.3 },
|
||||
localPosition: { x: 0.0, y: -1.75, z: -0.3 },
|
||||
url: Script.resourcesPath() + "images/interstitialPage/button.png",
|
||||
alpha: 1,
|
||||
visible: isVisible,
|
||||
|
@ -170,7 +170,7 @@
|
|||
|
||||
var loadingToTheSpotHoverID = Overlays.addOverlay("image3d", {
|
||||
name: "Loading-Destination-Card-GoTo-Image-Hover",
|
||||
localPosition: { x: 0.0 , y: -1.75, z: -0.3 },
|
||||
localPosition: { x: 0.0, y: -1.75, z: -0.3 },
|
||||
url: Script.resourcesPath() + "images/interstitialPage/button_hover.png",
|
||||
alpha: 1,
|
||||
visible: false,
|
||||
|
@ -187,7 +187,7 @@
|
|||
localPosition: { x: 0.0, y: -0.99, z: 0.3 },
|
||||
url: Script.resourcesPath() + "images/loadingBar_placard.png",
|
||||
alpha: 1,
|
||||
dimensions: { x: 4, y: 2.8},
|
||||
dimensions: { x: 4, y: 2.8 },
|
||||
visible: isVisible,
|
||||
emissive: true,
|
||||
ignoreRayIntersection: false,
|
||||
|
@ -202,7 +202,7 @@
|
|||
localPosition: { x: 0.0, y: -0.90, z: 0.0 },
|
||||
url: Script.resourcesPath() + "images/loadingBar_progress.png",
|
||||
alpha: 1,
|
||||
dimensions: {x: 3.8, y: 2.8},
|
||||
dimensions: { x: 3.8, y: 2.8 },
|
||||
visible: isVisible,
|
||||
emissive: true,
|
||||
ignoreRayIntersection: false,
|
||||
|
@ -212,7 +212,7 @@
|
|||
parentID: anchorOverlay
|
||||
});
|
||||
|
||||
var TARGET_UPDATE_HZ = 60; // 50hz good enough, but we're using update
|
||||
var TARGET_UPDATE_HZ = 30;
|
||||
var BASIC_TIMER_INTERVAL_MS = 1000 / TARGET_UPDATE_HZ;
|
||||
var lastInterval = Date.now();
|
||||
var currentDomain = "no domain";
|
||||
|
@ -245,7 +245,7 @@
|
|||
}
|
||||
|
||||
function resetValues() {
|
||||
var properties = {
|
||||
var properties = {
|
||||
localPosition: { x: 1.85, y: -0.935, z: 0.0 },
|
||||
dimensions: {
|
||||
x: 0.1,
|
||||
|
@ -267,7 +267,7 @@
|
|||
connectionToDomainFailed = false;
|
||||
previousCameraMode = Camera.mode;
|
||||
Camera.mode = "first person";
|
||||
timer = Script.setTimeout(update, BASIC_TIMER_INTERVAL_MS);
|
||||
timer = Script.setTimeout(update, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -348,12 +348,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
var THE_PLACE = (HifiAbout.buildVersion === "dev") ? "hifi://TheSpot-dev": "hifi://TheSpot";
|
||||
var THE_PLACE = (HifiAbout.buildVersion === "dev") ? "hifi://TheSpot-dev" : "hifi://TheSpot";
|
||||
function clickedOnOverlay(overlayID, event) {
|
||||
if (loadingToTheSpotHoverID === overlayID) {
|
||||
location.handleLookupString(THE_PLACE);
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, {visible: false});
|
||||
Overlays.editOverlay(loadingToTheSpotID, {visible: true});
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, { visible: false });
|
||||
Overlays.editOverlay(loadingToTheSpotID, { visible: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -362,8 +362,8 @@
|
|||
return;
|
||||
}
|
||||
if (overlayID === loadingToTheSpotID) {
|
||||
Overlays.editOverlay(loadingToTheSpotID, {visible: false});
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, {visible: true});
|
||||
Overlays.editOverlay(loadingToTheSpotID, { visible: false });
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, { visible: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -372,8 +372,8 @@
|
|||
return;
|
||||
}
|
||||
if (overlayID === loadingToTheSpotHoverID) {
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, {visible: false});
|
||||
Overlays.editOverlay(loadingToTheSpotID, {visible: true});
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, { visible: false });
|
||||
Overlays.editOverlay(loadingToTheSpotID, { visible: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -453,12 +453,14 @@
|
|||
function sleep(milliseconds) {
|
||||
var start = new Date().getTime();
|
||||
for (var i = 0; i < 1e7; i++) {
|
||||
if ((new Date().getTime() - start) > milliseconds){
|
||||
if ((new Date().getTime() - start) > milliseconds) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var MAX_TEXTURE_STABILITY_COUNT = 30;
|
||||
var INTERVAL_PROGRESS = 0.04;
|
||||
function update() {
|
||||
var renderStats = Render.getConfig("Stats");
|
||||
var physicsEnabled = Window.isPhysicsEnabled();
|
||||
|
@ -472,7 +474,7 @@
|
|||
target = progress;
|
||||
}
|
||||
|
||||
if (currentProgress >= (TOTAL_LOADING_PROGRESS * 0.4)) {
|
||||
if (currentProgress >= ((TOTAL_LOADING_PROGRESS * 0.4) - TEXTURE_EPSILON)) {
|
||||
var textureResourceGPUMemSize = renderStats.textureResourceGPUMemSize;
|
||||
var texturePopulatedGPUMemSize = renderStats.textureResourcePopulatedGPUMemSize;
|
||||
|
||||
|
@ -484,10 +486,9 @@
|
|||
|
||||
textureMemSizeAtLastCheck = textureResourceGPUMemSize;
|
||||
|
||||
if (textureMemSizeStabilityCount >= 20) {
|
||||
if (textureMemSizeStabilityCount >= MAX_TEXTURE_STABILITY_COUNT) {
|
||||
|
||||
if (textureResourceGPUMemSize > 0) {
|
||||
// print((texturePopulatedGPUMemSize / textureResourceGPUMemSize));
|
||||
var gpuPercantage = (TOTAL_LOADING_PROGRESS * 0.6) * (texturePopulatedGPUMemSize / textureResourceGPUMemSize);
|
||||
var totalProgress = progress + gpuPercantage;
|
||||
if (totalProgress >= target) {
|
||||
|
@ -501,7 +502,7 @@
|
|||
target = TOTAL_LOADING_PROGRESS;
|
||||
}
|
||||
|
||||
currentProgress = lerp(currentProgress, target, 0.2);
|
||||
currentProgress = lerp(currentProgress, target, INTERVAL_PROGRESS);
|
||||
var properties = {
|
||||
localPosition: { x: (1.85 - (currentProgress / 2) - (-0.029 * (currentProgress / TOTAL_LOADING_PROGRESS))), y: -0.935, z: 0.0 },
|
||||
dimensions: {
|
||||
|
@ -515,7 +516,7 @@
|
|||
if (errorConnectingToDomain) {
|
||||
updateOverlays(errorConnectingToDomain);
|
||||
// setting hover id to invisible
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, {visible: false});
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, { visible: false });
|
||||
endAudio();
|
||||
currentDomain = "no domain";
|
||||
timer = null;
|
||||
|
@ -531,7 +532,7 @@
|
|||
} else if ((physicsEnabled && (currentProgress >= (TOTAL_LOADING_PROGRESS - EPSILON)))) {
|
||||
updateOverlays((physicsEnabled || connectionToDomainFailed));
|
||||
// setting hover id to invisible
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, {visible: false});
|
||||
Overlays.editOverlay(loadingToTheSpotHoverID, { visible: false });
|
||||
endAudio();
|
||||
currentDomain = "no domain";
|
||||
timer = null;
|
||||
|
@ -539,8 +540,8 @@
|
|||
}
|
||||
timer = Script.setTimeout(update, BASIC_TIMER_INTERVAL_MS);
|
||||
}
|
||||
var whiteColor = {red: 255, green: 255, blue: 255};
|
||||
var greyColor = {red: 125, green: 125, blue: 125};
|
||||
var whiteColor = { red: 255, green: 255, blue: 255 };
|
||||
var greyColor = { red: 125, green: 125, blue: 125 };
|
||||
Overlays.mouseReleaseOnOverlay.connect(clickedOnOverlay);
|
||||
Overlays.hoverEnterOverlay.connect(onEnterOverlay);
|
||||
|
||||
|
@ -557,7 +558,11 @@
|
|||
MyAvatar.sensorToWorldScaleChanged.connect(scaleInterstitialPage);
|
||||
MyAvatar.sessionUUIDChanged.connect(function() {
|
||||
var avatarSessionUUID = MyAvatar.sessionUUID;
|
||||
Overlays.editOverlay(loadingSphereID, { parentID: avatarSessionUUID });
|
||||
Overlays.editOverlay(loadingSphereID, {
|
||||
position: Vec3.sum(Vec3.sum(MyAvatar.position, {x: 0.0, y: -1.0, z: 0.0}), Vec3.multiplyQbyV(MyAvatar.orientation, {x: 0, y: 0.95, z: 0})),
|
||||
orientation: Quat.multiply(Quat.fromVec3Degrees({x: 0, y: 180, z: 0}), MyAvatar.orientation),
|
||||
parentID: avatarSessionUUID
|
||||
});
|
||||
});
|
||||
|
||||
var toggle = true;
|
||||
|
|
Loading…
Reference in a new issue