Overte C++ Documentation
ObjectActionTractor.h
1 //
2 // ObjectActionTractor.h
3 // libraries/physics/src
4 //
5 // Created by Seth Alves 2017-5-8
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_ObjectActionTractor_h
13 #define hifi_ObjectActionTractor_h
14 
15 #include "ObjectAction.h"
16 
17 class ObjectActionTractor : public ObjectAction {
18 public:
19  ObjectActionTractor(const QUuid& id, EntityItemPointer ownerEntity);
20  virtual ~ObjectActionTractor();
21 
22  virtual bool updateArguments(QVariantMap arguments) override;
23  virtual QVariantMap getArguments() override;
24 
25  virtual void updateActionWorker(float deltaTimeStep) override;
26 
27  virtual QByteArray serialize() const override;
28  virtual void deserialize(QByteArray serializedArguments) override;
29 
30  virtual bool getTarget(float deltaTimeStep, glm::quat& rotation, glm::vec3& position,
31  glm::vec3& linearVelocity, glm::vec3& angularVelocity,
32  float& linearTimeScale, float& angularTimeScale);
33 
34 protected:
35  static const uint16_t tractorVersion;
36 
37  glm::vec3 _positionalTarget;
38  glm::vec3 _desiredPositionalTarget;
39  glm::vec3 _lastPositionTarget;
40  float _linearTimeScale;
41  bool _positionalTargetSet;
42  bool _havePositionTargetHistory { false };
43 
44  glm::quat _rotationalTarget;
45  glm::quat _desiredRotationalTarget;
46  float _angularTimeScale;
47  bool _rotationalTargetSet;
48 
49  glm::vec3 _linearVelocityTarget;
50  glm::vec3 _angularVelocityTarget;
51 
52  virtual bool prepareForTractorUpdate(btScalar deltaTimeStep);
53 
54  void serializeParameters(QDataStream& dataStream) const;
55  void deserializeParameters(QByteArray serializedArguments, QDataStream& dataStream);
56 };
57 
58 #endif // hifi_ObjectActionTractor_h