-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsimulationhandler.h
More file actions
136 lines (114 loc) · 4.36 KB
/
simulationhandler.h
File metadata and controls
136 lines (114 loc) · 4.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#ifndef SIMULATIONHANDLER_H
#define SIMULATIONHANDLER_H
#include "constants.h"
#include "custom3dwindow.h"
#include "helper.h"
#include "loggerhandler.h"
#include <math.h>
#include <QDebug>
#include <QKeyEvent>
#include <QLabel>
#include <QObject>
#include <QQuaternion>
#include <QSettings>
#include <QVariantAnimation>
#include <QWidget>
#include <Qt3DCore/QAspectEngine>
#include <Qt3DCore/QEntity>
#include <Qt3DCore/QTransform>
#include <Qt3DExtras/QDiffuseSpecularMaterial>
#include <Qt3DExtras/QForwardRenderer>
#include <Qt3DExtras/QOrbitCameraController>
#include <Qt3DRender/QCamera>
#include <Qt3DRender/QCameraLens>
#include <Qt3DRender/QDirectionalLight>
#include <Qt3DRender/QSortPolicy>
#include <Qt3DExtras/QCylinderMesh>
#include <Qt3DExtras/QExtrudedTextMesh>
#include <Qt3DExtras/QPlaneMesh>
#include <Qt3DExtras/QSphereMesh>
#include <Qt3DRender/QMesh>
class SimulationHandler : public QObject
{
Q_OBJECT
public:
SimulationHandler(LoggerHandler *loggerRef, QSettings *settingsRef);
QWidget *getWidget();
public slots:
void updateWithSettings();
void updateWheels(double, double, double, double);
void updateArrow(double, double, double);
void checkLoaded(Qt3DRender::QMesh::Status status);
signals:
void passKeyboard_WChanged(bool);
void passKeyboard_SChanged(bool);
void passKeyboard_AChanged(bool);
void passKeyboard_DChanged(bool);
void passKeyboard_QChanged(bool);
void passKeyboard_EChanged(bool);
void meshesLoaded();
private:
LoggerHandler *logger;
QSettings *settings;
Qt3DCore::QEntity *root;
Qt3DCore::QEntity *FRWheel;
Qt3DCore::QEntity *BLWheel;
Qt3DCore::QEntity *FLWheel;
Qt3DCore::QEntity *BRWheel;
Qt3DCore::QEntity *arrow;
Qt3DCore::QEntity *arrowL;
Qt3DCore::QEntity *arrowR;
Qt3DCore::QEntity *baseFrame;
QVariantAnimation *FRAnimation;
QVariantAnimation *BLAnimation;
QVariantAnimation *FLAnimation;
QVariantAnimation *BRAnimation;
Qt3DCore::QTransform *arrowTransform;
Qt3DCore::QTransform *arrowLTransform;
Qt3DCore::QTransform *arrowRTransform;
Qt3DCore::QTransform *FRWheelTransform;
Qt3DCore::QTransform *BLWheelTransform;
Qt3DCore::QTransform *FLWheelTransform;
Qt3DCore::QTransform *BRWheelTransform;
Custom3DWindow *view;
QWidget *simulationWidget;
int loadedMeshesCount;
int expectedLoadedMeshes;
float FLcurrentRotation;
float BRcurrentRotation;
float FRcurrentRotation;
float BLcurrentRotation;
void setup3DView();
void setupConnections();
void setupMeshes();
void setupFRAnimation();
void setupBLAnimation();
void setupFLAnimation();
void setupBRAnimation();
void alignMeshes();
void generateMeshes(Qt3DExtras::QDiffuseSpecularMaterial *gridMaterial,
Qt3DExtras::QDiffuseSpecularMaterial *innerBaseMaterial,
Qt3DExtras::QDiffuseSpecularMaterial *frameMaterial,
Qt3DExtras::QDiffuseSpecularMaterial *arrowMaterial);
void generateGrid(double size, Qt3DExtras::QDiffuseSpecularMaterial *gridMaterial);
void generateGridLabels(double size, Qt3DExtras::QDiffuseSpecularMaterial *gridMaterial);
Qt3DCore::QEntity *generateArrow(bool curved,
bool mirrorCurve,
Qt3DExtras::QDiffuseSpecularMaterial *arrowMaterial);
Qt3DCore::QEntity *generateFrame(double baseLength,
double baseWidth,
double frameThickness,
Qt3DExtras::QDiffuseSpecularMaterial *frameMaterial,
Qt3DExtras::QDiffuseSpecularMaterial *inBaseMaterial);
Qt3DCore::QEntity *generateWheel(int partCount,
double wheelWidth,
double wheelDiameter,
double frameThickness,
bool invert,
Qt3DExtras::QDiffuseSpecularMaterial *wheelMaterial);
void updateFRAnimation(double FRSpeed, int FRmappedDuration);
void updateBLAnimation(double BLSpeed, int BLmappedDuration);
void updateFLAnimation(double FLSpeed, int FLmappedDuration);
void updateBRAnimation(double BRSpeed, int BRmappedDuration);
};
#endif // SIMULATIONHANDLER_H