PeriDyno 1.0.0
Loading...
Searching...
No Matches
CarDriver.cpp
Go to the documentation of this file.
1#include "CarDriver.h"
2
3namespace dyno
4{
6
7 template<typename TDataType>
14
15 template<typename TDataType>
17 {
18
19 Real epsilonAngle = M_PI / 360;
20 auto topo = TypeInfo::cast<DiscreteElements<DataType3f>>(this->inTopology()->getDataPtr());
21
22 auto& d_hinge = topo->hingeJoints();
23 CArray<HingeJoint> c_hinge;
24 c_hinge.assign(d_hinge);
25
26
27 switch (event.key)
28 {
30
31 speed += 2.5;
32 if (speed >= 30)
33 speed = 30;
34 for (size_t i = 0; i < 4; i++)
35 {
36 c_hinge[i].setMoter(speed);
37 }
38 d_hinge.assign(c_hinge);
39
40 break;
42
43 speed -= 2.5;
44 if (speed <= -10)
45 speed = -10;
46 for (size_t i = 0; i < 4; i++)
47 {
48 c_hinge[i].setMoter(speed);
49 }
50 d_hinge.assign(c_hinge);
51
52 break;
54 for (size_t i = 4; i < 6; i++)
55 {
56 if(angle <= M_PI/12)
57 angle += M_PI / 60;
58 c_hinge[i].setRange(angle, angle + epsilonAngle);
59 }
60 d_hinge.assign(c_hinge);
61 break;
63 for (size_t i = 4; i < 6; i++)
64 {
65 if(angle >= -M_PI/12)
66 angle -= M_PI / 60;
67 c_hinge[i].setRange(angle, angle + epsilonAngle);
68 }
69 d_hinge.assign(c_hinge);
70 break;
72 for (size_t i = 4; i < 6; i++)
73 {
74 angle = 0.0f;
75 c_hinge[i].setRange(angle, angle + epsilonAngle);
76 }
77 d_hinge.assign(c_hinge);
78 break;
79
81 speed = 0;
82 for (size_t i = 0; i < 4; i++)
83 {
84 c_hinge[i].setMoter(speed);
85 }
86 d_hinge.assign(c_hinge);
87 break;
88 default:
89 break;
90 }
91
92 }
93
95}
#define DEFINE_CLASS(name)
Definition Object.h:140
#define IMPLEMENT_TCLASS(name, T1)
Definition Object.h:103
#define M_PI
Definition Typedef.inl:36
void onEvent(PKeyboardEvent event) override
Definition CarDriver.cpp:16
TDataType::Real Real
Definition CarDriver.h:27
TA * cast(TB *b)
Definition Typedef.inl:286
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
@ PKEY_S
Definition InputModule.h:79
@ PKEY_A
Definition InputModule.h:61
@ PKEY_Q
Definition InputModule.h:77
@ PKEY_D
Definition InputModule.h:64
@ PKEY_W
Definition InputModule.h:83
@ PKEY_E
Definition InputModule.h:65
Array< T, DeviceType::CPU > CArray
Definition Array.h:151
PKeyboardType key