aboutsummaryrefslogtreecommitdiff
path: root/src/drone_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/drone_controller.cc')
-rw-r--r--src/drone_controller.cc82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/drone_controller.cc b/src/drone_controller.cc
index 6ef78ad..588ac23 100644
--- a/src/drone_controller.cc
+++ b/src/drone_controller.cc
@@ -1,89 +1,7 @@
#include "drone_controller.hh"
#include "opengl_widget.hh"
-#include "load_obj.hh"
#include <QJsonArray>
-#include <QDebug>
-#include <QFile>
-
-
-Waypoint::Waypoint(unsigned frame, QVector3D pos)
- :frame(frame),
- pos(pos) {}
-
-
-Waypoint::Waypoint(const QJsonObject &json)
- :Waypoint(json["frame"].toInt(),
- QVector3D(json["position"]["lng_X"].toInt() / 100.0,
- json["position"]["alt_Y"].toInt() / 100.0,
- json["position"]["lat_Z"].toInt() / 100.0)) {}
-
-
-bool Drone::mesh_initialized = false;
-OpenGLMesh *Drone::mesh = nullptr;
-
-Drone::Drone(int id)
- :id(id) {
- if (!mesh_initialized) {
- QVector<GLfloat> verts = load_obj(":/mdl/dji600.obj", LOAD_OBJ_NORMALS | LOAD_OBJ_UVS);
- QOpenGLTexture *texture = new QOpenGLTexture(QImage(":/img/dji600.jpg").mirrored());
- mesh = new OpenGLMesh(verts, texture);
- mesh_initialized = true;
- }
- OpenGLWidget::instance->meshes.append(*mesh);
- mesh_id = OpenGLWidget::instance->meshes.size() - 1;
-}
-
-
-Drone::Drone(const QJsonObject &json)
- :Drone(json["id"].toInt()) {
- QJsonArray ja = json["waypoints"].toArray();
- waypoints.reserve(ja.size());
- for (const QJsonValue &o : ja) {
- waypoints.append(Waypoint(o.toObject()));
- }
-}
-
-
-const QVector<Waypoint> Drone::getWaypoints() const {
- return waypoints;
-}
-
-
-void Drone::setTo(int frame) {
- int prev = -1, next = -1;
- const Waypoint *prev_wp, *next_wp;
- for (const Waypoint &wp : waypoints) { // TODO: this can be optimized
- if (wp.frame < frame) {
- prev = wp.frame;
- prev_wp = &wp;
- } else {
- next = wp.frame;
- next_wp = &wp;
- break;
- }
- }
- OpenGLMesh &mesh = OpenGLWidget::instance->meshes[mesh_id];
- mesh.mat = QMatrix4x4();
- if (next > -1 && prev == -1) {
- pos = next_wp->pos;
- } else if (prev > -1 && next == -1) {
- pos = prev_wp->pos;
- } else {
- pos = lerp(prev_wp->pos, next_wp->pos, (double) (frame-prev) / (next-prev));
- }
- mesh.mat.translate(pos);
-}
-
-
-QVector3D Drone::getPos() const {
- return pos;
-}
-
-
-int Drone::getId() const {
- return id;
-}
DroneController::DroneController(const QJsonObject &json)