mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Merge pull request #2739 from AndrewMeadows/inertia
add status button for local gravity
This commit is contained in:
commit
5484eba208
1 changed files with 13 additions and 6 deletions
|
@ -13,15 +13,16 @@
|
|||
//
|
||||
|
||||
// misc global constants
|
||||
var NUMBER_OF_BUTTONS = 3;
|
||||
var NUMBER_OF_COLLISION_BUTTONS = 3;
|
||||
var NUMBER_OF_BUTTONS = 4;
|
||||
var DOWN = { x: 0.0, y: -1.0, z: 0.0 };
|
||||
var MAX_VOXEL_SCAN_DISTANCE = 20.0;
|
||||
var MAX_VOXEL_SCAN_DISTANCE = 30.0;
|
||||
|
||||
// behavior transition thresholds
|
||||
var MIN_FLYING_SPEED = 1.0;
|
||||
var MIN_COLLISIONLESS_SPEED = 5.0;
|
||||
var MAX_WALKING_SPEED = 10.0;
|
||||
var MAX_COLLIDABLE_SPEED = 25.0;
|
||||
var MAX_WALKING_SPEED = 30.0;
|
||||
var MAX_COLLIDABLE_SPEED = 35.0;
|
||||
|
||||
// button URL and geometry/UI tuning
|
||||
var BUTTON_IMAGE_URL = "http://highfidelity-public.s3-us-west-1.amazonaws.com/images/testing-swatches.svg";
|
||||
|
@ -70,17 +71,20 @@ var labelContents = new Array();
|
|||
labelContents[0] = "Collide with Avatars";
|
||||
labelContents[1] = "Collide with Voxels";
|
||||
labelContents[2] = "Collide with Particles";
|
||||
labelContents[3] = "Use local gravity";
|
||||
var groupBits = 0;
|
||||
|
||||
var enabledColors = new Array();
|
||||
enabledColors[0] = { red: 255, green: 0, blue: 0};
|
||||
enabledColors[1] = { red: 0, green: 255, blue: 0};
|
||||
enabledColors[2] = { red: 0, green: 0, blue: 255};
|
||||
enabledColors[3] = { red: 255, green: 255, blue: 0};
|
||||
|
||||
var disabledColors = new Array();
|
||||
disabledColors[0] = { red: 90, green: 75, blue: 75};
|
||||
disabledColors[1] = { red: 75, green: 90, blue: 75};
|
||||
disabledColors[2] = { red: 75, green: 90, blue: 90};
|
||||
disabledColors[2] = { red: 75, green: 75, blue: 90};
|
||||
disabledColors[3] = { red: 90, green: 90, blue: 75};
|
||||
|
||||
var buttonStates = new Array();
|
||||
|
||||
|
@ -195,11 +199,13 @@ function update(deltaTime) {
|
|||
if ((gravityOnExpiry < now) && (distance < MAX_VOXEL_SCAN_DISTANCE)) {
|
||||
// NOTE: setting the gravity automatically sets the AVATAR_MOTION_OBEY_LOCAL_GRAVITY behavior bit.
|
||||
MyAvatar.gravity = DOWN;
|
||||
updateButton(3, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (MyAvatar.motionBehaviors & AVATAR_MOTION_OBEY_LOCAL_GRAVITY) {
|
||||
MyAvatar.motionBehaviors = MyAvatar.motionBehaviors & ~AVATAR_MOTION_OBEY_LOCAL_GRAVITY;
|
||||
updateButton(3, false);
|
||||
}
|
||||
gravityOnExpiry = now + EXPIRY_PERIOD;
|
||||
}
|
||||
|
@ -220,6 +226,7 @@ function update(deltaTime) {
|
|||
if (MyAvatar.motionBehaviors & AVATAR_MOTION_OBEY_LOCAL_GRAVITY) {
|
||||
// turn off gravity
|
||||
MyAvatar.motionBehaviors = MyAvatar.motionBehaviors & ~AVATAR_MOTION_OBEY_LOCAL_GRAVITY;
|
||||
updateButton(3, false);
|
||||
}
|
||||
}
|
||||
if (speed > MAX_COLLIDABLE_SPEED) {
|
||||
|
@ -236,7 +243,7 @@ Script.update.connect(update);
|
|||
// we also handle click detection in our mousePressEvent()
|
||||
function mousePressEvent(event) {
|
||||
var clickedOverlay = Overlays.getOverlayAtPoint({x: event.x, y: event.y});
|
||||
for (i = 0; i < NUMBER_OF_BUTTONS; i++) {
|
||||
for (i = 0; i < NUMBER_OF_COLLISION_BUTTONS; i++) {
|
||||
if (clickedOverlay == buttons[i]) {
|
||||
var enabled = !(buttonStates[i]);
|
||||
updateButton(i, enabled);
|
||||
|
|
Loading…
Reference in a new issue