From cd5826e2ce5cbb67f4328469d82b76455c098d14 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 3 Nov 2016 09:03:04 -0700 Subject: [PATCH] load model of new entity with unknown dimensions --- .../src/RenderableModelEntityItem.cpp | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 95d28f74f3..332a88e499 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -55,7 +55,10 @@ void RenderableModelEntityItem::setModelURL(const QString& url) { auto& currentURL = getParsedModelURL(); ModelEntityItem::setModelURL(url); - if (currentURL != getParsedModelURL() || !_model) { + if (currentURL != getParsedModelURL()) { + _needsModelReload = true; + } + if (_needsModelReload || !_model) { EntityTreePointer tree = getTree(); if (tree) { QMetaObject::invokeMethod(tree.get(), "callLoader", Qt::QueuedConnection, Q_ARG(EntityItemID, getID())); @@ -523,17 +526,24 @@ bool RenderableModelEntityItem::needsToCallUpdate() const { } void RenderableModelEntityItem::update(const quint64& now) { - if (!_dimensionsInitialized && _model && _model->isActive()) { - if (_model->isLoaded()) { - EntityItemProperties properties; - properties.setLastEdited(usecTimestampNow()); // we must set the edit time since we're editing it - auto extents = _model->getMeshExtents(); - properties.setDimensions(extents.maximum - extents.minimum); - qCDebug(entitiesrenderer) << "Autoresizing:" << (!getName().isEmpty() ? getName() : getModelURL()); - QMetaObject::invokeMethod(DependencyManager::get().data(), "editEntity", - Qt::QueuedConnection, - Q_ARG(QUuid, getEntityItemID()), - Q_ARG(EntityItemProperties, properties)); + if (!_dimensionsInitialized) { + if (_model) { + if (_model->isActive() && _model->isLoaded()) { + EntityItemProperties properties; + properties.setLastEdited(usecTimestampNow()); // we must set the edit time since we're editing it + auto extents = _model->getMeshExtents(); + properties.setDimensions(extents.maximum - extents.minimum); + qCDebug(entitiesrenderer) << "Autoresizing:" << (!getName().isEmpty() ? getName() : getModelURL()); + QMetaObject::invokeMethod(DependencyManager::get().data(), "editEntity", + Qt::QueuedConnection, + Q_ARG(QUuid, getEntityItemID()), + Q_ARG(EntityItemProperties, properties)); + } + } else if (_needsModelReload) { + EntityTreePointer tree = getTree(); + if (tree) { + QMetaObject::invokeMethod(tree.get(), "callLoader", Qt::QueuedConnection, Q_ARG(EntityItemID, getID())); + } } }