Combine DISTANCE_HOLDING and CONTINUE_DISTANCE_HOLDING states.

This commit is contained in:
Anthony J. Thibault 2016-06-13 11:59:38 -07:00
parent 213479c530
commit 6d2181f0f1

View file

@ -157,20 +157,19 @@ var STATE_OFF = 0;
var STATE_SEARCHING = 1; var STATE_SEARCHING = 1;
var STATE_HOLD_SEARCHING = 2; var STATE_HOLD_SEARCHING = 2;
var STATE_DISTANCE_HOLDING = 3; var STATE_DISTANCE_HOLDING = 3;
var STATE_CONTINUE_DISTANCE_HOLDING = 4; var STATE_NEAR_GRABBING = 4;
var STATE_NEAR_GRABBING = 5; var STATE_CONTINUE_NEAR_GRABBING = 5;
var STATE_CONTINUE_NEAR_GRABBING = 6; var STATE_NEAR_TRIGGER = 6;
var STATE_NEAR_TRIGGER = 7; var STATE_CONTINUE_NEAR_TRIGGER = 7;
var STATE_CONTINUE_NEAR_TRIGGER = 8; var STATE_FAR_TRIGGER = 8;
var STATE_FAR_TRIGGER = 9; var STATE_CONTINUE_FAR_TRIGGER = 9;
var STATE_CONTINUE_FAR_TRIGGER = 10; var STATE_RELEASE = 10;
var STATE_RELEASE = 11; var STATE_EQUIP = 11;
var STATE_EQUIP = 12; var STATE_HOLD = 12;
var STATE_HOLD = 13; var STATE_CONTINUE_HOLD = 13;
var STATE_CONTINUE_HOLD = 14; var STATE_CONTINUE_EQUIP = 14;
var STATE_CONTINUE_EQUIP = 15; var STATE_WAITING_FOR_RELEASE_THUMB_RELEASE = 15;
var STATE_WAITING_FOR_RELEASE_THUMB_RELEASE = 16; var STATE_WAITING_FOR_EQUIP_THUMB_RELEASE = 16;
var STATE_WAITING_FOR_EQUIP_THUMB_RELEASE = 17;
// "collidesWith" is specified by comma-separated list of group names // "collidesWith" is specified by comma-separated list of group names
// the possible group names are: static, dynamic, kinematic, myAvatar, otherAvatar // the possible group names are: static, dynamic, kinematic, myAvatar, otherAvatar
@ -198,12 +197,9 @@ CONTROLLER_STATE_MACHINE[STATE_HOLD_SEARCHING] = {
}; };
CONTROLLER_STATE_MACHINE[STATE_DISTANCE_HOLDING] = { CONTROLLER_STATE_MACHINE[STATE_DISTANCE_HOLDING] = {
name: "distance_holding", name: "distance_holding",
enterMethod: "distanceHoldingEnter",
updateMethod: "distanceHolding" updateMethod: "distanceHolding"
}; };
CONTROLLER_STATE_MACHINE[STATE_CONTINUE_DISTANCE_HOLDING] = {
name: "continue_distance_holding",
updateMethod: "continueDistanceHolding"
};
CONTROLLER_STATE_MACHINE[STATE_NEAR_GRABBING] = { CONTROLLER_STATE_MACHINE[STATE_NEAR_GRABBING] = {
name: "near_grabbing", name: "near_grabbing",
updateMethod: "nearGrabbing" updateMethod: "nearGrabbing"
@ -1207,7 +1203,7 @@ function MyController(hand) {
return (dimensions.x * dimensions.y * dimensions.z) * density; return (dimensions.x * dimensions.y * dimensions.z) * density;
} }
this.distanceHolding = function() { this.distanceHoldingEnter = function() {
// controller pose is in avatar frame // controller pose is in avatar frame
var avatarControllerPose = var avatarControllerPose =
@ -1256,9 +1252,12 @@ function MyController(hand) {
this.actionTimeout = now + (ACTION_TTL * MSECS_PER_SEC); this.actionTimeout = now + (ACTION_TTL * MSECS_PER_SEC);
if (this.actionID !== null) { if (this.actionID !== null) {
this.setState(STATE_CONTINUE_DISTANCE_HOLDING);
this.activateEntity(this.grabbedEntity, grabbedProperties, false); this.activateEntity(this.grabbedEntity, grabbedProperties, false);
this.callEntityMethodOnGrabbed("startDistanceGrab"); this.callEntityMethodOnGrabbed("startDistanceGrab");
} else {
// addAction failed?
this.setState(STATE_RELEASE);
return;
} }
this.turnOffVisualizations(); this.turnOffVisualizations();
@ -1267,7 +1266,7 @@ function MyController(hand) {
this.previousControllerRotation = controllerRotation; this.previousControllerRotation = controllerRotation;
}; };
this.continueDistanceHolding = function() { this.distanceHolding = function() {
if (this.triggerSmoothedReleased() && this.secondaryReleased()) { if (this.triggerSmoothedReleased() && this.secondaryReleased()) {
this.setState(STATE_RELEASE); this.setState(STATE_RELEASE);
this.callEntityMethodOnGrabbed("releaseGrab"); this.callEntityMethodOnGrabbed("releaseGrab");