mirror of
https://github.com/overte-org/overte.git
synced 2025-04-09 01:12:53 +02:00
68 lines
No EOL
2.2 KiB
JavaScript
68 lines
No EOL
2.2 KiB
JavaScript
// graspHands.js
|
|
//
|
|
// Created by James B. Pollack @imgntn -- 11/19/2015
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Shows how to use the animation API to grasp an Avatar's hands.
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
|
|
//choose a hand. set it programatically if you'd like
|
|
var handToGrasp = 'LEFT_HAND';
|
|
|
|
//this is our handler, where we do the actual work of changing animation settings
|
|
function graspHand(animationProperties) {
|
|
var result = {};
|
|
//full alpha on overlay for this hand
|
|
//set grab to true
|
|
//set idle to false
|
|
//full alpha on the blend btw open and grab
|
|
if (handToGrasp === 'RIGHT_HAND') {
|
|
result['rightHandOverlayAlpha'] = 1.0;
|
|
result['isRightHandGrab'] = true;
|
|
result['isRightHandIdle'] = false;
|
|
result['rightHandGrabBlend'] = 1.0;
|
|
} else if (handToGrasp === 'LEFT_HAND') {
|
|
result['leftHandOverlayAlpha'] = 1.0;
|
|
result['isLeftHandGrab'] = true;
|
|
result['isLeftHandIdle'] = false;
|
|
result['leftHandGrabBlend'] = 1.0;
|
|
}
|
|
//return an object with our updated settings
|
|
return result;
|
|
}
|
|
|
|
//keep a reference to this so we can clear it
|
|
var handler;
|
|
|
|
//register our handler with the animation system
|
|
function startHandGrasp() {
|
|
if (handToGrasp === 'RIGHT_HAND') {
|
|
handler = MyAvatar.addAnimationStateHandler(graspHand, ['isRightHandGrab']);
|
|
} else if (handToGrasp === 'LEFT_HAND') {
|
|
handler = MyAvatar.addAnimationStateHandler(graspHand, ['isLeftHandGrab']);
|
|
}
|
|
}
|
|
|
|
function endHandGrasp() {
|
|
// Tell the animation system we don't need any more callbacks.
|
|
MyAvatar.removeAnimationStateHandler(handler);
|
|
}
|
|
|
|
//make sure to clean this up when the script ends so we don't get stuck.
|
|
Script.scriptEnding.connect(function() {
|
|
Script.clearInterval(graspInterval);
|
|
endHandGrasp();
|
|
})
|
|
|
|
//set an interval and toggle grasping
|
|
var isGrasping = false;
|
|
var graspInterval = Script.setInterval(function() {
|
|
if (isGrasping === false) {
|
|
startHandGrasp();
|
|
isGrasping = true;
|
|
} else {
|
|
endHandGrasp();
|
|
isGrasping = false
|
|
}
|
|
}, 1000) |