Overte C++ Documentation
ObjectConstraintHinge.h
1 //
2 // ObjectConstraintHinge.h
3 // libraries/physics/src
4 //
5 // Created by Seth Alves 2017-4-11
6 // Copyright 2017 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_ObjectConstraintHinge_h
13 #define hifi_ObjectConstraintHinge_h
14 
15 #include "ObjectConstraint.h"
16 
17 // http://bulletphysics.org/Bullet/BulletFull/classbtHingeConstraint.html
18 
19 class ObjectConstraintHinge : public ObjectConstraint {
20 public:
21  ObjectConstraintHinge(const QUuid& id, EntityItemPointer ownerEntity);
22  virtual ~ObjectConstraintHinge();
23 
24  virtual void prepareForPhysicsSimulation() override;
25 
26  virtual bool updateArguments(QVariantMap arguments) override;
27  virtual QVariantMap getArguments() override;
28 
29  virtual QByteArray serialize() const override;
30  virtual void deserialize(QByteArray serializedArguments) override;
31 
32  virtual QList<btRigidBody*> getRigidBodies() override;
33  virtual btTypedConstraint* getConstraint() override;
34 
35 protected:
36  static const uint16_t constraintVersion;
37 
38  void updateHinge();
39 
40  glm::vec3 _pivotInA;
41  glm::vec3 _axisInA;
42 
43  glm::vec3 _pivotInB;
44  glm::vec3 _axisInB;
45 
46  float _low { -TWO_PI };
47  float _high { TWO_PI };
48 
49  // https://gamedev.stackexchange.com/questions/71436/what-are-the-parameters-for-bthingeconstraintsetlimit
50  //
51  // softness: unused
52  // biasFactor: unused
53  // relaxationFactor: unused
54 };
55 
56 #endif // hifi_ObjectConstraintHinge_h