mumble-voip_mumble/src/mumble/PositionalAudioViewer.cpp

75 lines
2.1 KiB
C++

// Copyright 2021-2023 The Mumble Developers. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file at the root of the
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
#include "PositionalAudioViewer.h"
#include "ui_PositionalAudioViewer.h"
#include "PluginManager.h"
#include "Global.h"
PositionalAudioViewer::PositionalAudioViewer() : m_ui(std::make_unique< Ui::PositionalAudioViewer >()) {
m_ui->setupUi(this);
connect(&m_timer, &QTimer::timeout, this, &PositionalAudioViewer::update);
m_timer.start(100);
}
PositionalAudioViewer::~PositionalAudioViewer() {
}
void PositionalAudioViewer::update() {
auto pluginManager = Global::get().pluginManager;
if (!pluginManager) {
return;
}
pluginManager->fetchPositionalData();
const PositionalData &posData = pluginManager->getPositionalData();
updatePlayer(posData);
updateCamera(posData);
m_ui->context->setPlainText(posData.getContext());
m_ui->identity->setPlainText(posData.getPlayerIdentity());
}
void PositionalAudioViewer::updatePlayer(const PositionalData &posData) {
const Position3D pos = posData.getPlayerPos();
const Vector3D dir = posData.getPlayerDir();
const Vector3D axis = posData.getPlayerAxis();
m_ui->playerPosX->setValue(pos.x);
m_ui->playerPosY->setValue(pos.y);
m_ui->playerPosZ->setValue(pos.z);
m_ui->playerDirX->setValue(dir.x);
m_ui->playerDirY->setValue(dir.y);
m_ui->playerDirZ->setValue(dir.z);
m_ui->playerAxisX->setValue(axis.x);
m_ui->playerAxisY->setValue(axis.y);
m_ui->playerAxisZ->setValue(axis.z);
}
void PositionalAudioViewer::updateCamera(const PositionalData &posData) {
const Position3D pos = posData.getCameraPos();
const Vector3D dir = posData.getCameraDir();
const Vector3D axis = posData.getCameraAxis();
m_ui->cameraPosX->setValue(pos.x);
m_ui->cameraPosY->setValue(pos.y);
m_ui->cameraPosZ->setValue(pos.z);
m_ui->cameraDirX->setValue(dir.x);
m_ui->cameraDirY->setValue(dir.y);
m_ui->cameraDirZ->setValue(dir.z);
m_ui->cameraAxisX->setValue(axis.x);
m_ui->cameraAxisY->setValue(axis.y);
m_ui->cameraAxisZ->setValue(axis.z);
}