mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 18:36:45 +02:00
trying to fix model issue
This commit is contained in:
parent
215193ad90
commit
3a6e84e681
4 changed files with 8 additions and 17 deletions
|
@ -1032,10 +1032,6 @@ bool ModelEntityRenderer::needsRenderUpdate() const {
|
||||||
model = _model;
|
model = _model;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (_modelJustLoaded) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (model) {
|
if (model) {
|
||||||
if (_needsJointSimulation || _moving || _animating) {
|
if (_needsJointSimulation || _moving || _animating) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -1149,14 +1145,15 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce
|
||||||
model->removeFromScene(scene, transaction);
|
model->removeFromScene(scene, transaction);
|
||||||
withWriteLock([&] { _model.reset(); });
|
withWriteLock([&] { _model.reset(); });
|
||||||
}
|
}
|
||||||
|
emit requestRenderUpdate();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_modelJustLoaded = false;
|
|
||||||
// Check for addition
|
// Check for addition
|
||||||
if (_hasModel && !(bool)_model) {
|
if (_hasModel && !(bool)_model) {
|
||||||
model = std::make_shared<Model>(nullptr, entity.get());
|
model = std::make_shared<Model>(nullptr, entity.get());
|
||||||
connect(model.get(), &Model::setURLFinished, this, &ModelEntityRenderer::handleModelLoaded);
|
connect(model.get(), &Model::setURLFinished, this, &ModelEntityRenderer::requestRenderUpdate);
|
||||||
|
connect(model.get(), &Model::requestRenderUpdate, this, &ModelEntityRenderer::requestRenderUpdate);
|
||||||
model->setLoadingPriority(EntityTreeRenderer::getEntityLoadingPriority(*entity));
|
model->setLoadingPriority(EntityTreeRenderer::getEntityLoadingPriority(*entity));
|
||||||
model->init();
|
model->init();
|
||||||
entity->setModel(model);
|
entity->setModel(model);
|
||||||
|
@ -1172,6 +1169,7 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce
|
||||||
|
|
||||||
// Nothing else to do unless the model is loaded
|
// Nothing else to do unless the model is loaded
|
||||||
if (!model->isLoaded()) {
|
if (!model->isLoaded()) {
|
||||||
|
emit needsRenderUpdate();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1247,13 +1245,6 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelEntityRenderer::handleModelLoaded(bool success) {
|
|
||||||
if (success) {
|
|
||||||
_modelJustLoaded = true;
|
|
||||||
emit requestRenderUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: this only renders the "meta" portion of the Model, namely it renders debugging items
|
// NOTE: this only renders the "meta" portion of the Model, namely it renders debugging items
|
||||||
void ModelEntityRenderer::doRender(RenderArgs* args) {
|
void ModelEntityRenderer::doRender(RenderArgs* args) {
|
||||||
PROFILE_RANGE(render_detail, "MetaModelRender");
|
PROFILE_RANGE(render_detail, "MetaModelRender");
|
||||||
|
|
|
@ -151,7 +151,6 @@ private:
|
||||||
// Transparency is handled in ModelMeshPartPayload
|
// Transparency is handled in ModelMeshPartPayload
|
||||||
virtual bool isTransparent() const override { return false; }
|
virtual bool isTransparent() const override { return false; }
|
||||||
|
|
||||||
bool _modelJustLoaded { false };
|
|
||||||
bool _hasModel { false };
|
bool _hasModel { false };
|
||||||
::ModelPointer _model;
|
::ModelPointer _model;
|
||||||
GeometryResource::Pointer _compoundShapeResource;
|
GeometryResource::Pointer _compoundShapeResource;
|
||||||
|
@ -180,8 +179,6 @@ private:
|
||||||
uint64_t _lastAnimated { 0 };
|
uint64_t _lastAnimated { 0 };
|
||||||
float _currentFrame { 0 };
|
float _currentFrame { 0 };
|
||||||
|
|
||||||
private slots:
|
|
||||||
void handleModelLoaded(bool success);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} } // namespace
|
} } // namespace
|
||||||
|
|
|
@ -814,11 +814,13 @@ void Model::setTextures(const QVariantMap& textures) {
|
||||||
_needsUpdateTextures = true;
|
_needsUpdateTextures = true;
|
||||||
_needsFixupInScene = true;
|
_needsFixupInScene = true;
|
||||||
_renderGeometry->setTextures(textures);
|
_renderGeometry->setTextures(textures);
|
||||||
|
emit requestRenderUpdate();
|
||||||
} else {
|
} else {
|
||||||
// FIXME(Huffman): Disconnect previously connected lambdas so we don't set textures multiple
|
// FIXME(Huffman): Disconnect previously connected lambdas so we don't set textures multiple
|
||||||
// after the geometry has finished loading.
|
// after the geometry has finished loading.
|
||||||
connect(&_renderWatcher, &GeometryResourceWatcher::finished, this, [this, textures]() {
|
connect(&_renderWatcher, &GeometryResourceWatcher::finished, this, [this, textures]() {
|
||||||
_renderGeometry->setTextures(textures);
|
_renderGeometry->setTextures(textures);
|
||||||
|
emit requestRenderUpdate();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ public:
|
||||||
bool isLayeredInFront() const { return _isLayeredInFront; }
|
bool isLayeredInFront() const { return _isLayeredInFront; }
|
||||||
|
|
||||||
virtual void updateRenderItems();
|
virtual void updateRenderItems();
|
||||||
void setRenderItemsNeedUpdate() { _renderItemsNeedUpdate = true; }
|
void setRenderItemsNeedUpdate() { _renderItemsNeedUpdate = true; emit requestRenderUpdate(); }
|
||||||
bool getRenderItemsNeedUpdate() { return _renderItemsNeedUpdate; }
|
bool getRenderItemsNeedUpdate() { return _renderItemsNeedUpdate; }
|
||||||
AABox getRenderableMeshBound() const;
|
AABox getRenderableMeshBound() const;
|
||||||
const render::ItemIDs& fetchRenderItemIDs() const;
|
const render::ItemIDs& fetchRenderItemIDs() const;
|
||||||
|
@ -265,6 +265,7 @@ public slots:
|
||||||
signals:
|
signals:
|
||||||
void setURLFinished(bool success);
|
void setURLFinished(bool success);
|
||||||
void setCollisionModelURLFinished(bool success);
|
void setCollisionModelURLFinished(bool success);
|
||||||
|
void requestRenderUpdate();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue