diff --git a/examples/controllers/handControllerGrab.js b/examples/controllers/handControllerGrab.js index 4037ae66dc..e756866b1c 100644 --- a/examples/controllers/handControllerGrab.js +++ b/examples/controllers/handControllerGrab.js @@ -66,6 +66,7 @@ var MSEC_PER_SEC = 1000.0; // these control how long an abandoned pointer line will hang around var startTime = Date.now(); var LIFETIME = 10; +var ACTION_LIFETIME = 120; // 2 minutes // states for the state machine var STATE_OFF = 0; @@ -81,16 +82,6 @@ var STATE_RELEASE = 8; var GRAB_USER_DATA_KEY = "grabKey"; var GRABBABLE_DATA_KEY = "grabbableKey"; -// HACK -- until we have collision groups, don't allow held object to collide with avatar -var AVATAR_COLLISIONS_MENU_ITEM = "Enable avatar collisions"; - - -// HACK -- until we have collision groups, don't allow held object to collide with avatar -var initialAvatarCollisionsMenu = Menu.isOptionChecked(AVATAR_COLLISIONS_MENU_ITEM); -var currentAvatarCollisionsMenu = initialAvatarCollisionsMenu; -var noCollisionsCount = 0; // how many hands want collisions disabled? - - function getTag() { return "grab-" + MyAvatar.sessionUUID; } @@ -173,28 +164,6 @@ function MyController(hand, triggerAction) { } }; - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.disableAvatarCollisions = function() { - noCollisionsCount += 1; - if (currentAvatarCollisionsMenu != false) { - currentAvatarCollisionsMenu = false; - Menu.setIsOptionChecked(AVATAR_COLLISIONS_MENU_ITEM, false); - MyAvatar.updateMotionBehaviorFromMenu(); - } - } - - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.revertAvatarCollisions = function() { - noCollisionsCount -= 1; - if (noCollisionsCount < 1) { - if (currentAvatarCollisionsMenu != initialAvatarCollisionsMenu) { - currentAvatarCollisionsMenu = initialAvatarCollisionsMenu; - Menu.setIsOptionChecked(AVATAR_COLLISIONS_MENU_ITEM, initialAvatarCollisionsMenu); - MyAvatar.updateMotionBehaviorFromMenu(); - } - } - } - this.lineOn = function(closePoint, farPoint, color) { // draw a line if (this.pointer === null) { @@ -328,9 +297,6 @@ function MyController(hand, triggerAction) { this.distanceHolding = function() { - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.disableAvatarCollisions(); - var handControllerPosition = Controller.getSpatialControlPosition(this.palm); var handRotation = Quat.multiply(MyAvatar.orientation, Controller.getSpatialControlRawRotation(this.palm)); var grabbedProperties = Entities.getEntityProperties(this.grabbedEntity, ["position", "rotation"]); @@ -349,7 +315,7 @@ function MyController(hand, triggerAction) { targetRotation: this.currentObjectRotation, angularTimeScale: DISTANCE_HOLDING_ACTION_TIMEFRAME, tag: getTag(), - lifetime: 5 + lifetime: ACTION_LIFETIME }); if (this.actionID === NULL_ACTION_ID) { this.actionID = null; @@ -373,9 +339,6 @@ function MyController(hand, triggerAction) { this.continueDistanceHolding = function() { if (this.triggerSmoothedReleased()) { - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.revertAvatarCollisions(); - this.state = STATE_RELEASE; return; } @@ -450,19 +413,13 @@ function MyController(hand, triggerAction) { linearTimeScale: DISTANCE_HOLDING_ACTION_TIMEFRAME, targetRotation: this.currentObjectRotation, angularTimeScale: DISTANCE_HOLDING_ACTION_TIMEFRAME, - lifetime: 5 + lifetime: ACTION_LIFETIME }); }; this.nearGrabbing = function() { - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.disableAvatarCollisions(); - if (this.triggerSmoothedReleased()) { - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.revertAvatarCollisions(); - this.state = STATE_RELEASE; return; } @@ -491,7 +448,7 @@ function MyController(hand, triggerAction) { relativePosition: offsetPosition, relativeRotation: offsetRotation, tag: getTag(), - lifetime: 5 + lifetime: ACTION_LIFETIME }); } if (this.actionID === NULL_ACTION_ID) { @@ -514,9 +471,6 @@ function MyController(hand, triggerAction) { this.continueNearGrabbing = function() { if (this.triggerSmoothedReleased()) { - // HACK -- until we have collision groups, don't allow held object to collide with avatar - this.revertAvatarCollisions(); - this.state = STATE_RELEASE; return; } @@ -539,7 +493,7 @@ function MyController(hand, triggerAction) { this.currentObjectTime = now; Entities.callEntityMethod(this.grabbedEntity, "continueNearGrab"); - Entities.updateAction(this.grabbedEntity, this.actionID, {lifetime: 5}); + Entities.updateAction(this.grabbedEntity, this.actionID, {lifetime: ACTION_LIFETIME}); }; this.nearGrabbingNonColliding = function() { diff --git a/examples/grab.js b/examples/grab.js index 3e0212bbba..43a5ed220b 100644 --- a/examples/grab.js +++ b/examples/grab.js @@ -13,6 +13,7 @@ var MAX_SOLID_ANGLE = 0.01; // objects that appear smaller than this can't be grabbed var ZERO_VEC3 = {x: 0, y: 0, z: 0}; var IDENTITY_QUAT = {x: 0, y: 0, z: 0, w: 0}; +var ACTION_LIFETIME = 120; // 2 minutes function getTag() { return "grab-" + MyAvatar.sessionUUID; @@ -307,7 +308,7 @@ Grabber.prototype.moveEvent = function(event) { } this.currentPosition = entityProperties.position; - var actionArgs = {tag: getTag(), lifetime: 5}; + var actionArgs = {tag: getTag(), lifetime: ACTION_LIFETIME}; if (this.mode === "rotate") { var drag = mouse.getDrag(); @@ -322,7 +323,7 @@ Grabber.prototype.moveEvent = function(event) { // var qZero = entityProperties.rotation; //var qZero = this.lastRotation; this.lastRotation = Quat.multiply(deltaQ, this.lastRotation); - actionArgs = {targetRotation: this.lastRotation, angularTimeScale: 0.1, tag: getTag(), lifetime: 5}; + actionArgs = {targetRotation: this.lastRotation, angularTimeScale: 0.1, tag: getTag(), lifetime: ACTION_LIFETIME}; } else { var newPointOnPlane; if (this.mode === "verticalCylinder") { @@ -346,7 +347,7 @@ Grabber.prototype.moveEvent = function(event) { } } this.targetPosition = Vec3.subtract(newPointOnPlane, this.offset); - actionArgs = {targetPosition: this.targetPosition, linearTimeScale: 0.1, tag: getTag(), lifetime: 5}; + actionArgs = {targetPosition: this.targetPosition, linearTimeScale: 0.1, tag: getTag(), lifetime: ACTION_LIFETIME}; beacon.updatePosition(this.targetPosition); }