return Avatar Head by reference so setters actually do something

This commit is contained in:
Stephen Birarda 2013-05-22 16:43:41 -07:00
parent 5a9d3a8436
commit 4738fc888b
6 changed files with 43 additions and 41 deletions

View file

@ -289,25 +289,22 @@ void Application::paintGL() {
glPushMatrix(); {
glLoadIdentity();
// camera settings
if (OculusManager::isConnected()) {
_myAvatar.setDisplayingHead(false);
_myCamera.setUpShift (0.0f);
_myCamera.setDistance (0.0f);
_myCamera.setTightness (100.0f);
_myCamera.setTargetPosition(_myAvatar.getHeadPosition());
_myCamera.setTargetRotation(_myAvatar.getBodyYaw() + _myAvatar.getHead().getYaw(),
-_myAvatar.getHead().getPitch(),
_myAvatar.getHead().getRoll());
} else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
_myCamera.setTightness (100.0f);
_myCamera.setTargetPosition(_myAvatar.getSpringyHeadPosition());
_myCamera.setTargetRotation(_myAvatar.getBodyYaw() - 180.0f,
0.0f,
0.0f);
} else {
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
} else if (OculusManager::isConnected()) {
_myAvatar.setDisplayingHead(false);
_myCamera.setUpShift (0.0f);
_myCamera.setDistance (0.0f);
_myCamera.setTightness (100.0f);
_myCamera.setTargetPosition(_myAvatar.getHeadPosition());
_myCamera.setTargetRotation(_myAvatar.getAbsoluteHeadYaw(),
-_myAvatar.getHead().getPitch(),
_myAvatar.getHead().getRoll());
} else if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
_myCamera.setTargetPosition(_myAvatar.getSpringyHeadPosition());
_myCamera.setTargetRotation(_myAvatar.getAbsoluteHeadYaw(),
0.0f,
@ -325,7 +322,6 @@ void Application::paintGL() {
//-_myAvatar.getAbsoluteHeadPitch(),
0.0f);
}
}
// important...
_myCamera.update( 1.f/_fps );
@ -1345,8 +1341,7 @@ void Application::updateAvatar(float deltaTime) {
const float HORIZONTAL_PIXELS_PER_DEGREE = 2880.f / 45.f;
const float VERTICAL_PIXELS_PER_DEGREE = 1800.f / 30.f;
if (powf(measuredYawRate * measuredYawRate +
measuredPitchRate * measuredPitchRate, 0.5) > MIN_MOUSE_RATE)
{
measuredPitchRate * measuredPitchRate, 0.5) > MIN_MOUSE_RATE) {
_headMouseX += measuredYawRate * HORIZONTAL_PIXELS_PER_DEGREE * deltaTime;
_headMouseY -= measuredPitchRate * VERTICAL_PIXELS_PER_DEGREE * deltaTime;
}

View file

@ -99,7 +99,6 @@ Avatar::Avatar(bool isMine) :
// give the pointer to our head to inherited _headData variable from AvatarData
_headData = &_head;
for (int i = 0; i < MAX_DRIVE_KEYS; i++) {
_driveKeys[i] = false;
}
@ -1202,6 +1201,7 @@ void Avatar::setHeadFromGyros(glm::vec3* eulerAngles, glm::vec3* angularVelocity
angles += (*angularVelocity) * deltaTime;
// Smooth to slowly follow absolute values
angles = ((1.f - deltaTime / smoothingTime) * angles) + (deltaTime / smoothingTime) * (*eulerAngles);
printf("Setting head from gyros!\n");
_head.setYaw (angles.x);
_head.setPitch(angles.y);
_head.setRoll (angles.z);

View file

@ -105,7 +105,7 @@ public:
float getHeight() const { return _height; }
AvatarMode getMode() const { return _mode; }
Head getHead() const { return _head; }
Head& getHead() { return _head; }
void setMousePressed(bool pressed);
void render(bool lookingInMirror, glm::vec3 cameraPosition);

View file

@ -52,6 +52,9 @@ public:
float noise;
private:
// disallow copies of the Head, copy of owning Avatar is disallowed too
Head(const Head&);
Head& operator= (const Head&);
bool _returnHeadToCenter;
float _audioLoudness;

View file

@ -95,10 +95,6 @@ public:
void setHeadData(HeadData* headData) { _headData = headData; }
protected:
// privatize the copy constructor and assignment operator so they cannot be called
AvatarData(const AvatarData&);
AvatarData& operator= (const AvatarData&);
glm::vec3 _position;
glm::vec3 _handPosition;
@ -137,6 +133,10 @@ protected:
bool _wantDelta;
HeadData* _headData;
private:
// privatize the copy constructor and assignment operator so they cannot be called
AvatarData(const AvatarData&);
AvatarData& operator= (const AvatarData&);
};
#endif /* defined(__hifi__AvatarData__) */

View file

@ -55,6 +55,10 @@ protected:
glm::vec3 _lookAtPosition;
float _leanSideways;
float _leanForward;
private:
// privatize copy ctor and assignment operator so copies of this object cannot be made
HeadData(const HeadData&);
HeadData& operator= (const HeadData&);
};
#endif /* defined(__hifi__HeadData__) */