mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 09:44:21 +02:00
Moved lean and head rotation inside Player class
This commit is contained in:
parent
90d8626615
commit
9e686b4096
3 changed files with 29 additions and 18 deletions
|
@ -272,10 +272,12 @@ void MyAvatar::simulate(float deltaTime) {
|
|||
// Update avatar head rotation with sensor data
|
||||
void MyAvatar::updateFromTrackers(float deltaTime) {
|
||||
glm::vec3 estimatedPosition, estimatedRotation;
|
||||
|
||||
if (isPlaying()) {
|
||||
estimatedRotation = glm::degrees(safeEulerAngles(_player->getHeadRotation()));
|
||||
} else if (Application::getInstance()->getPrioVR()->hasHeadRotation()) {
|
||||
|
||||
if (isPlaying() && !OculusManager::isConnected()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Application::getInstance()->getPrioVR()->hasHeadRotation()) {
|
||||
estimatedRotation = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getHeadRotation()));
|
||||
estimatedRotation.x *= -1.0f;
|
||||
estimatedRotation.z *= -1.0f;
|
||||
|
@ -327,11 +329,6 @@ void MyAvatar::updateFromTrackers(float deltaTime) {
|
|||
}
|
||||
head->setDeltaRoll(estimatedRotation.z);
|
||||
|
||||
if (isPlaying()) {
|
||||
head->setLeanSideways(_player->getLeanSideways());
|
||||
head->setLeanForward(_player->getLeanForward());
|
||||
return;
|
||||
}
|
||||
// the priovr can give us exact lean
|
||||
if (Application::getInstance()->getPrioVR()->isActive()) {
|
||||
glm::vec3 eulers = glm::degrees(safeEulerAngles(Application::getInstance()->getPrioVR()->getTorsoRotation()));
|
||||
|
|
|
@ -229,6 +229,11 @@ void Player::startPlaying() {
|
|||
_audioThread->start();
|
||||
QMetaObject::invokeMethod(_injector.data(), "injectAudio", Qt::QueuedConnection);
|
||||
|
||||
// Save head orientation
|
||||
if (_avatar->getHeadData()) {
|
||||
_originalHeadOrientation = _avatar->getHeadOrientation();
|
||||
}
|
||||
|
||||
_timer.start();
|
||||
}
|
||||
}
|
||||
|
@ -252,6 +257,12 @@ void Player::stopPlaying() {
|
|||
_audioThread, &QThread::deleteLater);
|
||||
_injector.clear();
|
||||
_audioThread = NULL;
|
||||
|
||||
// Restore head orientation
|
||||
if (_avatar->getHeadData()) {
|
||||
_avatar->setHeadOrientation(_originalHeadOrientation);
|
||||
}
|
||||
|
||||
qDebug() << "Recorder::stopPlaying()";
|
||||
}
|
||||
|
||||
|
@ -281,10 +292,6 @@ void Player::play() {
|
|||
_avatar->setOrientation(_recording->getFrame(_currentFrame).getRotation());
|
||||
_avatar->setTargetScale(_recording->getFrame(_currentFrame).getScale());
|
||||
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
||||
if (head) {
|
||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
||||
}
|
||||
} else {
|
||||
_avatar->setPosition(_recording->getFrame(0).getTranslation() +
|
||||
_recording->getFrame(_currentFrame).getTranslation());
|
||||
|
@ -293,11 +300,16 @@ void Player::play() {
|
|||
_avatar->setTargetScale(_recording->getFrame(0).getScale() *
|
||||
_recording->getFrame(_currentFrame).getScale());
|
||||
_avatar->setJointRotations(_recording->getFrame(_currentFrame).getJointRotations());
|
||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
||||
if (head) {
|
||||
|
||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
||||
}
|
||||
}
|
||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
||||
if (head) {
|
||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
||||
head->setLeanSideways(_recording->getFrame(_currentFrame).getLeanSideways());
|
||||
head->setLeanForward(_recording->getFrame(_currentFrame).getLeanForward());
|
||||
glm::vec3 eulers = glm::degrees(safeEulerAngles(_recording->getFrame(_currentFrame).getHeadRotation()));
|
||||
head->setBasePitch(eulers.x);
|
||||
head->setBaseYaw(eulers.y);
|
||||
head->setBaseRoll(eulers.z);
|
||||
}
|
||||
|
||||
_options.setPosition(_avatar->getPosition());
|
||||
|
|
|
@ -162,6 +162,8 @@ private:
|
|||
QSharedPointer<AudioInjector> _injector;
|
||||
AudioInjectorOptions _options;
|
||||
|
||||
glm::quat _originalHeadOrientation;
|
||||
|
||||
AvatarData* _avatar;
|
||||
QThread* _audioThread;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue