mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 06:37:27 +02:00
Fix bug introduced in CR
This commit is contained in:
parent
45ccb01297
commit
29830916ba
1 changed files with 15 additions and 8 deletions
|
@ -182,7 +182,7 @@ qint64 Player::elapsed() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
glm::quat Player::getHeadRotation() {
|
glm::quat Player::getHeadRotation() {
|
||||||
if (computeCurrentFrame()) {
|
if (!computeCurrentFrame()) {
|
||||||
qWarning() << "Incorrect use of Player::getHeadRotation()";
|
qWarning() << "Incorrect use of Player::getHeadRotation()";
|
||||||
return glm::quat();
|
return glm::quat();
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ glm::quat Player::getHeadRotation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
float Player::getLeanSideways() {
|
float Player::getLeanSideways() {
|
||||||
if (computeCurrentFrame()) {
|
if (!computeCurrentFrame()) {
|
||||||
qWarning() << "Incorrect use of Player::getLeanSideways()";
|
qWarning() << "Incorrect use of Player::getLeanSideways()";
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ float Player::getLeanSideways() {
|
||||||
}
|
}
|
||||||
|
|
||||||
float Player::getLeanForward() {
|
float Player::getLeanForward() {
|
||||||
if (computeCurrentFrame()) {
|
if (!computeCurrentFrame()) {
|
||||||
qWarning() << "Incorrect use of Player::getLeanForward()";
|
qWarning() << "Incorrect use of Player::getLeanForward()";
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -216,13 +216,16 @@ void Player::startPlaying() {
|
||||||
if (_recording && _recording->getFrameNumber() > 0) {
|
if (_recording && _recording->getFrameNumber() > 0) {
|
||||||
qDebug() << "Recorder::startPlaying()";
|
qDebug() << "Recorder::startPlaying()";
|
||||||
_currentFrame = 0;
|
_currentFrame = 0;
|
||||||
|
|
||||||
|
// Setup audio thread
|
||||||
|
_audioThread = new QThread();
|
||||||
_options.setPosition(_avatar->getPosition());
|
_options.setPosition(_avatar->getPosition());
|
||||||
_options.setOrientation(_avatar->getOrientation());
|
_options.setOrientation(_avatar->getOrientation());
|
||||||
_injector.reset(new AudioInjector(_recording->getAudio(), _options));
|
_injector.reset(new AudioInjector(_recording->getAudio(), _options), &QObject::deleteLater);
|
||||||
_audioThread = new QThread();
|
|
||||||
_injector->moveToThread(_audioThread);
|
_injector->moveToThread(_audioThread);
|
||||||
_audioThread->start();
|
_audioThread->start();
|
||||||
QMetaObject::invokeMethod(_injector.data(), "injectAudio", Qt::QueuedConnection);
|
QMetaObject::invokeMethod(_injector.data(), "injectAudio", Qt::QueuedConnection);
|
||||||
|
|
||||||
_timer.start();
|
_timer.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -232,7 +235,6 @@ void Player::stopPlaying() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Recorder::stopPlaying()";
|
|
||||||
_timer.invalidate();
|
_timer.invalidate();
|
||||||
|
|
||||||
_avatar->clearJointsData();
|
_avatar->clearJointsData();
|
||||||
|
@ -242,6 +244,7 @@ void Player::stopPlaying() {
|
||||||
_injector.clear();
|
_injector.clear();
|
||||||
_audioThread->exit();
|
_audioThread->exit();
|
||||||
_audioThread->deleteLater();
|
_audioThread->deleteLater();
|
||||||
|
qDebug() << "Recorder::stopPlaying()";
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::loadFromFile(QString file) {
|
void Player::loadFromFile(QString file) {
|
||||||
|
@ -259,7 +262,7 @@ void Player::loadRecording(RecordingPointer recording) {
|
||||||
|
|
||||||
void Player::play() {
|
void Player::play() {
|
||||||
computeCurrentFrame();
|
computeCurrentFrame();
|
||||||
if (_currentFrame < 0 || _currentFrame >= _recording->getFrameNumber()) {
|
if (_currentFrame < 0 || _currentFrame >= _recording->getFrameNumber() - 1) {
|
||||||
// If it's the end of the recording, stop playing
|
// If it's the end of the recording, stop playing
|
||||||
stopPlaying();
|
stopPlaying();
|
||||||
return;
|
return;
|
||||||
|
@ -283,6 +286,10 @@ void Player::play() {
|
||||||
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
HeadData* head = const_cast<HeadData*>(_avatar->getHeadData());
|
||||||
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
head->setBlendshapeCoefficients(_recording->getFrame(_currentFrame).getBlendshapeCoefficients());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_options.setPosition(_avatar->getPosition());
|
||||||
|
_options.setOrientation(_avatar->getOrientation());
|
||||||
|
_injector->setOptions(_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::computeCurrentFrame() {
|
bool Player::computeCurrentFrame() {
|
||||||
|
@ -294,7 +301,7 @@ bool Player::computeCurrentFrame() {
|
||||||
_currentFrame = 0;
|
_currentFrame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (_currentFrame < _recording->getFrameNumber() &&
|
while (_currentFrame < _recording->getFrameNumber() - 1 &&
|
||||||
_recording->getFrameTimestamp(_currentFrame) < _timer.elapsed()) {
|
_recording->getFrameTimestamp(_currentFrame) < _timer.elapsed()) {
|
||||||
++_currentFrame;
|
++_currentFrame;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue