content/hifi-content/angus/handAnim/overrideHandAnimations.js
2022-02-13 21:18:16 +01:00

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