Overte C++ Documentation
ObjectConstraintConeTwist.h
1 //
2 // ObjectConstraintConeTwist.h
3 // libraries/physics/src
4 //
5 // Created by Seth Alves 2017-4-23
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_ObjectConstraintConeTwist_h
13 #define hifi_ObjectConstraintConeTwist_h
14 
15 #include "ObjectConstraint.h"
16 
17 // http://bulletphysics.org/Bullet/BulletFull/classbtConeTwistConstraint.html
18 
19 class ObjectConstraintConeTwist : public ObjectConstraint {
20 public:
21  ObjectConstraintConeTwist(const QUuid& id, EntityItemPointer ownerEntity);
22  virtual ~ObjectConstraintConeTwist();
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 updateConeTwist();
39 
40  glm::vec3 _pivotInA;
41  glm::vec3 _axisInA;
42 
43  glm::vec3 _pivotInB;
44  glm::vec3 _axisInB;
45 
46  float _swingSpan1 { TWO_PI };
47  float _swingSpan2 { TWO_PI };;
48  float _twistSpan { TWO_PI };;
49 };
50 
51 #endif // hifi_ObjectConstraintConeTwist_h