PeriDyno 1.0.0
Loading...
Searching...
No Matches
QVehicleInfoWidget.h
Go to the documentation of this file.
1
19#pragma once
20#include "QFieldWidget.h"
22#include "Field.h"
23#include <QHBoxLayout>
24#include <QVBoxLayout>
25#include "Field/VehicleInfo.h"
26#include <QComboBox>
27#include <QLineEdit>
28#include "qcheckbox.h"
30#include "qpushbutton.h"
31#include "qspinbox.h"
32
33
34namespace dyno
35{
36
37
38 class QRigidBodyDetail : public QWidget
39 {
40 Q_OBJECT
41 public:
44
45 signals:
50
51 public slots:
55 void updateData();
56
57 private:
58 //Current rigidbody type
60
61 //Qt Widgets
73 QComboBox* mMotionWidget = nullptr;
74 QSpinBox* mRigidGroup = nullptr;
75
76 //Source data
78 //
79 std::vector<ConfigMotionType> mAllConfigMotionTypes = { CMT_Static,CMT_Kinematic,CMT_Dynamic };
80 };
81
82
83 class QJointBodyDetail : public QWidget
84 {
85 Q_OBJECT
86 public:
89
90 signals:
95
96 public slots:
100 void updateData();
101
102
103 private:
105
108 QCheckBox* mUseRangeWidget = nullptr;
112
114 };
115
116
117
118 class RigidBodyItemLayout : public QHBoxLayout
119 {
120 Q_OBJECT
121 public:
122 RigidBodyItemLayout(int id);
124
132 void setValue(const VehicleRigidBodyInfo& v);
133
137 void setId(int id) { mElementIndex = id; mIndexLabel->setText(std::to_string(id).c_str()); };
138
142 void setObjId(int id) { mObjID = id; };
143
147 int getObjID() { return mObjID; };
148
152 int getRigidID() { return mElementIndex; };
153
155
156 signals:
161
165 void valueChange(int);
166
170 void nameChange(int);
171
172 public slots:
173
175
176 void emitChange(int v){emit valueChange(v);}
177
178 void emitNameChange(int v) {emit nameChange(v);}
179
184
185 public:
186
187 QLineEdit* mNameInput = nullptr;
189
190 private:
191
192 // Index in the current RigidBody list.
194
195 // Widgets
196 QSpinBox* mShapeIDSpin = nullptr;
197 QPushButton* mRemoveButton = nullptr;
198 QPushButton* mOffsetButton = nullptr;
199 QLabel* mIndexLabel = nullptr;
200 QComboBox* mTypeCombox = nullptr;
201
202 //All RigidBody types
203 const std::vector<ConfigShapeType> mVecShapeType = { Box,Tet,Capsule,Sphere ,Tri, OtherShape };
204 //Unique objId used to identify this Item.
205 int mObjID = -1;
206 std::vector<QRigidBodyDetail*> mDetailWidgets;
207
208
209 };
210
211
212 class mJointItemLayout : public QHBoxLayout
213 {
214 Q_OBJECT
215 public:
216 mJointItemLayout(int id);
217
226 void setValue(const VehicleJointInfo& v);
230 void setId(int id) { mElementIndex = id; mIndex->setText(std::to_string(id).c_str()); };
231
232 signals:
237 void valueChange(int);
238
239
240 public slots:
241
243
244 void emitChange(int v){emit valueChange(v);}
245
250
251 public:
252
253 QComboBox* mNameInput1 = nullptr;
254 QComboBox* mNameInput2 = nullptr;
255
256 int mName1_ObjID = -1;
257 int mName2_ObjID = -1;
258
259 private:
260 // Index in the current Joint list.
262
263 // Qt Widget
264 QComboBox* mTypeInput = nullptr;
265 QLabel* mIndex = nullptr;
266 QCheckBox* mUseMoter = nullptr;
267 QDoubleSpinBox* mMoterInput = nullptr;
268 QPushButton* mEditButton = nullptr;
269 QPushButton* mRemoveButton = nullptr;
270
271 // All Joint types
272 const std::vector<ConfigJointType> mVecJointType = { BallAndSocket,Slider,Hinge,Fixed,Point,OtherJoint };
274 std::vector<QJointBodyDetail*> mDetailWidgets;
275 };
276
277
279 {
280 Q_OBJECT
281 public:
283
285
287
288 signals:
293
294
295 public slots:
299 void updateField();
303 void updateWidget();
307 void updateJointComboBox();
311 void updateVector(int) { updateVector(); }
312 void updateVector();
313
314 void bulidQueryMap();
315
317
319
320 void addRigidBodyItemWidgetByID(int objId);
321
322 void addJointItemWidget();
323
325
326 void removeJointItemWidgetById(int id);
327
328 private:
329
330 void setJointNameComboxEmpty(mJointItemLayout* item, bool emitSignal, int select, int index);
331
332 int getRigidItemObjID(std::string str);
333
335
336 void createItemWidget(const VehicleRigidBodyInfo& rigidBody);
337
338 void createJointItemWidget(const VehicleJointInfo& rigidBody);
339
341
343
344 private:
345 //Field
347
348 //Qt Widgets
349 QVBoxLayout* mMainLayout = nullptr;
350 QVBoxLayout* mRigidsLayout = nullptr;
351 QVBoxLayout* mJointsLayout = nullptr;
352 std::vector<RigidBodyItemLayout*> mRigidBodyItems;
353 std::vector<mJointItemLayout*> mJointItems;
354
355 //QueryMap for automatic renaming
356 std::map<std::string, int> mName2RigidId;
357 std::map<int, std::string> mObjID2Name;
358
359 int mRigidCounter = 0; //RigidItems Counter
360 };
361
362
363
364}
#define DECLARE_FIELD_WIDGET
QFieldWidget(FBase *field)
void jointChange()
Transmits a signal when data is updated.
QPiecewiseDoubleSpinBox * mMinWidget
QPiecewiseDoubleSpinBox * mMaxWidget
QJointBodyDetail(VehicleJointInfo &jointInfo)
void updateData()
Updated when any element parameter is changed.
VehicleJointInfo * mJointData
mVec3fWidget * mAnchorPointWidget
QRigidBodyDetail(VehicleRigidBodyInfo &rigidInfo)
std::vector< ConfigMotionType > mAllConfigMotionTypes
void updateData()
Updated when any element parameter is changed.
mVec3fWidget * mHalfLengthWidget
mPiecewiseDoubleSpinBox * mRadiusWidget
mVec3fWidget * mTranslationWidget
VehicleRigidBodyInfo * mRigidBodyData
mPiecewiseDoubleSpinBox * mCapsuleLengthWidget
void rigidChange()
Transmits a signal when data is updated.
std::map< std::string, int > mName2RigidId
void setJointNameComboxEmpty(mJointItemLayout *item, bool emitSignal, int select, int index)
void updateJointComboBox()
Update text and key of the comboxbox.
void updateWidget()
Called when the field is updated.
void addRigidBodyItemWidgetByID(int objId)
std::vector< mJointItemLayout * > mJointItems
void updateJointLayoutComboxText(mJointItemLayout *itemLayout)
std::map< int, std::string > mObjID2Name
void connectRigidWidgetSignal(RigidBodyItemLayout *itemLayout)
void vectorChange()
Data Change.
void updateVector(int)
Update Configuration Data;.
std::vector< RigidBodyItemLayout * > mRigidBodyItems
void updateField()
Called when the widget is updated.
int getRigidItemObjID(std::string str)
void connectJointWidgetSignal(mJointItemLayout *itemLayout)
void createItemWidget(const VehicleRigidBodyInfo &rigidBody)
void createJointItemWidget(const VehicleJointInfo &rigidBody)
DECLARE_FIELD_WIDGET QVehicleInfoWidget(FBase *field)
int getObjID()
Unique objId used to identify this Item.
void setObjId(int id)
Unique objId used to identify this Item.
const std::vector< ConfigShapeType > mVecShapeType
void createRigidDetailWidget()
Create RigidBody Detail Panel.
int getRigidID()
RigidBody Index in the current list.
VehicleRigidBodyInfo value()
Get current RigidBodyInfo.
void setValue(const VehicleRigidBodyInfo &v)
Initialization RigidBodyInfo.
VehicleRigidBodyInfo mRigidInfo
void removeByElementIndexId(int)
RigidBody Index in the current list.
std::vector< QRigidBodyDetail * > mDetailWidgets
void valueChange(int)
RigidBody Data Change.
void setId(int id)
Index in the current RigidBody list.
void nameChange(int)
RigidBody Name Change.
The VehicleBind class is used to record information about created rigid bodies and joints....
const std::vector< ConfigJointType > mVecJointType
void removeByElementIndexId(int)
std::vector< QJointBodyDetail * > mDetailWidgets
void createJointDetailWidget()
Create Joint Detail Panel.
void setId(int id)
Index in the current Joint list.
VehicleJointInfo value()
Get current RigidBodyInfo.
void valueChange(int)
Joint Data Change.
void setValue(const VehicleJointInfo &v)
Initialization RigidBodyInfo.
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
ConfigJointType
Definition VehicleInfo.h:32
@ Point
Definition VehicleInfo.h:37
@ BallAndSocket
Definition VehicleInfo.h:33
@ OtherJoint
Definition VehicleInfo.h:38
@ Slider
Definition VehicleInfo.h:34
@ Hinge
Definition VehicleInfo.h:35
@ Fixed
Definition VehicleInfo.h:36
ConfigShapeType
Definition VehicleInfo.h:22
@ Sphere
Definition VehicleInfo.h:26
@ OtherShape
Definition VehicleInfo.h:28
@ Capsule
Definition VehicleInfo.h:25
@ CMT_Static
Definition VehicleInfo.h:16
@ CMT_Dynamic
Definition VehicleInfo.h:18
@ CMT_Kinematic
Definition VehicleInfo.h:17
The joint information is stored in mVehicleJointInfo.
The Rigid body information is stored in mVehicleJointInfo.
Definition VehicleInfo.h:61