mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 15:09:24 +02:00
Merge pull request #11464 from druiz17/controller-dispatacher-bugs
fix auto dropping and re-grabbing loop
This commit is contained in:
commit
410baaf7bc
1 changed files with 9 additions and 4 deletions
|
@ -148,9 +148,12 @@ Script.include("/~/system/libraries/cloneEntityUtils.js");
|
||||||
if (now - this.lastUnequipCheckTime > MSECS_PER_SEC * TEAR_AWAY_CHECK_TIME) {
|
if (now - this.lastUnequipCheckTime > MSECS_PER_SEC * TEAR_AWAY_CHECK_TIME) {
|
||||||
this.lastUnequipCheckTime = now;
|
this.lastUnequipCheckTime = now;
|
||||||
if (props.parentID == AVATAR_SELF_ID) {
|
if (props.parentID == AVATAR_SELF_ID) {
|
||||||
|
var sensorScaleFactor = MyAvatar.sensorToWorldScale;
|
||||||
var handPosition = controllerData.controllerLocations[this.hand].position;
|
var handPosition = controllerData.controllerLocations[this.hand].position;
|
||||||
var dist = distanceBetweenPointAndEntityBoundingBox(handPosition, props);
|
var dist = distanceBetweenPointAndEntityBoundingBox(handPosition, props);
|
||||||
if (dist > TEAR_AWAY_DISTANCE) {
|
var distance = Vec3.distance(props.position, handPosition);
|
||||||
|
if ((dist > TEAR_AWAY_DISTANCE) ||
|
||||||
|
(distance > NEAR_GRAB_RADIUS * sensorScaleFactor)) {
|
||||||
this.autoUnequipCounter++;
|
this.autoUnequipCounter++;
|
||||||
} else {
|
} else {
|
||||||
this.autoUnequipCounter = 0;
|
this.autoUnequipCounter = 0;
|
||||||
|
@ -184,7 +187,7 @@ Script.include("/~/system/libraries/cloneEntityUtils.js");
|
||||||
var previousParentID = _this.previousParentID[childID];
|
var previousParentID = _this.previousParentID[childID];
|
||||||
var previousParentJointIndex = _this.previousParentJointIndex[childID];
|
var previousParentJointIndex = _this.previousParentJointIndex[childID];
|
||||||
|
|
||||||
// The main flaw with keeping track of previous parantage in individual scripts is:
|
// The main flaw with keeping track of previous parentage in individual scripts is:
|
||||||
// (1) A grabs something (2) B takes it from A (3) A takes it from B (4) A releases it
|
// (1) A grabs something (2) B takes it from A (3) A takes it from B (4) A releases it
|
||||||
// now A and B will take turns passing it back to the other. Detect this and stop the loop here...
|
// now A and B will take turns passing it back to the other. Detect this and stop the loop here...
|
||||||
var UNHOOK_LOOP_DETECT_MS = 200;
|
var UNHOOK_LOOP_DETECT_MS = 200;
|
||||||
|
@ -214,8 +217,10 @@ Script.include("/~/system/libraries/cloneEntityUtils.js");
|
||||||
for (var i = 0; i < nearbyEntityProperties.length; i++) {
|
for (var i = 0; i < nearbyEntityProperties.length; i++) {
|
||||||
var props = nearbyEntityProperties[i];
|
var props = nearbyEntityProperties[i];
|
||||||
var handPosition = controllerData.controllerLocations[this.hand].position;
|
var handPosition = controllerData.controllerLocations[this.hand].position;
|
||||||
var distance = Vec3.distance(props.position, handPosition);
|
var dist = distanceBetweenPointAndEntityBoundingBox(handPosition, props);
|
||||||
if (distance > NEAR_GRAB_RADIUS * sensorScaleFactor) {
|
var distance = Vec3.distance(handPosition, props.position);
|
||||||
|
if ((dist > TEAR_AWAY_DISTANCE) ||
|
||||||
|
(distance > NEAR_GRAB_RADIUS * sensorScaleFactor)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (entityIsGrabbable(props)) {
|
if (entityIsGrabbable(props)) {
|
||||||
|
|
Loading…
Reference in a new issue