diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index f70537a952..e17ab587f6 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -22,6 +22,7 @@ ModelOverlay::ModelOverlay() _modelTextures(QVariantMap()) { _model->init(); + _model->setSpatiallyNestableOverride(this); _isLoaded = false; } @@ -33,6 +34,7 @@ ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : _updateModel(false) { _model->init(); + _model->setSpatiallyNestableOverride(this); if (_url.isValid()) { _updateModel = true; _isLoaded = false; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 087fcda8e1..be64985fdb 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -508,7 +508,7 @@ ModelPointer RenderableModelEntityItem::getModel(QSharedPointerallocateModel(getModelURL(), renderer->getEntityLoadingPriority(*this)); - _model->setSpatiallyNestableOverride(shared_from_this()); + _model->setSpatiallyNestableOverride(this); _needsInitialSimulation = true; // If we need to change URLs, update it *after rendering* (to avoid access violations) } else if (QUrl(getModelURL()) != _model->getURL()) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 59b997b2cc..b28b2022fc 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -133,16 +133,15 @@ void Model::setRotation(const glm::quat& rotation) { updateRenderItems(); } -void Model::setSpatiallyNestableOverride(SpatiallyNestablePointer override) { +void Model::setSpatiallyNestableOverride(SpatiallyNestable* override) { _spatiallyNestableOverride = override; updateRenderItems(); } Transform Model::getTransform() const { - SpatiallyNestablePointer spatiallyNestableOverride = _spatiallyNestableOverride.lock(); - if (spatiallyNestableOverride) { + if (_spatiallyNestableOverride) { bool success; - Transform transform = spatiallyNestableOverride->getTransform(success); + Transform transform = _spatiallyNestableOverride->getTransform(success); if (success) { transform.setScale(getScale()); return transform; diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 8b6992394f..dfb6822eb5 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -205,7 +205,7 @@ public: void setTranslation(const glm::vec3& translation); void setRotation(const glm::quat& rotation); - void setSpatiallyNestableOverride(SpatiallyNestablePointer ptr); + void setSpatiallyNestableOverride(SpatiallyNestable* ptr); const glm::vec3& getTranslation() const { return _translation; } const glm::quat& getRotation() const { return _rotation; } @@ -297,7 +297,7 @@ protected: glm::quat _rotation; glm::vec3 _scale; - SpatiallyNestableWeakPointer _spatiallyNestableOverride; + SpatiallyNestable* _spatiallyNestableOverride { nullptr }; glm::vec3 _offset;