From 3df81cc92a9c8ced37fcbc28f1029bdddda4a9f7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 25 Apr 2013 16:41:35 -0700 Subject: [PATCH] resolve conflicts on merge with upstream master --- interface/src/Avatar.cpp | 26 ++++++++++++++++++++------ interface/src/Avatar.h | 7 +++++-- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 3c56eeec60..a4ffbec9ed 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -368,7 +368,7 @@ void Avatar::simulate(float deltaTime) { if ( AVATAR_GRAVITY ) { if ( _position.y > _bone[ AVATAR_BONE_RIGHT_FOOT ].radius * 2.0 ) { - _velocity += glm::dvec3( 0.0, -1.0, 0.0 ) * ( 6.0 * deltaTime ); + _velocity += glm::dvec3(getGravity(getPosition())) * ( 6.0 * deltaTime ); } else if ( _position.y < _bone[ AVATAR_BONE_RIGHT_FOOT ].radius ) { _position.y = _bone[ AVATAR_BONE_RIGHT_FOOT ].radius; _velocity.y = 0.0; @@ -429,11 +429,11 @@ void Avatar::simulate(float deltaTime) { _bodyYawDelta *= (1.0 - TEST_YAW_DECAY * deltaTime); // add thrust to velocity - _velocity += glm::dvec3(_thrust * deltaTime); - + _velocity += _thrust * deltaTime; + // update position by velocity - _position += (glm::vec3)_velocity * deltaTime; - + _position += _velocity * deltaTime; + // decay velocity _velocity *= ( 1.0 - LIN_VEL_DECAY * deltaTime ); @@ -1203,5 +1203,19 @@ void Avatar::processTransmitterData(unsigned char* packetData, int numBytes) { glm::vec3 linVel(linX*linVelScale, linZ*linVelScale, -linY*linVelScale); addVelocity(linVel); */ - } + +// Find and return the gravity vector at my location +glm::vec3 Avatar::getGravity(glm::vec3 pos) { + // + // For now, we'll test this with a simple global lookup, but soon we will add getting this + // from the domain/voxelserver (or something similar) + // + if (glm::length(pos) < 5.f) { + // If near the origin sphere, turn gravity ON + return glm::vec3(0.f, -1.f, 0.f); + } else { + // If flying in space, turn gravity OFF + return glm::vec3(0.f, 0.f, 0.f); + } +} \ No newline at end of file diff --git a/interface/src/Avatar.h b/interface/src/Avatar.h index 8b3f79dd89..c00c7a36a5 100644 --- a/interface/src/Avatar.h +++ b/interface/src/Avatar.h @@ -217,9 +217,12 @@ public: // Related to getting transmitter UDP data used to animate the avatar hand void processTransmitterData(unsigned char * packetData, int numBytes); float getTransmitterHz() { return _transmitterHz; }; + + // Find out what the local gravity vector is at this location + glm::vec3 getGravity(glm::vec3 pos); private: - AvatarHead _head; + AvatarHead _head; bool _isMine; glm::vec3 _TEST_bigSpherePosition; float _TEST_bigSphereRadius; @@ -233,7 +236,7 @@ private: AvatarBone _bone[ NUM_AVATAR_BONES ]; AvatarMode _mode; AvatarHandHolding _handHolding; - glm::dvec3 _velocity; + glm::vec3 _velocity; glm::vec3 _thrust; float _maxArmLength; Orientation _orientation;