12 #ifndef hifi_ObjectActionTractor_h
13 #define hifi_ObjectActionTractor_h
15 #include "ObjectAction.h"
17 class ObjectActionTractor :
public ObjectAction {
19 ObjectActionTractor(
const QUuid&
id, EntityItemPointer ownerEntity);
20 virtual ~ObjectActionTractor();
22 virtual bool updateArguments(QVariantMap arguments)
override;
23 virtual QVariantMap getArguments()
override;
25 virtual void updateActionWorker(
float deltaTimeStep)
override;
27 virtual QByteArray serialize()
const override;
28 virtual void deserialize(QByteArray serializedArguments)
override;
30 virtual bool getTarget(
float deltaTimeStep, glm::quat& rotation, glm::vec3& position,
31 glm::vec3& linearVelocity, glm::vec3& angularVelocity,
32 float& linearTimeScale,
float& angularTimeScale);
35 static const uint16_t tractorVersion;
37 glm::vec3 _positionalTarget;
38 glm::vec3 _desiredPositionalTarget;
39 glm::vec3 _lastPositionTarget;
40 float _linearTimeScale;
41 bool _positionalTargetSet;
42 bool _havePositionTargetHistory {
false };
44 glm::quat _rotationalTarget;
45 glm::quat _desiredRotationalTarget;
46 float _angularTimeScale;
47 bool _rotationalTargetSet;
49 glm::vec3 _linearVelocityTarget;
50 glm::vec3 _angularVelocityTarget;
52 virtual bool prepareForTractorUpdate(btScalar deltaTimeStep);
54 void serializeParameters(QDataStream& dataStream)
const;
55 void deserializeParameters(QByteArray serializedArguments, QDataStream& dataStream);