mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-25 17:14:59 +02:00
Merge branch 'master' of https://github.com/worklist/hifi
This commit is contained in:
commit
d5da35e91a
5 changed files with 31 additions and 25 deletions
|
@ -380,7 +380,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 ) {
|
||||
|
@ -399,28 +399,22 @@ void Avatar::simulate(float deltaTime) {
|
|||
_thrust = glm::vec3( 0.0, 0.0, 0.0 );
|
||||
|
||||
if (_driveKeys[FWD]) {
|
||||
glm::vec3 front( _orientation.getFront().x, _orientation.getFront().y, _orientation.getFront().z );
|
||||
_thrust += front * THRUST_MAG;
|
||||
_thrust += _orientation.getFront() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[BACK]) {
|
||||
glm::vec3 front( _orientation.getFront().x, _orientation.getFront().y, _orientation.getFront().z );
|
||||
_thrust -= front * THRUST_MAG;
|
||||
_thrust -= _orientation.getFront() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[RIGHT]) {
|
||||
glm::vec3 right( _orientation.getRight().x, _orientation.getRight().y, _orientation.getRight().z );
|
||||
_thrust += right * THRUST_MAG;
|
||||
_thrust += _orientation.getRight() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[LEFT]) {
|
||||
glm::vec3 right( _orientation.getRight().x, _orientation.getRight().y, _orientation.getRight().z );
|
||||
_thrust -= right * THRUST_MAG;
|
||||
_thrust -= _orientation.getRight() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[UP]) {
|
||||
glm::vec3 up( _orientation.getUp().x, _orientation.getUp().y, _orientation.getUp().z );
|
||||
_thrust += up * THRUST_MAG;
|
||||
_thrust += _orientation.getUp() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[DOWN]) {
|
||||
glm::vec3 up( _orientation.getUp().x, _orientation.getUp().y, _orientation.getUp().z );
|
||||
_thrust -= up * THRUST_MAG;
|
||||
_thrust -= _orientation.getUp() * THRUST_MAG;
|
||||
}
|
||||
if (_driveKeys[ROT_RIGHT]) {
|
||||
_bodyYawDelta -= YAW_MAG * deltaTime;
|
||||
|
@ -450,10 +444,10 @@ 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 );
|
||||
|
@ -1293,3 +1287,18 @@ void Avatar::processTransmitterData(unsigned char* packetData, int numBytes) {
|
|||
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -218,6 +218,9 @@ class Avatar : public AvatarData {
|
|||
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;
|
||||
bool _isMine;
|
||||
|
@ -233,7 +236,7 @@ class Avatar : public AvatarData {
|
|||
AvatarBone _bone[ NUM_AVATAR_BONES ];
|
||||
AvatarMode _mode;
|
||||
AvatarHandHolding _handHolding;
|
||||
glm::dvec3 _velocity;
|
||||
glm::vec3 _velocity;
|
||||
glm::vec3 _thrust;
|
||||
float _maxArmLength;
|
||||
Orientation _orientation;
|
||||
|
|
|
@ -161,10 +161,6 @@ namespace starfield {
|
|||
#if STARFIELD_HEMISPHERE_ONLY
|
||||
altitude = std::max(0.0f, altitude);
|
||||
#endif
|
||||
unsigned tileIndex =
|
||||
_objTiling.getTileIndex(azimuth, altitude);
|
||||
|
||||
// printLog("Stars.cpp: starting on tile #%d\n", tileIndex);
|
||||
|
||||
#if STARFIELD_DEBUG_CULLING
|
||||
mat4 matrix_debug = glm::translate(glm::frustum(-hw, hw, -hh, hh, nearClip, 10.0f),
|
||||
|
|
|
@ -188,10 +188,8 @@ int AvatarData::parseData(unsigned char* sourceBuffer, int numBytes) {
|
|||
return sourceBuffer - startPosition;
|
||||
}
|
||||
|
||||
glm::vec3 AvatarData::getPosition() {
|
||||
return glm::vec3(_position.x,
|
||||
_position.y,
|
||||
_position.z);
|
||||
const glm::vec3& AvatarData::getPosition() const {
|
||||
return _position;
|
||||
}
|
||||
|
||||
void AvatarData::setPosition(glm::vec3 position) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public:
|
|||
|
||||
AvatarData* clone() const;
|
||||
|
||||
glm::vec3 getPosition();
|
||||
const glm::vec3& getPosition() const;
|
||||
void setPosition(glm::vec3 position);
|
||||
void setHandPosition(glm::vec3 handPosition);
|
||||
|
||||
|
|
Loading…
Reference in a new issue