From 390cb703f37a6a78d481723636575f9abc7b3b45 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 29 Jul 2018 23:31:38 +0100 Subject: [PATCH] and some more guard try{}catch{} on ub mesh processing --- .../ubOdeMeshing/Meshmerizer.cs | 39 +++++++++++++++---- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs index dddec86cfe..6a4ef1e684 100644 --- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs +++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs @@ -242,27 +242,50 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing if (primShape.SculptEntry) { - if (((OpenMetaverse.SculptType)primShape.SculptType) == SculptType.Mesh) + if (((SculptType)primShape.SculptType) == SculptType.Mesh) { if (!useMeshiesPhysicsMesh) return null; - - if (!GenerateCoordsAndFacesFromPrimMeshData(primName, primShape, out coords, out faces, convex)) + try + { + if (!GenerateCoordsAndFacesFromPrimMeshData(primName, primShape, out coords, out faces, convex)) + return null; + needsConvexProcessing = false; + } + catch + { + m_log.ErrorFormat("[MESH]: fail to process mesh asset for prim {0}", primName); return null; - needsConvexProcessing = false; + } } else { - if (!GenerateCoordsAndFacesFromPrimSculptData(primName, primShape, lod, out coords, out faces)) + try + { + if (!GenerateCoordsAndFacesFromPrimSculptData(primName, primShape, lod, out coords, out faces)) + return null; + needsConvexProcessing &= doConvexSculpts; + } + catch + { + m_log.ErrorFormat("[MESH]: fail to process sculpt map for prim {0}", primName); return null; - needsConvexProcessing &= doConvexSculpts; + } } } else { - if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, convex, out coords, out faces)) + try + { + if (!GenerateCoordsAndFacesFromPrimShapeData(primName, primShape, lod, convex, out coords, out faces)) + return null; + needsConvexProcessing &= doConvexPrims; + } + catch + { + m_log.ErrorFormat("[MESH]: fail to process shape parameters for prim {0}", primName); return null; - needsConvexProcessing &= doConvexPrims; + } } int numCoords = coords.Count;