Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
78 lines
No EOL
2.6 KiB
JavaScript
78 lines
No EOL
2.6 KiB
JavaScript
//
|
|
// squeezeHands.js
|
|
// examples
|
|
//
|
|
// Created by Philip Rosedale on June 4, 2014
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
Script.include("libraries/globals.js");
|
|
|
|
var rightHandAnimation = HIFI_PUBLIC_BUCKET + "animations/RightHandAnimPhilip.fbx";
|
|
var leftHandAnimation = HIFI_PUBLIC_BUCKET + "animations/LeftHandAnimPhilip.fbx";
|
|
|
|
var LEFT = 0;
|
|
var RIGHT = 1;
|
|
|
|
var lastLeftFrame = 0;
|
|
var lastRightFrame = 0;
|
|
|
|
var leftDirection = true;
|
|
var rightDirection = true;
|
|
|
|
var LAST_FRAME = 15.0; // What is the number of the last frame we want to use in the animation?
|
|
var SMOOTH_FACTOR = 0.0;
|
|
var MAX_FRAMES = 30.0;
|
|
|
|
Script.update.connect(function(deltaTime) {
|
|
var leftTriggerValue = Controller.getTriggerValue(LEFT);
|
|
var rightTriggerValue = Controller.getTriggerValue(RIGHT);
|
|
|
|
var leftFrame, rightFrame;
|
|
|
|
// Average last few trigger frames together for a bit of smoothing
|
|
leftFrame = (leftTriggerValue * LAST_FRAME) * (1.0 - SMOOTH_FACTOR) + lastLeftFrame * SMOOTH_FACTOR;
|
|
rightFrame = (rightTriggerValue * LAST_FRAME) * (1.0 - SMOOTH_FACTOR) + lastRightFrame * SMOOTH_FACTOR;
|
|
|
|
if (!leftDirection) {
|
|
leftFrame = MAX_FRAMES - leftFrame;
|
|
}
|
|
if (!rightDirection) {
|
|
rightFrame = MAX_FRAMES - rightFrame;
|
|
}
|
|
|
|
if ((leftTriggerValue == 1.0) && (leftDirection == true)) {
|
|
leftDirection = false;
|
|
lastLeftFrame = MAX_FRAMES - leftFrame;
|
|
} else if ((leftTriggerValue == 0.0) && (leftDirection == false)) {
|
|
leftDirection = true;
|
|
lastLeftFrame = leftFrame;
|
|
}
|
|
if ((rightTriggerValue == 1.0) && (rightDirection == true)) {
|
|
rightDirection = false;
|
|
lastRightFrame = MAX_FRAMES - rightFrame;
|
|
} else if ((rightTriggerValue == 0.0) && (rightDirection == false)) {
|
|
rightDirection = true;
|
|
lastRightFrame = rightFrame;
|
|
}
|
|
|
|
if ((leftFrame != lastLeftFrame) && leftHandAnimation.length){
|
|
MyAvatar.stopAnimation(leftHandAnimation);
|
|
MyAvatar.startAnimation(leftHandAnimation, 30.0, 1.0, false, true, leftFrame, leftFrame);
|
|
}
|
|
if ((rightFrame != lastRightFrame) && rightHandAnimation.length) {
|
|
MyAvatar.stopAnimation(rightHandAnimation);
|
|
MyAvatar.startAnimation(rightHandAnimation, 30.0, 1.0, false, true, rightFrame, rightFrame);
|
|
}
|
|
|
|
lastLeftFrame = leftFrame;
|
|
lastRightFrame = rightFrame;
|
|
});
|
|
|
|
Script.scriptEnding.connect(function() {
|
|
MyAvatar.stopAnimation(leftHandAnimation);
|
|
MyAvatar.stopAnimation(rightHandAnimation);
|
|
}); |