15 #ifndef hifi_ObjectDynamic_h
16 #define hifi_ObjectDynamic_h
20 #include <btBulletDynamicsCommon.h>
22 #include <EntityItemID.h>
23 #include <shared/ReadWriteLockable.h>
24 #include <SpatiallyNestable.h>
26 #include "ObjectMotionState.h"
27 #include "BulletUtil.h"
28 #include <EntityDynamicInterface.h>
31 class ObjectDynamic :
public EntityDynamicInterface,
public ReadWriteLockable {
33 ObjectDynamic(EntityDynamicType type,
const QUuid&
id, EntityItemPointer ownerEntity);
34 virtual ~ObjectDynamic();
36 virtual void remapIDs(QHash<EntityItemID, EntityItemID>& map)
override;
38 virtual void removeFromSimulation(EntitySimulationPointer simulation)
const override;
39 virtual EntityItemWeakPointer getOwnerEntity()
const override {
return _ownerEntity; }
40 virtual void setOwnerEntity(
const EntityItemPointer ownerEntity)
override;
42 virtual void invalidate() {};
44 virtual bool updateArguments(QVariantMap arguments)
override;
45 virtual QVariantMap getArguments()
override;
48 virtual QByteArray serialize()
const override = 0;
49 virtual void deserialize(QByteArray serializedArguments)
override = 0;
51 virtual bool lifetimeIsOver()
override;
52 virtual quint64 getExpires()
override {
return _expires; }
54 virtual QList<btRigidBody*> getRigidBodies();
57 quint64 localTimeToServerTime(quint64 timeValue)
const;
58 quint64 serverTimeToLocalTime(quint64 timeValue)
const;
60 btRigidBody* getOtherRigidBody(
EntityItemID otherEntityID);
61 EntityItemPointer getEntityByID(
EntityItemID entityID)
const;
62 virtual btRigidBody* getRigidBody();
63 virtual void activateBody(
bool forceActivation =
false);
64 virtual void forceBodyNonStatic();
66 EntityItemWeakPointer _ownerEntity;
68 quint64 _expires { 0 };
71 SpatiallyNestableWeakPointer _other;
72 SpatiallyNestablePointer getOther();
73 int _otherJointIndex { -1 };
76 qint64 getEntityServerClockSkew()
const;
79 typedef std::shared_ptr<ObjectDynamic> ObjectDynamicPointer;
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28