Skip to content

Instantly share code, notes, and snippets.

@hyperlogic
Created September 5, 2019 20:54
Show Gist options
  • Save hyperlogic/62a3ac186f8768c81aa2f8768936fcd6 to your computer and use it in GitHub Desktop.
Save hyperlogic/62a3ac186f8768c81aa2f8768936fcd6 to your computer and use it in GitHub Desktop.
// Identifier for the animation state handler, we use this to remove the handler at the end of the script.
var animHandlerId;
var testTrigger = false;
var additiveBlendAlpha = 0.0;
var lookLeftRightAlpha = 0.0;
var lookUpDownAlpha = 0.0;
// Called every frame with the current value for the requested anim vars.
function animHandler(props) {
props.additiveBlendAlpha = additiveBlendAlpha;
props.lookAroundAlpha = {x: lookLeftRightAlpha, y: lookUpDownAlpha, z: 0};
props.testTrigger = testTrigger;
// clear triggers
testTrigger = false;
return props;
}
var ANIMVARLIST = [
"additiveBlendAlpha",
"lookAroundAlpha",
"testTrigger"
];
function init() {
var URL = "https://gist.githubusercontent.com/hyperlogic/651237c9c084c898f47d6d4e47e2dcc0/raw/778bbc6b9dd11a77d92ea1b49b4fef2a300f9f39/directional-blend-test.json";
//var URL = "file:///c:/msys64/home/ajthy/code/hifi/interface/resources/avatar/directional-test.json";
MyAvatar.setAnimGraphUrl(URL);
animHandlerId = MyAvatar.addAnimationStateHandler(animHandler, ANIMVARLIST);
Controller.keyPressEvent.connect(keyPressHandler);
}
var MIN_ADDITIVE_BLEND_ALPHA = 0;
var MAX_ADDITIVE_BLEND_ALPHA = 1;
var DELTA_ADDITIVE_BLEND_ALPHA = 0.05;
var MIN_LOOK_LEFT_RIGHT_ALPHA = -1;
var MAX_LOOK_LEFT_RIGHT_ALPHA = 1;
var DELTA_LOOK_LEFT_RIGHT_ALPHA = 0.05;
var MIN_LOOK_UP_DOWN_ALPHA = -1;
var MAX_LOOK_UP_DOWN_ALPHA = 1;
var DELTA_LOOK_UP_DOWN_ALPHA = 0.05;
function keyPressHandler(event) {
if (event.text === "t") {
testTrigger = true;
} else if (event.text === ",") {
additiveBlendAlpha = additiveBlendAlpha - DELTA_ADDITIVE_BLEND_ALPHA;
if (additiveBlendAlpha < MIN_ADDITIVE_BLEND_ALPHA) {
additiveBlendAlpha = MIN_ADDITIVE_BLEND_ALPHA;
}
} else if (event.text === ".") {
additiveBlendAlpha = additiveBlendAlpha + DELTA_ADDITIVE_BLEND_ALPHA;
if (additiveBlendAlpha > MAX_ADDITIVE_BLEND_ALPHA) {
additiveBlendAlpha = MAX_ADDITIVE_BLEND_ALPHA;
}
} else if (event.text === "[") {
lookLeftRightAlpha = lookLeftRightAlpha - DELTA_LOOK_LEFT_RIGHT_ALPHA;
if (lookLeftRightAlpha < MIN_LOOK_LEFT_RIGHT_ALPHA) {
lookLeftRightAlpha = MIN_LOOK_LEFT_RIGHT_ALPHA;
}
} else if (event.text === "]") {
lookLeftRightAlpha = lookLeftRightAlpha + DELTA_LOOK_LEFT_RIGHT_ALPHA;
if (lookLeftRightAlpha > MAX_LOOK_LEFT_RIGHT_ALPHA) {
lookLeftRightAlpha = MAX_LOOK_LEFT_RIGHT_ALPHA;
}
} else if (event.text === "i") {
lookUpDownAlpha = lookUpDownAlpha - DELTA_LOOK_UP_DOWN_ALPHA;
if (lookUpDownAlpha < MIN_LOOK_UP_DOWN_ALPHA) {
lookUpDownAlpha = MIN_LOOK_UP_DOWN_ALPHA;
}
} else if (event.text === "o") {
lookUpDownAlpha = lookUpDownAlpha + DELTA_LOOK_UP_DOWN_ALPHA;
if (lookUpDownAlpha > MAX_LOOK_UP_DOWN_ALPHA) {
lookUpDownAlpha = MAX_LOOK_UP_DOWN_ALPHA;
}
}
}
function shutdown() {
MyAvatar.removeAnimationStateHandler(animHandlerId);
MyAvatar.restoreAnimation();
var ORIG_URL = "qrc:///avatar/avatar-animation.json";
MyAvatar.setAnimGraphUrl(ORIG_URL);
}
Script.scriptEnding.connect(shutdown);
init();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment