mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 16:41:02 +02:00
Simplified avatar touch code + Fix Typo + Add my avatar to the exclusion list + Explain mouse events
This commit is contained in:
parent
e3d7d65186
commit
d39f7f7a58
1 changed files with 12 additions and 28 deletions
|
@ -20,8 +20,8 @@ var TEXT_MARGIN = 0.025;
|
||||||
|
|
||||||
var HIDE_MS = 10000;
|
var HIDE_MS = 10000;
|
||||||
|
|
||||||
var currentTouchToAnalize = null;
|
var currentTouchToAnalyze = null;
|
||||||
var rayExclusionList = [];
|
var rayExclusionList = []; // Updated at sessionUUID changes
|
||||||
|
|
||||||
var currentlyShownAvatar = {
|
var currentlyShownAvatar = {
|
||||||
avatarID: null,
|
avatarID: null,
|
||||||
|
@ -102,47 +102,26 @@ function touchedAvatar(avatarID, avatarData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function touchBegin(event) {
|
function touchBegin(event) {
|
||||||
var pickRay = Camera.computePickRay(event.x, event.y);
|
currentTouchToAnalyze = event;
|
||||||
var avatarRay = AvatarManager.findRayIntersection(pickRay, [], rayExclusionList);
|
|
||||||
if (avatarRay.intersects) {
|
|
||||||
currentTouchToAnalize = {
|
|
||||||
touchBegin: event,
|
|
||||||
avatarRay: avatarRay
|
|
||||||
};
|
|
||||||
printd("[AVATARNAME] touchBegin intersection " + JSON.stringify(currentTouchToAnalize));
|
|
||||||
} else {
|
|
||||||
printd("[AVATARNAME] touchBegin no intersection");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function touchEnd(event) {
|
function touchEnd(event) {
|
||||||
if (!currentTouchToAnalize) {
|
if (Vec3.distance({x: event.x, y: event.y }, {x: currentTouchToAnalyze.x, y: currentTouchToAnalyze.y}) > MAX_DISTANCE_PX) {
|
||||||
printd("[AVATARNAME] touchEnd no current touch");
|
|
||||||
currentTouchToAnalize = null;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// manage touches only if begin an end do:
|
|
||||||
// - touch/release the same avatar
|
|
||||||
// - minimal distance (so no apparent movent was intended but a touch/click)
|
|
||||||
// - (hold or short click don't matter)
|
|
||||||
|
|
||||||
if (Vec3.distance({x: event.x, y: event.y }, {x: currentTouchToAnalize.touchBegin.x, y: currentTouchToAnalize.touchBegin.y}) > MAX_DISTANCE_PX) {
|
|
||||||
printd("[AVATARNAME] touchEnd moved too much");
|
printd("[AVATARNAME] touchEnd moved too much");
|
||||||
currentTouchToAnalize = null;
|
currentTouchToAnalyze = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var pickRay = Camera.computePickRay(event.x, event.y);
|
var pickRay = Camera.computePickRay(event.x, event.y);
|
||||||
var avatarRay = AvatarManager.findRayIntersection(pickRay, [], rayExclusionList);
|
var avatarRay = AvatarManager.findRayIntersection(pickRay, [], rayExclusionList);
|
||||||
|
|
||||||
if (avatarRay.intersects && avatarRay.avatarID == currentTouchToAnalize.avatarRay.avatarID) {
|
if (avatarRay.intersects) {
|
||||||
touchedAvatar(avatarRay.avatarID, AvatarManager.getAvatar(avatarRay.avatarID));
|
touchedAvatar(avatarRay.avatarID, AvatarManager.getAvatar(avatarRay.avatarID));
|
||||||
} else {
|
} else {
|
||||||
printd("[AVATARNAME] touchEnd released outside the avatar");
|
printd("[AVATARNAME] touchEnd released outside the avatar");
|
||||||
}
|
}
|
||||||
|
|
||||||
currentTouchToAnalize = null;
|
currentTouchToAnalyze = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ending() {
|
function ending() {
|
||||||
|
@ -169,6 +148,11 @@ function init() {
|
||||||
Script.scriptEnding.connect(function () {
|
Script.scriptEnding.connect(function () {
|
||||||
ending();
|
ending();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
rayExclusionList = [MyAvatar.sessionUUID];
|
||||||
|
MyAvatar.sessionUUIDChanged.connect(function() {
|
||||||
|
rayExclusionList = [MyAvatar.sessionUUID];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
Loading…
Reference in a new issue