aboutsummaryrefslogtreecommitdiff
path: root/src/settings_pane.cc
diff options
context:
space:
mode:
authorccolin2021-01-02 01:10:54 +0100
committerccolin2021-01-02 01:10:54 +0100
commit861d505606d612bc328534dba3257e9ef9a1c269 (patch)
tree7ed7653ac0ec687317464b3518134b2244804a5a /src/settings_pane.cc
parent87f8c49cffe8a994c62c08cdb207e03ed4e0b6b8 (diff)
add basic collision detection
Diffstat (limited to 'src/settings_pane.cc')
-rw-r--r--src/settings_pane.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/settings_pane.cc b/src/settings_pane.cc
new file mode 100644
index 0000000..f37c14c
--- /dev/null
+++ b/src/settings_pane.cc
@@ -0,0 +1,44 @@
+#include "settings_pane.hh"
+
+#include <QCheckBox>
+#include <QDoubleSpinBox>
+#include <QFormLayout>
+
+
+SettingsPane::SettingsPane(QWidget *parent)
+ :QWidget(parent) {
+ QDoubleSpinBox *sphere_radius = new QDoubleSpinBox();
+ QCheckBox *show_trajectories = new QCheckBox();
+ QCheckBox *show_support_lines = new QCheckBox();
+ collisions = new QListWidget();
+
+ connect(sphere_radius, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
+ this, &SettingsPane::sphereRadiusChanged);
+ connect(show_trajectories, &QCheckBox::stateChanged,
+ this, &SettingsPane::toggledTrajectories);
+ connect(show_support_lines, &QCheckBox::stateChanged,
+ this, &SettingsPane::toggledSupportLines);
+
+ QFormLayout *layout = new QFormLayout;
+ layout->addRow("Taille de la sphère de collision", sphere_radius);
+ layout->addRow("Afficher les trajectoires", show_trajectories);
+ layout->addRow("Afficher les lignes de support", show_support_lines);
+ layout->addRow(collisions);
+ setLayout(layout);
+}
+
+
+void SettingsPane::addCollision(int idA, int idB, int frame) {
+ QListWidgetItem *item = new QListWidgetItem(QString::number(frame) + ": "
+ + QString::number(idA) + " / " + QString::number(idB));
+ item->setFlags(Qt::ItemIsEnabled | Qt::ItemNeverHasChildren);
+ collisions->addItem(item);
+}
+
+
+void SettingsPane::clearCollisions() {
+ QListWidgetItem *item;
+ while ((item = collisions->takeItem(0)) != nullptr) {
+ delete item;
+ }
+}