154 lines
No EOL
6.3 KiB
JavaScript
154 lines
No EOL
6.3 KiB
JavaScript
//
|
|
// controllers/overrideHandAnimation.js
|
|
//
|
|
// Created by Angus Antley
|
|
// Copyright 2019 High Fidelity, Inc.
|
|
//
|
|
// Default script to override the animation of the hands with user animations
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
/* global Script, MyAvatar, Messages, Controller */
|
|
/* eslint indent: ["error", 4, { "outerIIFEBody": 0 }] */
|
|
|
|
(function() {
|
|
|
|
var animStateHandlerID;
|
|
var leftHandOverlayAlpha = 0;
|
|
var rightHandOverlayAlpha = 0;
|
|
|
|
var isLeftIndexPointing = false;
|
|
var isLeftThumbRaised = false;
|
|
var isLeftTrigger = false;
|
|
|
|
var isRightIndexPointing = false;
|
|
var isRightThumbRaised = false;
|
|
var isRightTrigger = false;
|
|
|
|
|
|
function init() {
|
|
Script.update.connect(update);
|
|
animStateHandlerID = MyAvatar.addAnimationStateHandler(
|
|
animStateHandler,
|
|
[
|
|
"leftHandOverlayAlpha",
|
|
"rightHandOverlayAlpha"
|
|
]
|
|
);
|
|
}
|
|
|
|
function animStateHandler(props) {
|
|
return {
|
|
leftHandOverlayAlpha: leftHandOverlayAlpha,
|
|
rightHandOverlayAlpha: rightHandOverlayAlpha
|
|
};
|
|
}
|
|
|
|
|
|
function update(dt) {
|
|
var rightHandPose = Controller.getPoseValue(Controller.Standard.RightHand);
|
|
var leftHandPose = Controller.getPoseValue(Controller.Standard.LeftHand);
|
|
|
|
var previousRightIndexPointing = isRightIndexPointing;
|
|
var previousRightThumbRaised = isRightThumbRaised;
|
|
var previousRightTrigger = isRightTrigger;
|
|
|
|
var previousLeftIndexPointing = isLeftIndexPointing;
|
|
var previousLeftThumbRaised = isLeftThumbRaised;
|
|
var previousLeftTrigger = isLeftTrigger;
|
|
|
|
// Pointing index fingers and raising thumbs
|
|
isRightIndexPointing = (rightHandPose.valid && Controller.getValue(Controller.Standard.RightIndexPoint) === 1);
|
|
isRightThumbRaised = (rightHandPose.valid && Controller.getValue(Controller.Standard.RightThumbUp) === 1);
|
|
isRightTrigger = (Controller.getValue(Controller.Standard.RightGrip) === 1);
|
|
|
|
isLeftIndexPointing = (leftHandPose.valid && Controller.getValue(Controller.Standard.LeftIndexPoint) === 1);
|
|
isLeftThumbRaised = (leftHandPose.valid && Controller.getValue(Controller.Standard.LeftThumbUp) === 1);
|
|
isLeftTrigger = (Controller.getValue(Controller.Standard.LeftGrip) === 1);
|
|
|
|
if (previousRightIndexPointing !== isRightIndexPointing){
|
|
if ((isRightIndexPointing === true) && (isRightTrigger === false)){
|
|
rightHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(false, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_horns_right.fbx",30.0,true,0,99);
|
|
} else if ((isRightIndexPointing === true) && (isRightTrigger === true)) {
|
|
rightHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(false, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_shaka_right.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(false);
|
|
rightHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
if (previousRightThumbRaised !== isRightThumbRaised){
|
|
if ((isRightThumbRaised === false) && (isRightTrigger === false)){
|
|
rightHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(false, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_peace_right.fbx",30.0,true,0,99);
|
|
} else if ((isRightThumbRaised === false) && (isRightTrigger === true)){
|
|
rightHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(false, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_okay_right.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(false);
|
|
rightHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
if (previousRightTrigger !== isRightTrigger){
|
|
if ((isRightTrigger === true) && (isRightThumbRaised === true) && (isRightIndexPointing === false)){
|
|
rightHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(false, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_heart_right.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(false);
|
|
rightHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
if (previousLeftIndexPointing !== isLeftIndexPointing){
|
|
if ((isLeftIndexPointing === true) && (isLeftTrigger === false)){
|
|
leftHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(true, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_horns_left.fbx",30.0,true,0,99);
|
|
} else if ((isLeftIndexPointing === true) && (isLeftTrigger === true)) {
|
|
leftHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(true, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_shaka_left.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(true);
|
|
leftHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
if (previousLeftThumbRaised !== isLeftThumbRaised){
|
|
if ((isLeftThumbRaised === false) && (isLeftTrigger === false)){
|
|
leftHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(true, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_peace_left.fbx",30.0,true,0,99);
|
|
} else if ((isLeftThumbRaised === false) && (isLeftTrigger === true)){
|
|
leftHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(true, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_okay_left.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(true);
|
|
leftHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
if (previousLeftTrigger !== isLeftTrigger){
|
|
if ((isLeftTrigger === true) && (isLeftThumbRaised === true) && (isLeftIndexPointing === false)){
|
|
leftHandOverlayAlpha = 1.0;
|
|
MyAvatar.overrideHandAnimation(true, "https://hifi-content.s3.amazonaws.com/angus/handAnim/emote_heart_left.fbx",30.0,true,0,99);
|
|
} else {
|
|
MyAvatar.restoreHandAnimation(true);
|
|
leftHandOverlayAlpha = 0.0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
function shutdown() {
|
|
Script.update.disconnect(update);
|
|
MyAvatar.removeAnimationStateHandler(animStateHandlerID);
|
|
}
|
|
|
|
Script.scriptEnding.connect(shutdown);
|
|
|
|
init();
|
|
|
|
}()); // end local scope
|