DYTSrouce/src/utils/TransformPath.cpp

69 lines
1.7 KiB
C++
Raw Normal View History

2025-01-04 04:12:51 +00:00
#include "utils/TransformPath.h"
#include <QFile>
#include <QTextStream>
#include "common/SpdLogger.h"
TransformPath::TransformPath(QObject* parent /*= nullptr*/)
: QObject(parent) {
}
TransformPath::TransformPath(std::vector<Transform> transforms, QObject* parent /*= nullptr*/)
: QObject(parent)
, transforms_(std::move(transforms)){
}
TransformPath::~TransformPath() {
}
TransformPath* TransformPath::LoadFromFile(const QString& path, QObject* parent) {
QFile file(path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
LOG_WARN("Cannot open file for reading: {}", file.errorString().toStdString());
return nullptr;
}
QTextStream in(&file);
std::vector<Transform> transforms;
while (!in.atEnd()) {
Transform transform;
for (int i = 0; i < 3; ++i) {
QString line = in.readLine();
bool ok;
double value = line.toDouble(&ok);
if (ok) {
transform.GetLocation()[i] = value * 1.5;
} else {
LOG_WARN("Failed to convert line to double: {}", line.toStdString());
return {};
}
}
for (int i = 0; i < 3; ++i) {
QString line = in.readLine();
bool ok;
double value = line.toDouble(&ok);
if (ok) {
transform.GetRotation()[i] = value;
} else {
LOG_WARN("Failed to convert line to double: {}", line.toStdString());
return {};
}
}
transforms.push_back(transform);
}
file.close();
return new TransformPath(std::move(transforms), parent);
}