mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 16:41:02 +02:00
fix crash mode when model late to get collision URL
This commit is contained in:
parent
0c1ae5bb61
commit
c14433979b
1 changed files with 8 additions and 10 deletions
|
@ -385,7 +385,7 @@ Model* RenderableModelEntityItem::getModel(EntityTreeRenderer* renderer) {
|
||||||
_needsInitialSimulation = true;
|
_needsInitialSimulation = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,14 +398,14 @@ void RenderableModelEntityItem::update(const quint64& now) {
|
||||||
EntityItemProperties properties;
|
EntityItemProperties properties;
|
||||||
auto extents = _model->getMeshExtents();
|
auto extents = _model->getMeshExtents();
|
||||||
properties.setDimensions(extents.maximum - extents.minimum);
|
properties.setDimensions(extents.maximum - extents.minimum);
|
||||||
|
|
||||||
qCDebug(entitiesrenderer) << "Autoresizing:" << (!getName().isEmpty() ? getName() : getModelURL());
|
qCDebug(entitiesrenderer) << "Autoresizing:" << (!getName().isEmpty() ? getName() : getModelURL());
|
||||||
QMetaObject::invokeMethod(DependencyManager::get<EntityScriptingInterface>().data(), "editEntity",
|
QMetaObject::invokeMethod(DependencyManager::get<EntityScriptingInterface>().data(), "editEntity",
|
||||||
Qt::QueuedConnection,
|
Qt::QueuedConnection,
|
||||||
Q_ARG(QUuid, getEntityItemID()),
|
Q_ARG(QUuid, getEntityItemID()),
|
||||||
Q_ARG(EntityItemProperties, properties));
|
Q_ARG(EntityItemProperties, properties));
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelEntityItem::update(now);
|
ModelEntityItem::update(now);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,7 +427,7 @@ bool RenderableModelEntityItem::findDetailedRayIntersection(const glm::vec3& ori
|
||||||
// << precisionPicking;
|
// << precisionPicking;
|
||||||
|
|
||||||
QString extraInfo;
|
QString extraInfo;
|
||||||
return _model->findRayIntersectionAgainstSubMeshes(origin, direction, distance,
|
return _model->findRayIntersectionAgainstSubMeshes(origin, direction, distance,
|
||||||
face, surfaceNormal, extraInfo, precisionPicking);
|
face, surfaceNormal, extraInfo, precisionPicking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,24 +447,22 @@ bool RenderableModelEntityItem::isReadyToComputeShape() {
|
||||||
ShapeType type = getShapeType();
|
ShapeType type = getShapeType();
|
||||||
|
|
||||||
if (type == SHAPE_TYPE_COMPOUND) {
|
if (type == SHAPE_TYPE_COMPOUND) {
|
||||||
if (!_model) {
|
if (!_model || _model->getCollisionURL().isEmpty()) {
|
||||||
EntityTreePointer tree = getTree();
|
EntityTreePointer tree = getTree();
|
||||||
if (tree) {
|
if (tree) {
|
||||||
QMetaObject::invokeMethod(tree.get(), "callLoader", Qt::QueuedConnection, Q_ARG(EntityItemID, getID()));
|
QMetaObject::invokeMethod(tree.get(), "callLoader", Qt::QueuedConnection, Q_ARG(EntityItemID, getID()));
|
||||||
}
|
}
|
||||||
return false; // hmm...
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(!_model->getCollisionURL().isEmpty());
|
|
||||||
|
|
||||||
if (_model->getURL().isEmpty()) {
|
if (_model->getURL().isEmpty()) {
|
||||||
// we need a render geometry with a scale to proceed, so give up.
|
// we need a render geometry with a scale to proceed, so give up.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QSharedPointer<NetworkGeometry> collisionNetworkGeometry = _model->getCollisionGeometry();
|
const QSharedPointer<NetworkGeometry> collisionNetworkGeometry = _model->getCollisionGeometry();
|
||||||
const QSharedPointer<NetworkGeometry> renderNetworkGeometry = _model->getGeometry();
|
const QSharedPointer<NetworkGeometry> renderNetworkGeometry = _model->getGeometry();
|
||||||
|
|
||||||
if ((collisionNetworkGeometry && collisionNetworkGeometry->isLoaded()) &&
|
if ((collisionNetworkGeometry && collisionNetworkGeometry->isLoaded()) &&
|
||||||
(renderNetworkGeometry && renderNetworkGeometry->isLoaded())) {
|
(renderNetworkGeometry && renderNetworkGeometry->isLoaded())) {
|
||||||
// we have both URLs AND both geometries AND they are both fully loaded.
|
// we have both URLs AND both geometries AND they are both fully loaded.
|
||||||
|
|
Loading…
Reference in a new issue