mirror of
https://github.com/overte-org/overte.git
synced 2025-04-29 22:42:42 +02:00
2690 lines
No EOL
86 KiB
JavaScript
2690 lines
No EOL
86 KiB
JavaScript
//
|
||
// walkInterface.js
|
||
//
|
||
// version 1.001
|
||
//
|
||
// Created by David Wooldridge, Autumn 2014
|
||
//
|
||
// Presents the UI for the walk.js script v1.1
|
||
//
|
||
// Distributed under the Apache License, Version 2.0.
|
||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||
//
|
||
|
||
walkInterface = (function() {
|
||
|
||
// controller element positions and dimensions
|
||
var _backgroundWidth = 350;
|
||
var _backgroundHeight = 700;
|
||
var _backgroundX = Window.innerWidth - _backgroundWidth - 58;
|
||
var _backgroundY = Window.innerHeight / 2 - _backgroundHeight / 2;
|
||
var _minSliderX = _backgroundX + 30;
|
||
var _sliderRangeX = 295 - 30;
|
||
var _jointsControlWidth = 200;
|
||
var _jointsControlHeight = 300;
|
||
var _jointsControlX = _backgroundX + _backgroundWidth / 2 - _jointsControlWidth / 2;
|
||
var _jointsControlY = _backgroundY + 242 - _jointsControlHeight / 2;
|
||
var _buttonsY = 20; // distance from top of panel to menu buttons
|
||
var _bigButtonsY = 408; // distance from top of panel to top of first big button
|
||
|
||
// arrays of overlay names
|
||
var _sliderThumbOverlays = [];
|
||
var _backgroundOverlays = [];
|
||
var _buttonOverlays = [];
|
||
var _jointsControlOverlays = [];
|
||
var _bigbuttonOverlays = [];
|
||
|
||
// reference to the internal state
|
||
var _state = {
|
||
editingTranslation: false
|
||
};
|
||
|
||
// reference to the Motion object
|
||
var _motion = null;
|
||
|
||
var _walkAssets = null;
|
||
|
||
// constants
|
||
var MAX_WALK_SPEED = 1257;
|
||
|
||
// look and feel
|
||
var momentaryButtonTimer = null;
|
||
|
||
// all slider controls have a range (with the exception of phase controls that are always +-180)
|
||
var _sliderRanges = {
|
||
"joints": [{
|
||
"name": "hips",
|
||
"pitchRange": 12,
|
||
"yawRange": 18,
|
||
"rollRange": 12,
|
||
"pitchOffsetRange": 25,
|
||
"yawOffsetRange": 25,
|
||
"rollOffsetRange": 25,
|
||
"swayRange": 0.12,
|
||
"bobRange": 0.05,
|
||
"thrustRange": 0.05,
|
||
"swayOffsetRange": 0.25,
|
||
"bobOffsetRange": 0.25,
|
||
"thrustOffsetRange": 0.25
|
||
}, {
|
||
"name": "upperLegs",
|
||
"pitchRange": 30,
|
||
"yawRange": 35,
|
||
"rollRange": 35,
|
||
"pitchOffsetRange": 20,
|
||
"yawOffsetRange": 20,
|
||
"rollOffsetRange": 20
|
||
}, {
|
||
"name": "lowerLegs",
|
||
"pitchRange": 10,
|
||
"yawRange": 20,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 20,
|
||
"rollOffsetRange": 20
|
||
}, {
|
||
"name": "feet",
|
||
"pitchRange": 10,
|
||
"yawRange": 20,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 50,
|
||
"rollOffsetRange": 50
|
||
}, {
|
||
"name": "toes",
|
||
"pitchRange": 90,
|
||
"yawRange": 20,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 90,
|
||
"yawOffsetRange": 20,
|
||
"rollOffsetRange": 20
|
||
}, {
|
||
"name": "spine",
|
||
"pitchRange": 40,
|
||
"yawRange": 40,
|
||
"rollRange": 40,
|
||
"pitchOffsetRange": 90,
|
||
"yawOffsetRange": 50,
|
||
"rollOffsetRange": 50
|
||
}, {
|
||
"name": "spine1",
|
||
"pitchRange": 20,
|
||
"yawRange": 40,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 90,
|
||
"yawOffsetRange": 50,
|
||
"rollOffsetRange": 50
|
||
}, {
|
||
"name": "spine2",
|
||
"pitchRange": 20,
|
||
"yawRange": 40,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 90,
|
||
"yawOffsetRange": 50,
|
||
"rollOffsetRange": 50
|
||
}, {
|
||
"name": "shoulders",
|
||
"pitchRange": 35,
|
||
"yawRange": 40,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 180,
|
||
"rollOffsetRange": 180
|
||
}, {
|
||
"name": "upperArms",
|
||
"pitchRange": 90,
|
||
"yawRange": 90,
|
||
"rollRange": 90,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 180,
|
||
"rollOffsetRange": 180
|
||
}, {
|
||
"name": "lowerArms",
|
||
"pitchRange": 90,
|
||
"yawRange": 90,
|
||
"rollRange": 120,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 180,
|
||
"rollOffsetRange": 180
|
||
}, {
|
||
"name": "hands",
|
||
"pitchRange": 90,
|
||
"yawRange": 180,
|
||
"rollRange": 90,
|
||
"pitchOffsetRange": 180,
|
||
"yawOffsetRange": 180,
|
||
"rollOffsetRange": 180
|
||
}, {
|
||
"name": "head",
|
||
"pitchRange": 20,
|
||
"yawRange": 20,
|
||
"rollRange": 20,
|
||
"pitchOffsetRange": 90,
|
||
"yawOffsetRange": 90,
|
||
"rollOffsetRange": 90
|
||
}]
|
||
};
|
||
|
||
// load overlay images
|
||
var _controlsMinimisedTab = Overlays.addOverlay("image", {
|
||
x: Window.innerWidth - 58,
|
||
y: Window.innerHeight - 145,
|
||
width: 50,
|
||
height: 50,
|
||
imageURL: pathToAssets + 'overlay-images/ddao-minimise-tab.png',
|
||
visible: true,
|
||
alpha: 0.9
|
||
});
|
||
|
||
var _controlsBackground = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX,
|
||
y: _backgroundY,
|
||
width: _backgroundWidth,
|
||
height: _backgroundHeight
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_backgroundOverlays.push(_controlsBackground);
|
||
|
||
var _controlsBackgroundWalkEditStyles = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX,
|
||
y: _backgroundY,
|
||
width: _backgroundWidth,
|
||
height: _backgroundHeight
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-styles.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_backgroundOverlays.push(_controlsBackgroundWalkEditStyles);
|
||
|
||
var _controlsBackgroundWalkEditTweaks = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX,
|
||
y: _backgroundY,
|
||
width: _backgroundWidth,
|
||
height: _backgroundHeight
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-tweaks.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_backgroundOverlays.push(_controlsBackgroundWalkEditTweaks);
|
||
|
||
var _controlsBackgroundWalkEditHipTrans = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX,
|
||
y: _backgroundY,
|
||
width: _backgroundWidth,
|
||
height: _backgroundHeight
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-translation.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_backgroundOverlays.push(_controlsBackgroundWalkEditHipTrans);
|
||
|
||
var _controlsBackgroundWalkEditJoints = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX,
|
||
y: _backgroundY,
|
||
width: _backgroundWidth,
|
||
height: _backgroundHeight
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-joints.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_backgroundOverlays.push(_controlsBackgroundWalkEditJoints);
|
||
|
||
// load character joint selection control images
|
||
var _hipsJointsTranslation = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-hips-translation.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_hipsJointsTranslation);
|
||
|
||
var _hipsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-hips.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_hipsJointControl);
|
||
|
||
var _upperLegsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-upper-legs.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_upperLegsJointControl);
|
||
|
||
var _lowerLegsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-lower-legs.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_lowerLegsJointControl);
|
||
|
||
var _feetJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-feet.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_feetJointControl);
|
||
|
||
var _toesJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-toes.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_toesJointControl);
|
||
|
||
var _spineJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-spine.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_spineJointControl);
|
||
|
||
var _spine1JointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-spine1.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_spine1JointControl);
|
||
|
||
var _spine2JointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-spine2.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_spine2JointControl);
|
||
|
||
var _shouldersJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-shoulders.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_shouldersJointControl);
|
||
|
||
var _upperArmsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-upper-arms.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_upperArmsJointControl);
|
||
|
||
var _forearmsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-forearms.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_forearmsJointControl);
|
||
|
||
var _handsJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-hands.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_handsJointControl);
|
||
|
||
var _headJointControl = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _jointsControlX,
|
||
y: _jointsControlY,
|
||
width: 200,
|
||
height: 300
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-background-edit-head.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_jointsControlOverlays.push(_headJointControl);
|
||
|
||
|
||
// slider thumb overlays
|
||
var _sliderOne = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderOne);
|
||
|
||
var _sliderTwo = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderTwo);
|
||
|
||
var _sliderThree = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderThree);
|
||
|
||
var _sliderFour = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderFour);
|
||
|
||
var _sliderFive = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderFive);
|
||
|
||
var _sliderSix = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderSix);
|
||
|
||
var _sliderSeven = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderSeven);
|
||
|
||
var _sliderEight = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderEight);
|
||
|
||
var _sliderNine = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: 0,
|
||
y: 0,
|
||
width: 25,
|
||
height: 25
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-slider-handle.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_sliderThumbOverlays.push(_sliderNine);
|
||
|
||
|
||
// button overlays
|
||
var _onButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 20,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-on-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_onButton);
|
||
|
||
var _offButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 20,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-off-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_offButton);
|
||
|
||
var _configWalkButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-walk-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkButton);
|
||
|
||
var _configWalkButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-walk-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkButtonSelected);
|
||
|
||
var _configStandButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-stand-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configStandButton);
|
||
|
||
var _configStandButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-stand-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configStandButtonSelected);
|
||
|
||
var _configFlyingButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingButton);
|
||
|
||
var _configFlyingButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingButtonSelected);
|
||
|
||
var _configFlyingUpButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-up-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingUpButton);
|
||
|
||
var _configFlyingUpButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-up-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingUpButtonSelected);
|
||
|
||
var _configFlyingDownButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-down-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingDownButton);
|
||
|
||
var _configFlyingDownButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-fly-down-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configFlyingDownButtonSelected);
|
||
|
||
var _hideButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 272,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-hide-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_hideButton);
|
||
|
||
var _hideButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 272,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-hide-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_hideButtonSelected);
|
||
|
||
var _configWalkStylesButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-styles-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkStylesButton);
|
||
|
||
var _configWalkStylesButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-styles-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkStylesButtonSelected);
|
||
|
||
var _configWalkTweaksButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-tweaks-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkTweaksButton);
|
||
|
||
var _configWalkTweaksButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 146,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-tweaks-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkTweaksButtonSelected);
|
||
|
||
var _configSideStepLeftButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-sidestep-left-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configSideStepLeftButton);
|
||
|
||
var _configSideStepLeftButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 83,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-sidestep-left-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configSideStepLeftButtonSelected);
|
||
|
||
var _configSideStepRightButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-sidestep-right-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configSideStepRightButton);
|
||
|
||
var _configSideStepRightButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-edit-sidestep-right-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configSideStepRightButtonSelected);
|
||
|
||
var _configWalkJointsButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-joints-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkJointsButton);
|
||
|
||
var _configWalkJointsButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 209,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-joints-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_configWalkJointsButtonSelected);
|
||
|
||
var _backButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 272,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-back-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_backButton);
|
||
|
||
var _backButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + 272,
|
||
y: _backgroundY + _buttonsY,
|
||
width: 60,
|
||
height: 47
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-back-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_buttonOverlays.push(_backButtonSelected);
|
||
|
||
// big button overlays - front panel
|
||
var _femaleBigButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-female-big-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_femaleBigButton);
|
||
|
||
var _femaleBigButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-female-big-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_femaleBigButtonSelected);
|
||
|
||
var _maleBigButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 60,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-male-big-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_maleBigButton);
|
||
|
||
var _maleBigButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 60,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-male-big-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_maleBigButtonSelected);
|
||
|
||
var _armsFreeBigButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 120,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-arms-free-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_armsFreeBigButton);
|
||
|
||
var _armsFreeBigButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 120,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-arms-free-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_armsFreeBigButtonSelected);
|
||
|
||
var _footstepsBigButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 180,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-footsteps-big-button.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_footstepsBigButton);
|
||
|
||
var _footstepsBigButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY + 180,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-footsteps-big-button-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_footstepsBigButtonSelected);
|
||
|
||
|
||
// walk styles
|
||
_bigButtonsY = 121;
|
||
var _standardWalkBigButton = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-select-button-standard.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_standardWalkBigButton);
|
||
|
||
var _standardWalkBigButtonSelected = Overlays.addOverlay("image", {
|
||
bounds: {
|
||
x: _backgroundX + _backgroundWidth / 2 - 115,
|
||
y: _backgroundY + _bigButtonsY,
|
||
width: 230,
|
||
height: 36
|
||
},
|
||
imageURL: pathToAssets + "overlay-images/ddao-walk-select-button-standard-selected.png",
|
||
color: {
|
||
red: 255,
|
||
green: 255,
|
||
blue: 255
|
||
},
|
||
alpha: 1,
|
||
visible: false
|
||
});
|
||
_bigbuttonOverlays.push(_standardWalkBigButtonSelected);
|
||
|
||
// various show / hide GUI element functions
|
||
function minimiseDialog(minimise) {
|
||
|
||
if (momentaryButtonTimer) {
|
||
Script.clearInterval(momentaryButtonTimer);
|
||
momentaryButtonTimer = null;
|
||
}
|
||
|
||
if (minimise) {
|
||
setBackground();
|
||
hideMenuButtons();
|
||
setSliderThumbsVisible(false);
|
||
hideJointSelectors();
|
||
initialiseFrontPanel(false);
|
||
Overlays.editOverlay(_controlsMinimisedTab, {
|
||
visible: true
|
||
});
|
||
} else {
|
||
Overlays.editOverlay(_controlsMinimisedTab, {
|
||
visible: false
|
||
});
|
||
}
|
||
};
|
||
|
||
function setBackground(backgroundID) {
|
||
for (var i in _backgroundOverlays) {
|
||
if (_backgroundOverlays[i] === backgroundID) {
|
||
Overlays.editOverlay(_backgroundOverlays[i], {
|
||
visible: true
|
||
});
|
||
} else {
|
||
Overlays.editOverlay(_backgroundOverlays[i], { visible: false });
|
||
}
|
||
}
|
||
};
|
||
|
||
// top row menu type buttons (on | walk | stand | fly | hide)
|
||
function hideMenuButtons() {
|
||
for (var i in _buttonOverlays) {
|
||
Overlays.editOverlay(_buttonOverlays[i], { visible: false });
|
||
}
|
||
};
|
||
|
||
function hideJointSelectors() {
|
||
for (var i in _jointsControlOverlays) {
|
||
Overlays.editOverlay(_jointsControlOverlays[i], {
|
||
visible: false
|
||
});
|
||
}
|
||
};
|
||
|
||
function setSliderThumbsVisible(thumbsVisible) {
|
||
for (var i = 0; i < _sliderThumbOverlays.length; i++) {
|
||
Overlays.editOverlay(_sliderThumbOverlays[i], {
|
||
visible: thumbsVisible
|
||
});
|
||
}
|
||
};
|
||
|
||
function setButtonOverlayVisible(buttonOverlayName) {
|
||
for (var i in _buttonOverlays) {
|
||
if (_buttonOverlays[i] === buttonOverlayName) {
|
||
Overlays.editOverlay(buttonOverlayName, { visible: true });
|
||
}
|
||
}
|
||
};
|
||
|
||
function initialiseFrontPanel(showButtons) {
|
||
|
||
if (_motion.avatarGender === FEMALE) {
|
||
Overlays.editOverlay(_femaleBigButtonSelected, {
|
||
visible: showButtons
|
||
});
|
||
Overlays.editOverlay(_femaleBigButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_maleBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_maleBigButton, {
|
||
visible: showButtons
|
||
});
|
||
|
||
} else {
|
||
|
||
Overlays.editOverlay(_femaleBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_femaleBigButton, {
|
||
visible: showButtons
|
||
});
|
||
Overlays.editOverlay(_maleBigButtonSelected, {
|
||
visible: showButtons
|
||
});
|
||
Overlays.editOverlay(_maleBigButton, {
|
||
visible: false
|
||
});
|
||
}
|
||
if (_motion.armsFree) {
|
||
Overlays.editOverlay(_armsFreeBigButtonSelected, {
|
||
visible: showButtons
|
||
});
|
||
Overlays.editOverlay(_armsFreeBigButton, {
|
||
visible: false
|
||
});
|
||
|
||
} else {
|
||
|
||
Overlays.editOverlay(_armsFreeBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_armsFreeBigButton, {
|
||
visible: showButtons
|
||
});
|
||
}
|
||
if (_motion.makesFootStepSounds) {
|
||
Overlays.editOverlay(_footstepsBigButtonSelected, {
|
||
visible: showButtons
|
||
});
|
||
Overlays.editOverlay(_footstepsBigButton, {
|
||
visible: false
|
||
});
|
||
|
||
} else {
|
||
|
||
Overlays.editOverlay(_footstepsBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_footstepsBigButton, {
|
||
visible: showButtons
|
||
});
|
||
}
|
||
};
|
||
|
||
function initialiseWalkStylesPanel(showButtons) {
|
||
|
||
// set all big buttons to hidden, but skip the first 8, as are used by the front panel
|
||
for (var i = 8; i < _bigbuttonOverlays.length; i++) {
|
||
Overlays.editOverlay(_bigbuttonOverlays[i], {
|
||
visible: false
|
||
});
|
||
}
|
||
|
||
if (!showButtons) {
|
||
return;
|
||
}
|
||
|
||
// set all the non-selected ones to showing
|
||
for (var i = 8; i < _bigbuttonOverlays.length; i += 2) {
|
||
Overlays.editOverlay(_bigbuttonOverlays[i], { visible: true });
|
||
}
|
||
|
||
// set the currently selected one
|
||
if (_motion.selWalk === _walkAssets.femaleStandardWalk ||
|
||
_motion.selWalk === _walkAssets.maleStandardWalk) {
|
||
|
||
Overlays.editOverlay(_standardWalkBigButtonSelected, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_standardWalkBigButton, {
|
||
visible: false
|
||
});
|
||
}
|
||
};
|
||
|
||
function initialiseWalkTweaksPanel() {
|
||
|
||
// sliders for commonly required walk adjustments
|
||
var i = 0;
|
||
var yLocation = _backgroundY + 71;
|
||
|
||
// walk speed
|
||
var sliderXPos = _motion.curAnim.calibration.frequency / MAX_WALK_SPEED * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// lean (hips pitch offset)
|
||
sliderXPos = (((_sliderRanges.joints[0].pitchOffsetRange + _motion.curAnim.joints[0].pitchOffset) / 2) /
|
||
_sliderRanges.joints[0].pitchOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// stride (upper legs pitch)
|
||
sliderXPos = _motion.curAnim.joints[1].pitch / _sliderRanges.joints[1].pitchRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Legs separation (upper legs roll offset)
|
||
sliderXPos = (((_sliderRanges.joints[1].rollOffsetRange + _motion.curAnim.joints[1].rollOffset) / 2) /
|
||
_sliderRanges.joints[1].rollOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Legs forward (upper legs pitch offset)
|
||
sliderXPos = (((_sliderRanges.joints[1].pitchOffsetRange + _motion.curAnim.joints[1].pitchOffset) / 2) /
|
||
_sliderRanges.joints[1].pitchOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Lower legs splay (lower legs roll offset)
|
||
sliderXPos = (((_sliderRanges.joints[2].rollOffsetRange + _motion.curAnim.joints[2].rollOffset) / 2) /
|
||
_sliderRanges.joints[2].rollOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Arms forward (upper arms yaw offset)
|
||
sliderXPos = (((_sliderRanges.joints[9].yawOffsetRange + _motion.curAnim.joints[9].yawOffset) / 2) /
|
||
_sliderRanges.joints[9].yawOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Arms out (upper arm pitch offset)
|
||
sliderXPos = (((_sliderRanges.joints[9].pitchOffsetRange - _motion.curAnim.joints[9].pitchOffset) / 2) /
|
||
_sliderRanges.joints[9].pitchOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
|
||
// Lower arms splay (lower arm pitch offset)
|
||
sliderXPos = (((_sliderRanges.joints[10].pitchOffsetRange - _motion.curAnim.joints[10].pitchOffset) / 2) /
|
||
_sliderRanges.joints[10].pitchOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 60,
|
||
visible: true
|
||
});
|
||
};
|
||
|
||
function initialiseJointsEditingPanel() {
|
||
|
||
var i = 0;
|
||
var yLocation = _backgroundY + 359;
|
||
hideJointSelectors();
|
||
|
||
if (_state.editingTranslation) {
|
||
|
||
// display the joint control selector for hips translations
|
||
Overlays.editOverlay(_hipsJointsTranslation, {visible: true});
|
||
|
||
// Hips sway
|
||
var sliderXPos = _motion.curAnim.joints[0].sway / _sliderRanges.joints[0].swayRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// Hips bob
|
||
sliderXPos = _motion.curAnim.joints[0].bob / _sliderRanges.joints[0].bobRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// Hips thrust
|
||
sliderXPos = _motion.curAnim.joints[0].thrust / _sliderRanges.joints[0].thrustRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// Sway Phase
|
||
sliderXPos = (90 + _motion.curAnim.joints[0].swayPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// Bob Phase
|
||
sliderXPos = (90 + _motion.curAnim.joints[0].bobPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// Thrust Phase
|
||
sliderXPos = (90 + _motion.curAnim.joints[0].thrustPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// offset ranges are also -ve thr' zero to +ve, so we centre them
|
||
sliderXPos = (((_sliderRanges.joints[0].swayOffsetRange + _motion.curAnim.joints[0]
|
||
.swayOffset) / 2) / _sliderRanges.joints[0].swayOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (((_sliderRanges.joints[0].bobOffsetRange + _motion.curAnim.joints[0]
|
||
.bobOffset) / 2) / _sliderRanges.joints[0].bobOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (((_sliderRanges.joints[0].thrustOffsetRange + _motion.curAnim.joints[0]
|
||
.thrustOffset) / 2) / _sliderRanges.joints[0].thrustOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
} else {
|
||
|
||
switch (_motion.curJointIndex) {
|
||
|
||
case 0:
|
||
Overlays.editOverlay(_hipsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 1:
|
||
Overlays.editOverlay(_upperLegsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 2:
|
||
Overlays.editOverlay(_lowerLegsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 3:
|
||
Overlays.editOverlay(_feetJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 4:
|
||
Overlays.editOverlay(_toesJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 5:
|
||
Overlays.editOverlay(_spineJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 6:
|
||
Overlays.editOverlay(_spine1JointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 7:
|
||
Overlays.editOverlay(_spine2JointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 8:
|
||
Overlays.editOverlay(_shouldersJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 9:
|
||
Overlays.editOverlay(_upperArmsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 10:
|
||
Overlays.editOverlay(_forearmsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 11:
|
||
Overlays.editOverlay(_handsJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
case 12:
|
||
Overlays.editOverlay(_headJointControl, {
|
||
visible: true
|
||
});
|
||
break;
|
||
}
|
||
|
||
var sliderXPos = _motion.curAnim.joints[_motion.curJointIndex].pitch /
|
||
_sliderRanges.joints[_motion.curJointIndex].pitchRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = _motion.curAnim.joints[_motion.curJointIndex].yaw /
|
||
_sliderRanges.joints[_motion.curJointIndex].yawRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = _motion.curAnim.joints[_motion.curJointIndex].roll /
|
||
_sliderRanges.joints[_motion.curJointIndex].rollRange * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// set phases (full range, -180 to 180)
|
||
sliderXPos = (90 + _motion.curAnim.joints[_motion.curJointIndex].pitchPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (90 + _motion.curAnim.joints[_motion.curJointIndex].yawPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (90 + _motion.curAnim.joints[_motion.curJointIndex].rollPhase / 2) / 180 * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
// offset ranges are also -ve thr' zero to +ve, so we offset
|
||
sliderXPos = (((_sliderRanges.joints[_motion.curJointIndex].pitchOffsetRange +
|
||
_motion.curAnim.joints[_motion.curJointIndex].pitchOffset) / 2) /
|
||
_sliderRanges.joints[_motion.curJointIndex].pitchOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (((_sliderRanges.joints[_motion.curJointIndex].yawOffsetRange +
|
||
_motion.curAnim.joints[_motion.curJointIndex].yawOffset) / 2) /
|
||
_sliderRanges.joints[_motion.curJointIndex].yawOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
|
||
sliderXPos = (((_sliderRanges.joints[_motion.curJointIndex].rollOffsetRange +
|
||
_motion.curAnim.joints[_motion.curJointIndex].rollOffset) / 2) /
|
||
_sliderRanges.joints[_motion.curJointIndex].rollOffsetRange) * _sliderRangeX;
|
||
Overlays.editOverlay(_sliderThumbOverlays[++i], {
|
||
x: _minSliderX + sliderXPos,
|
||
y: yLocation += 30,
|
||
visible: true
|
||
});
|
||
}
|
||
};
|
||
|
||
// mouse event handlers
|
||
var _movingSliderOne = false;
|
||
var _movingSliderTwo = false;
|
||
var _movingSliderThree = false;
|
||
var _movingSliderFour = false;
|
||
var _movingSliderFive = false;
|
||
var _movingSliderSix = false;
|
||
var _movingSliderSeven = false;
|
||
var _movingSliderEight = false;
|
||
var _movingSliderNine = false;
|
||
|
||
function mousePressEvent(event) {
|
||
|
||
var clickedOverlay = Overlays.getOverlayAtPoint({
|
||
x: event.x,
|
||
y: event.y
|
||
});
|
||
|
||
if (_state.currentState === _state.EDIT_WALK_JOINTS ||
|
||
_state.currentState === _state.EDIT_STANDING ||
|
||
_state.currentState === _state.EDIT_FLYING ||
|
||
_state.currentState === _state.EDIT_FLYING_UP ||
|
||
_state.currentState === _state.EDIT_FLYING_DOWN ||
|
||
_state.currentState === _state.EDIT_SIDESTEP_LEFT ||
|
||
_state.currentState === _state.EDIT_SIDESTEP_RIGHT) {
|
||
|
||
// check for new joint selection and update display accordingly
|
||
var clickX = event.x - _backgroundX - 75;
|
||
var clickY = event.y - _backgroundY - 92;
|
||
|
||
if (clickX > 60 && clickX < 120 && clickY > 123 && clickY < 155) {
|
||
_motion.curJointIndex = 0;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 63 && clickX < 132 && clickY > 156 && clickY < 202) {
|
||
_motion.curJointIndex = 1;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 58 && clickX < 137 && clickY > 203 && clickY < 250) {
|
||
_motion.curJointIndex = 2;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 58 && clickX < 137 && clickY > 250 && clickY < 265) {
|
||
_motion.curJointIndex = 3;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 58 && clickX < 137 && clickY > 265 && clickY < 280) {
|
||
_motion.curJointIndex = 4;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 78 && clickX < 121 && clickY > 111 && clickY < 128) {
|
||
_motion.curJointIndex = 5;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 78 && clickX < 128 && clickY > 89 && clickY < 111) {
|
||
_motion.curJointIndex = 6;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 85 && clickX < 118 && clickY > 77 && clickY < 94) {
|
||
_motion.curJointIndex = 7;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 64 && clickX < 125 && clickY > 55 && clickY < 77) {
|
||
_motion.curJointIndex = 8;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if ((clickX > 44 && clickX < 73 && clickY > 71 && clickY < 94) ||
|
||
(clickX > 125 && clickX < 144 && clickY > 71 && clickY < 94)) {
|
||
_motion.curJointIndex = 9;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if ((clickX > 28 && clickX < 57 && clickY > 94 && clickY < 119) ||
|
||
(clickX > 137 && clickX < 170 && clickY > 97 && clickY < 114)) {
|
||
_motion.curJointIndex = 10;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if ((clickX > 18 && clickX < 37 && clickY > 115 && clickY < 136) ||
|
||
(clickX > 157 && clickX < 182 && clickY > 115 && clickY < 136)) {
|
||
_motion.curJointIndex = 11;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 81 && clickX < 116 && clickY > 12 && clickY < 53) {
|
||
_motion.curJointIndex = 12;
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
|
||
} else if (clickX > 188 && clickX < 233 && clickY > 6 && clickY < 34) {
|
||
|
||
// translation editing radio selection
|
||
if (_state.editingTranslation) {
|
||
|
||
hideJointSelectors();
|
||
setBackground(_controlsBackgroundWalkEditJoints);
|
||
_state.editingTranslation = false;
|
||
|
||
} else {
|
||
|
||
hideJointSelectors();
|
||
setBackground(_controlsBackgroundWalkEditHipTrans);
|
||
_state.editingTranslation = true;
|
||
}
|
||
initialiseJointsEditingPanel();
|
||
return;
|
||
}
|
||
}
|
||
|
||
switch (clickedOverlay) {
|
||
|
||
case _offButton:
|
||
|
||
_state.powerOn = true;
|
||
Overlays.editOverlay(_offButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_onButton, {
|
||
visible: true
|
||
});
|
||
_state.setInternalState(state.STANDING);
|
||
return;
|
||
|
||
case _controlsMinimisedTab:
|
||
|
||
_state.minimised = false;
|
||
minimiseDialog(_state.minimised);
|
||
_state.setInternalState(_state.STANDING);
|
||
return;
|
||
|
||
case _hideButton:
|
||
case _hideButtonSelected:
|
||
|
||
Overlays.editOverlay(_hideButton, {visible: false});
|
||
Overlays.editOverlay(_hideButtonSelected, {visible: true});
|
||
_state.minimised = true;
|
||
momentaryButtonTimer = Script.setInterval(function() {
|
||
minimiseDialog(_state.minimised);
|
||
}, 80);
|
||
return;
|
||
|
||
case _backButton:
|
||
|
||
Overlays.editOverlay(_backButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_backButtonSelected, {
|
||
visible: true
|
||
});
|
||
momentaryButtonTimer = Script.setInterval(function() {
|
||
|
||
_state.setInternalState(_state.STANDING);
|
||
Overlays.editOverlay(_backButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_backButtonSelected, {
|
||
visible: false
|
||
});
|
||
Script.clearInterval(momentaryButtonTimer);
|
||
momentaryButtonTimer = null;
|
||
}, 80);
|
||
return;
|
||
|
||
case _footstepsBigButton:
|
||
|
||
_motion.makesFootStepSounds = true;
|
||
Overlays.editOverlay(_footstepsBigButtonSelected, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_footstepsBigButton, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _footstepsBigButtonSelected:
|
||
|
||
_motion.makesFootStepSounds = false;
|
||
Overlays.editOverlay(_footstepsBigButton, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_footstepsBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _femaleBigButton:
|
||
case _maleBigButtonSelected:
|
||
|
||
_motion.setGender(FEMALE);
|
||
|
||
Overlays.editOverlay(_femaleBigButtonSelected, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_femaleBigButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_maleBigButton, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_maleBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _maleBigButton:
|
||
case _femaleBigButtonSelected:
|
||
|
||
_motion.setGender(MALE);
|
||
|
||
Overlays.editOverlay(_femaleBigButton, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_femaleBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_maleBigButtonSelected, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_maleBigButton, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _armsFreeBigButton:
|
||
|
||
_motion.armsFree = true;
|
||
|
||
Overlays.editOverlay(_armsFreeBigButtonSelected, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_armsFreeBigButton, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _armsFreeBigButtonSelected:
|
||
|
||
_motion.armsFree = false;
|
||
|
||
Overlays.editOverlay(_armsFreeBigButtonSelected, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_armsFreeBigButton, {
|
||
visible: true
|
||
});
|
||
return;
|
||
|
||
case _standardWalkBigButton:
|
||
|
||
if (_motion.avatarGender === FEMALE) {
|
||
_motion.selWalk = _motion.femaleStandardWalk;
|
||
} else {
|
||
_motion.selWalk = _motion.maleStandardWalk;
|
||
}
|
||
_motion.curAnim = _motion.selWalk;
|
||
initialiseWalkStylesPanel(true);
|
||
return;
|
||
|
||
case _standardWalkBigButtonSelected:
|
||
|
||
// toggle forwards / backwards walk display
|
||
if (_motion.direction === FORWARDS) {
|
||
_motion.direction = BACKWARDS;
|
||
} else {
|
||
_motion.direction = FORWARDS;
|
||
}
|
||
return;
|
||
|
||
case _sliderOne:
|
||
|
||
_movingSliderOne = true;
|
||
return;
|
||
|
||
case _sliderTwo:
|
||
|
||
_movingSliderTwo = true;
|
||
return;
|
||
|
||
case _sliderThree:
|
||
|
||
_movingSliderThree = true;
|
||
return;
|
||
|
||
case _sliderFour:
|
||
|
||
_movingSliderFour = true;
|
||
return;
|
||
|
||
case _sliderFive:
|
||
|
||
_movingSliderFive = true;
|
||
return;
|
||
|
||
case _sliderSix:
|
||
|
||
_movingSliderSix = true;
|
||
return;
|
||
|
||
case _sliderSeven:
|
||
|
||
_movingSliderSeven = true;
|
||
return;
|
||
|
||
case _sliderEight:
|
||
|
||
_movingSliderEight = true;
|
||
return;
|
||
|
||
case _sliderNine:
|
||
|
||
_movingSliderNine = true;
|
||
return;
|
||
|
||
case _configWalkButtonSelected:
|
||
case _configStandButtonSelected:
|
||
case _configSideStepLeftButtonSelected:
|
||
case _configSideStepRightButtonSelected:
|
||
case _configFlyingButtonSelected:
|
||
case _configFlyingUpButtonSelected:
|
||
case _configFlyingDownButtonSelected:
|
||
case _configWalkStylesButtonSelected:
|
||
case _configWalkTweaksButtonSelected:
|
||
case _configWalkJointsButtonSelected:
|
||
|
||
// exit edit modes
|
||
_motion.curAnim = _motion.selStand;
|
||
_state.setInternalState(_state.STANDING);
|
||
return;
|
||
|
||
case _onButton:
|
||
|
||
_state.powerOn = false;
|
||
_state.setInternalState(state.STANDING);
|
||
Overlays.editOverlay(_offButton, {
|
||
visible: true
|
||
});
|
||
Overlays.editOverlay(_onButton, {
|
||
visible: false
|
||
});
|
||
return;
|
||
|
||
case _backButton:
|
||
case _backButtonSelected:
|
||
|
||
Overlays.editOverlay(_backButton, {
|
||
visible: false
|
||
});
|
||
Overlays.editOverlay(_backButtonSelected, {
|
||
visible: false
|
||
});
|
||
_state.setInternalState(_state.STANDING);
|
||
return;
|
||
|
||
case _configWalkStylesButton:
|
||
|
||
_state.setInternalState(_state.EDIT_WALK_STYLES);
|
||
return;
|
||
|
||
case _configWalkTweaksButton:
|
||
|
||
_state.setInternalState(_state.EDIT_WALK_TWEAKS);
|
||
return;
|
||
|
||
case _configWalkJointsButton:
|
||
|
||
_state.setInternalState(_state.EDIT_WALK_JOINTS);
|
||
return;
|
||
|
||
case _configWalkButton:
|
||
|
||
_state.setInternalState(_state.EDIT_WALK_STYLES);
|
||
return;
|
||
|
||
case _configStandButton:
|
||
|
||
_state.setInternalState(_state.EDIT_STANDING);
|
||
return;
|
||
|
||
case _configSideStepLeftButton:
|
||
|
||
_state.setInternalState(_state.EDIT_SIDESTEP_LEFT);
|
||
return;
|
||
|
||
case _configSideStepRightButton:
|
||
|
||
_state.setInternalState(_state.EDIT_SIDESTEP_RIGHT);
|
||
return;
|
||
|
||
case _configFlyingButton:
|
||
|
||
_state.setInternalState(_state.EDIT_FLYING);
|
||
return;
|
||
|
||
case _configFlyingUpButton:
|
||
|
||
_state.setInternalState(_state.EDIT_FLYING_UP);
|
||
return;
|
||
|
||
case _configFlyingDownButton:
|
||
|
||
_state.setInternalState(_state.EDIT_FLYING_DOWN);
|
||
return;
|
||
}
|
||
};
|
||
|
||
function mouseMoveEvent(event) {
|
||
|
||
// workaround for bug (https://worklist.net/20160)
|
||
if ((event.x > 310 && event.x < 318 && event.y > 1350 && event.y < 1355) ||
|
||
(event.x > 423 && event.x < 428 && event.y > 1505 && event.y < 1508 )) {
|
||
return;
|
||
}
|
||
|
||
if (_state.currentState === _state.EDIT_WALK_JOINTS ||
|
||
_state.currentState === _state.EDIT_STANDING ||
|
||
_state.currentState === _state.EDIT_FLYING ||
|
||
_state.currentState === _state.EDIT_FLYING_UP ||
|
||
_state.currentState === _state.EDIT_FLYING_DOWN ||
|
||
_state.currentState === _state.EDIT_SIDESTEP_LEFT ||
|
||
_state.currentState === _state.EDIT_SIDESTEP_RIGHT) {
|
||
|
||
var thumbClickOffsetX = event.x - _minSliderX;
|
||
var thumbPositionNormalised = thumbClickOffsetX / _sliderRangeX;
|
||
if (thumbPositionNormalised < 0) {
|
||
thumbPositionNormalised = 0;
|
||
} else if (thumbPositionNormalised > 1) {
|
||
thumbPositionNormalised = 1;
|
||
}
|
||
var sliderX = thumbPositionNormalised * _sliderRangeX; // sets range
|
||
|
||
if (_movingSliderOne) {
|
||
|
||
// currently selected joint pitch or sway
|
||
Overlays.editOverlay(_sliderOne, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].sway =
|
||
thumbPositionNormalised * _sliderRanges.joints[0].swayRange;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].pitch =
|
||
thumbPositionNormalised * _sliderRanges.joints[_motion.curJointIndex].pitchRange;
|
||
}
|
||
|
||
} else if (_movingSliderTwo) {
|
||
|
||
// currently selected joint yaw or bob
|
||
Overlays.editOverlay(_sliderTwo, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].bob =
|
||
thumbPositionNormalised * _sliderRanges.joints[0].bobRange;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].yaw =
|
||
thumbPositionNormalised * _sliderRanges.joints[_motion.curJointIndex].yawRange;
|
||
}
|
||
|
||
} else if (_movingSliderThree) {
|
||
|
||
// currently selected joint roll or thrust
|
||
Overlays.editOverlay(_sliderThree, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].thrust =
|
||
thumbPositionNormalised * _sliderRanges.joints[0].thrustRange;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].roll =
|
||
thumbPositionNormalised * _sliderRanges.joints[_motion.curJointIndex].rollRange;
|
||
}
|
||
|
||
} else if (_movingSliderFour) {
|
||
|
||
// currently selected joint pitch phase
|
||
Overlays.editOverlay(_sliderFour, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
|
||
var newPhase = 360 * thumbPositionNormalised - 180;
|
||
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].swayPhase = newPhase;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].pitchPhase = newPhase;
|
||
}
|
||
|
||
} else if (_movingSliderFive) {
|
||
|
||
// currently selected joint yaw phase;
|
||
Overlays.editOverlay(_sliderFive, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
|
||
var newPhase = 360 * thumbPositionNormalised - 180;
|
||
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].bobPhase = newPhase;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].yawPhase = newPhase;
|
||
}
|
||
|
||
} else if (_movingSliderSix) {
|
||
|
||
// currently selected joint roll phase
|
||
Overlays.editOverlay(_sliderSix, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
|
||
var newPhase = 360 * thumbPositionNormalised - 180;
|
||
|
||
if (_state.editingTranslation) {
|
||
_motion.curAnim.joints[0].thrustPhase = newPhase;
|
||
} else {
|
||
_motion.curAnim.joints[_motion.curJointIndex].rollPhase = newPhase;
|
||
}
|
||
|
||
} else if (_movingSliderSeven) {
|
||
|
||
// currently selected joint pitch offset
|
||
Overlays.editOverlay(_sliderSeven, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[0].swayOffsetRange;
|
||
_motion.curAnim.joints[0].swayOffset = newOffset;
|
||
} else {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[_motion.curJointIndex].pitchOffsetRange;
|
||
_motion.curAnim.joints[_motion.curJointIndex].pitchOffset = newOffset;
|
||
}
|
||
|
||
} else if (_movingSliderEight) {
|
||
|
||
// currently selected joint yaw offset
|
||
Overlays.editOverlay(_sliderEight, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 *_sliderRanges.joints[0].bobOffsetRange;
|
||
_motion.curAnim.joints[0].bobOffset = newOffset;
|
||
} else {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[_motion.curJointIndex].yawOffsetRange;
|
||
_motion.curAnim.joints[_motion.curJointIndex].yawOffset = newOffset;
|
||
}
|
||
|
||
} else if (_movingSliderNine) {
|
||
|
||
// currently selected joint roll offset
|
||
Overlays.editOverlay(_sliderNine, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
if (_state.editingTranslation) {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[0].thrustOffsetRange;
|
||
_motion.curAnim.joints[0].thrustOffset = newOffset;
|
||
} else {
|
||
var newOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[_motion.curJointIndex].rollOffsetRange;
|
||
_motion.curAnim.joints[_motion.curJointIndex].rollOffset = newOffset;
|
||
}
|
||
}
|
||
|
||
// end if editing joints
|
||
|
||
} else if (_state.currentState === _state.EDIT_WALK_TWEAKS) {
|
||
|
||
// sliders for commonly required walk adjustments
|
||
var thumbClickOffsetX = event.x - _minSliderX;
|
||
var thumbPositionNormalised = thumbClickOffsetX / _sliderRangeX;
|
||
if (thumbPositionNormalised < 0) thumbPositionNormalised = 0;
|
||
if (thumbPositionNormalised > 1) thumbPositionNormalised = 1;
|
||
var sliderX = thumbPositionNormalised * _sliderRangeX; // sets range
|
||
|
||
if (_movingSliderOne) {
|
||
// walk speed
|
||
Overlays.editOverlay(_sliderOne, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.calibration.frequency = thumbPositionNormalised * MAX_WALK_SPEED;
|
||
} else if (_movingSliderTwo) {
|
||
// lean (hips pitch offset)
|
||
Overlays.editOverlay(_sliderTwo, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
var newOffset = (thumbPositionNormalised - 0.5) * 2 * _sliderRanges.joints[0].pitchOffsetRange;
|
||
_motion.curAnim.joints[0].pitchOffset = newOffset;
|
||
} else if (_movingSliderThree) {
|
||
// stride (upper legs pitch)
|
||
Overlays.editOverlay(_sliderThree, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[1].pitch = thumbPositionNormalised * _sliderRanges.joints[1].pitchRange;
|
||
} else if (_movingSliderFour) {
|
||
// legs separation (upper legs roll)
|
||
Overlays.editOverlay(_sliderFour, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[1].rollOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[1].rollOffsetRange;
|
||
} else if (_movingSliderFive) {
|
||
// legs forward (lower legs pitch offset)
|
||
Overlays.editOverlay(_sliderFive, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[1].pitchOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[1].pitchOffsetRange;
|
||
} else if (_movingSliderSix) {
|
||
// lower legs splay (lower legs roll offset)
|
||
Overlays.editOverlay(_sliderSix, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[2].rollOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[2].rollOffsetRange;
|
||
|
||
} else if (_movingSliderSeven) {
|
||
// arms forward (upper arms yaw offset)
|
||
Overlays.editOverlay(_sliderSeven, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[9].yawOffset = (thumbPositionNormalised - 0.5) *
|
||
2 * _sliderRanges.joints[9].yawOffsetRange;
|
||
} else if (_movingSliderEight) {
|
||
// arms out (upper arm pitch offset)
|
||
Overlays.editOverlay(_sliderEight, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[9].pitchOffset = (thumbPositionNormalised - 0.5) *
|
||
-2 * _sliderRanges.joints[9].pitchOffsetRange;
|
||
} else if (_movingSliderNine) {
|
||
// lower arms splay (lower arm pitch offset)
|
||
Overlays.editOverlay(_sliderNine, {
|
||
x: sliderX + _minSliderX
|
||
});
|
||
_motion.curAnim.joints[10].pitchOffset = (thumbPositionNormalised - 0.5) *
|
||
-2 * _sliderRanges.joints[10].pitchOffsetRange;
|
||
}
|
||
} // if tweaking
|
||
};
|
||
|
||
function mouseReleaseEvent(event) {
|
||
|
||
if (_movingSliderOne) {
|
||
_movingSliderOne = false;
|
||
} else if (_movingSliderTwo) {
|
||
_movingSliderTwo = false;
|
||
} else if (_movingSliderThree) {
|
||
_movingSliderThree = false;
|
||
} else if (_movingSliderFour) {
|
||
_movingSliderFour = false;
|
||
} else if (_movingSliderFive) {
|
||
_movingSliderFive = false;
|
||
} else if (_movingSliderSix) {
|
||
_movingSliderSix = false;
|
||
} else if (_movingSliderSeven) {
|
||
_movingSliderSeven = false;
|
||
} else if (_movingSliderEight) {
|
||
_movingSliderEight = false;
|
||
} else if (_movingSliderNine) {
|
||
_movingSliderNine = false;
|
||
}
|
||
};
|
||
|
||
Controller.mousePressEvent.connect(mousePressEvent);
|
||
Controller.mouseMoveEvent.connect(mouseMoveEvent);
|
||
Controller.mouseReleaseEvent.connect(mouseReleaseEvent);
|
||
|
||
// Script ending
|
||
Script.scriptEnding.connect(function() {
|
||
|
||
// delete the background overlays
|
||
for (var i in _backgroundOverlays) {
|
||
Overlays.deleteOverlay(_backgroundOverlays[i]);
|
||
}
|
||
// delete the button overlays
|
||
for (var i in _buttonOverlays) {
|
||
Overlays.deleteOverlay(_buttonOverlays[i]);
|
||
}
|
||
// delete the slider thumb overlays
|
||
for (var i in _sliderThumbOverlays) {
|
||
Overlays.deleteOverlay(_sliderThumbOverlays[i]);
|
||
}
|
||
// delete the character joint control overlays
|
||
for (var i in _jointsControlOverlays) {
|
||
Overlays.deleteOverlay(_jointsControlOverlays[i]);
|
||
}
|
||
// delete the big button overlays
|
||
for (var i in _bigbuttonOverlays) {
|
||
Overlays.deleteOverlay(_bigbuttonOverlays[i]);
|
||
}
|
||
// delete the mimimised tab
|
||
Overlays.deleteOverlay(_controlsMinimisedTab);
|
||
});
|
||
|
||
// public methods
|
||
return {
|
||
|
||
// gather references to objects from the walk.js script
|
||
initialise: function(state, motion, walkAssets) {
|
||
|
||
_state = state;
|
||
_motion = motion;
|
||
_walkAssets = walkAssets;
|
||
},
|
||
|
||
updateMenu: function() {
|
||
|
||
if (!_state.minimised) {
|
||
|
||
switch (_state.currentState) {
|
||
|
||
case _state.EDIT_WALK_STYLES:
|
||
case _state.EDIT_WALK_TWEAKS:
|
||
case _state.EDIT_WALK_JOINTS: {
|
||
|
||
hideMenuButtons();
|
||
initialiseFrontPanel(false);
|
||
hideJointSelectors();
|
||
|
||
if (_state.currentState === _state.EDIT_WALK_STYLES) {
|
||
|
||
setBackground(_controlsBackgroundWalkEditStyles);
|
||
initialiseWalkStylesPanel(true);
|
||
setSliderThumbsVisible(false);
|
||
hideJointSelectors();
|
||
setButtonOverlayVisible(_configWalkStylesButtonSelected);
|
||
setButtonOverlayVisible(_configWalkTweaksButton);
|
||
setButtonOverlayVisible(_configWalkJointsButton);
|
||
|
||
} else if (_state.currentState === _state.EDIT_WALK_TWEAKS) {
|
||
|
||
setBackground(_controlsBackgroundWalkEditTweaks);
|
||
initialiseWalkStylesPanel(false);
|
||
setSliderThumbsVisible(true);
|
||
hideJointSelectors();
|
||
initialiseWalkTweaksPanel();
|
||
setButtonOverlayVisible(_configWalkStylesButton);
|
||
setButtonOverlayVisible(_configWalkTweaksButtonSelected);
|
||
setButtonOverlayVisible(_configWalkJointsButton);
|
||
|
||
} else if (_state.currentState === _state.EDIT_WALK_JOINTS) {
|
||
|
||
if (_state.editingTranslation) {
|
||
setBackground(_controlsBackgroundWalkEditHipTrans);
|
||
} else {
|
||
setBackground(_controlsBackgroundWalkEditJoints);
|
||
}
|
||
|
||
initialiseWalkStylesPanel(false);
|
||
setSliderThumbsVisible(true);
|
||
setButtonOverlayVisible(_configWalkStylesButton);
|
||
setButtonOverlayVisible(_configWalkTweaksButton);
|
||
setButtonOverlayVisible(_configWalkJointsButtonSelected);
|
||
initialiseJointsEditingPanel();
|
||
}
|
||
setButtonOverlayVisible(_onButton);
|
||
setButtonOverlayVisible(_backButton);
|
||
return;
|
||
}
|
||
|
||
case _state.EDIT_STANDING:
|
||
case _state.EDIT_SIDESTEP_LEFT:
|
||
case _state.EDIT_SIDESTEP_RIGHT: {
|
||
|
||
if (_state.editingTranslation) {
|
||
setBackground(_controlsBackgroundWalkEditHipTrans);
|
||
} else {
|
||
setBackground(_controlsBackgroundWalkEditJoints);
|
||
}
|
||
hideMenuButtons();
|
||
initialiseWalkStylesPanel(false);
|
||
initialiseFrontPanel(false);
|
||
|
||
if (_state.currentState === _state.EDIT_SIDESTEP_LEFT) {
|
||
|
||
setButtonOverlayVisible(_configSideStepRightButton);
|
||
setButtonOverlayVisible(_configSideStepLeftButtonSelected);
|
||
setButtonOverlayVisible(_configStandButton);
|
||
|
||
} else if (_state.currentState === _state.EDIT_SIDESTEP_RIGHT) {
|
||
|
||
setButtonOverlayVisible(_configSideStepRightButtonSelected);
|
||
setButtonOverlayVisible(_configSideStepLeftButton);
|
||
setButtonOverlayVisible(_configStandButton);
|
||
|
||
} else if (_state.currentState === _state.EDIT_STANDING) {
|
||
|
||
setButtonOverlayVisible(_configSideStepRightButton);
|
||
setButtonOverlayVisible(_configSideStepLeftButton);
|
||
setButtonOverlayVisible(_configStandButtonSelected);
|
||
}
|
||
initialiseJointsEditingPanel();
|
||
setButtonOverlayVisible(_onButton);
|
||
setButtonOverlayVisible(_backButton);
|
||
return;
|
||
}
|
||
|
||
case _state.EDIT_FLYING:
|
||
case _state.EDIT_FLYING_UP:
|
||
case _state.EDIT_FLYING_DOWN: {
|
||
|
||
setBackground(_controlsBackgroundWalkEditJoints);
|
||
hideMenuButtons();
|
||
initialiseWalkStylesPanel(false);
|
||
initialiseFrontPanel(false);
|
||
if (_state.currentState === _state.EDIT_FLYING) {
|
||
|
||
setButtonOverlayVisible(_configFlyingUpButton);
|
||
setButtonOverlayVisible(_configFlyingDownButton);
|
||
setButtonOverlayVisible(_configFlyingButtonSelected);
|
||
|
||
} else if (_state.currentState === _state.EDIT_FLYING_UP) {
|
||
|
||
setButtonOverlayVisible(_configFlyingUpButtonSelected);
|
||
setButtonOverlayVisible(_configFlyingDownButton);
|
||
setButtonOverlayVisible(_configFlyingButton);
|
||
|
||
} else if (_state.currentState === _state.EDIT_FLYING_DOWN) {
|
||
|
||
setButtonOverlayVisible(_configFlyingUpButton);
|
||
setButtonOverlayVisible(_configFlyingDownButtonSelected);
|
||
setButtonOverlayVisible(_configFlyingButton);
|
||
}
|
||
initialiseJointsEditingPanel();
|
||
setButtonOverlayVisible(_onButton);
|
||
setButtonOverlayVisible(_backButton);
|
||
return;
|
||
}
|
||
|
||
case _state.STANDING:
|
||
case _state.WALKING:
|
||
case _state.FLYING:
|
||
case _state.SIDE_STEP:
|
||
default: {
|
||
|
||
hideMenuButtons();
|
||
hideJointSelectors();
|
||
setBackground(_controlsBackground);
|
||
if (_state.powerOn) {
|
||
setButtonOverlayVisible(_onButton);
|
||
} else {
|
||
setButtonOverlayVisible(_offButton);
|
||
}
|
||
setButtonOverlayVisible(_configWalkButton);
|
||
setButtonOverlayVisible(_configStandButton);
|
||
setButtonOverlayVisible(_configFlyingButton);
|
||
setButtonOverlayVisible(_hideButton);
|
||
setSliderThumbsVisible(false);
|
||
initialiseFrontPanel(true);
|
||
initialiseWalkStylesPanel(false);
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}; // end public methods (return)
|
||
})(); |