Overte C++ Documentation
ObjectConstraintSlider.h
1 //
2 // ObjectConstraintSlider.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_ObjectConstraintSlider_h
13 #define hifi_ObjectConstraintSlider_h
14 
15 #include "ObjectConstraint.h"
16 
17 // http://bulletphysics.org/Bullet/BulletFull/classbtSliderConstraint.html
18 
19 class ObjectConstraintSlider : public ObjectConstraint {
20 public:
21  ObjectConstraintSlider(const QUuid& id, EntityItemPointer ownerEntity);
22  virtual ~ObjectConstraintSlider();
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 updateSlider();
39 
40  glm::vec3 _pointInA;
41  glm::vec3 _axisInA;
42 
43  glm::vec3 _pointInB;
44  glm::vec3 _axisInB;
45 
46  float _linearLow { std::numeric_limits<float>::max() };
47  float _linearHigh { std::numeric_limits<float>::min() };
48 
49  float _angularLow { -TWO_PI };
50  float _angularHigh { TWO_PI };
51 };
52 
53 #endif // hifi_ObjectConstraintSlider_h