From 7a1a9d6496b661e5618340de219ebec08e1b5246 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 7 May 2017 19:42:04 -0700 Subject: [PATCH] start on code to remap constraint IDs during import --- libraries/entities/src/EntityDynamicInterface.h | 4 ++++ libraries/physics/src/ObjectDynamic.cpp | 11 +++++++++++ libraries/physics/src/ObjectDynamic.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/libraries/entities/src/EntityDynamicInterface.h b/libraries/entities/src/EntityDynamicInterface.h index 536389ef2d..ccfbafec2e 100644 --- a/libraries/entities/src/EntityDynamicInterface.h +++ b/libraries/entities/src/EntityDynamicInterface.h @@ -17,6 +17,7 @@ #include class EntityItem; +class EntityItemID; class EntitySimulation; using EntityItemPointer = std::shared_ptr; using EntityItemWeakPointer = std::weak_ptr; @@ -45,6 +46,9 @@ public: virtual ~EntityDynamicInterface() { } const QUuid& getID() const { return _id; } EntityDynamicType getType() const { return _type; } + + virtual void remapIDs(QHash* map) = 0; + virtual bool isAction() const { return false; } virtual bool isConstraint() const { return false; } virtual bool isReadyForAdd() const { return true; } diff --git a/libraries/physics/src/ObjectDynamic.cpp b/libraries/physics/src/ObjectDynamic.cpp index c11817041e..3bad6b135b 100644 --- a/libraries/physics/src/ObjectDynamic.cpp +++ b/libraries/physics/src/ObjectDynamic.cpp @@ -24,6 +24,17 @@ ObjectDynamic::ObjectDynamic(EntityDynamicType type, const QUuid& id, EntityItem ObjectDynamic::~ObjectDynamic() { } +void ObjectDynamic::remapIDs(QHash* map) { + withWriteLock([&]{ + if (map->contains(_id)) { + _id = (*map)[_id]; + } + if (map->contains(_otherID)) { + _otherID = (*map)[_otherID]; + } + }); +} + qint64 ObjectDynamic::getEntityServerClockSkew() const { auto nodeList = DependencyManager::get(); diff --git a/libraries/physics/src/ObjectDynamic.h b/libraries/physics/src/ObjectDynamic.h index 3843647de8..06cea4e525 100644 --- a/libraries/physics/src/ObjectDynamic.h +++ b/libraries/physics/src/ObjectDynamic.h @@ -29,6 +29,8 @@ public: ObjectDynamic(EntityDynamicType type, const QUuid& id, EntityItemPointer ownerEntity); virtual ~ObjectDynamic(); + virtual void remapIDs(QHash* map) override; + virtual void removeFromSimulation(EntitySimulationPointer simulation) const override; virtual EntityItemWeakPointer getOwnerEntity() const override { return _ownerEntity; } virtual void setOwnerEntity(const EntityItemPointer ownerEntity) override { _ownerEntity = ownerEntity; }