mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 00:44:38 +02:00
attempt to fix material crash
This commit is contained in:
parent
024dfbf8b7
commit
0039fb2f54
1 changed files with 7 additions and 5 deletions
|
@ -1577,9 +1577,11 @@ void Model::applyMaterialMapping() {
|
||||||
priorityMapPerResource[shapeID] = ++_priorityMap[shapeID];
|
priorityMapPerResource[shapeID] = ++_priorityMap[shapeID];
|
||||||
}
|
}
|
||||||
|
|
||||||
auto materialLoaded = [this, networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning,
|
std::weak_ptr<Model> weakSelf = shared_from_this();
|
||||||
modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap]() {
|
auto materialLoaded = [networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning,
|
||||||
if (networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) {
|
modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap, weakSelf]() {
|
||||||
|
std::shared_ptr<Model> self = weakSelf.lock();
|
||||||
|
if (!self || networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
render::Transaction transaction;
|
render::Transaction transaction;
|
||||||
|
@ -1607,8 +1609,8 @@ void Model::applyMaterialMapping() {
|
||||||
bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex);
|
bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex);
|
||||||
graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID));
|
graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID));
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(_materialMappingMutex);
|
std::unique_lock<std::mutex> lock(self->_materialMappingMutex);
|
||||||
_materialMapping[shapeID].push_back(material);
|
self->_materialMapping[shapeID].push_back(material);
|
||||||
}
|
}
|
||||||
transaction.updateItem<ModelMeshPartPayload>(itemID, [material, renderItemsKey,
|
transaction.updateItem<ModelMeshPartPayload>(itemID, [material, renderItemsKey,
|
||||||
invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) {
|
invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) {
|
||||||
|
|
Loading…
Reference in a new issue