aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorUbitUmarov2015-10-12 00:49:07 +0100
committerUbitUmarov2015-10-12 00:49:07 +0100
commit3d8384b6963e0c0c83991b4d9045095e554d890a (patch)
treec2d2a7ff67502951b6f1c8c02ac9f5768f4f2209 /OpenSim
parentuse System.IO.Compression.DeflateStream for mesh decompression like master, s... (diff)
downloadopensim-SC-3d8384b6963e0c0c83991b4d9045095e554d890a.zip
opensim-SC-3d8384b6963e0c0c83991b4d9045095e554d890a.tar.gz
opensim-SC-3d8384b6963e0c0c83991b4d9045095e554d890a.tar.bz2
opensim-SC-3d8384b6963e0c0c83991b4d9045095e554d890a.tar.xz
detect a fully degenerated mesh and avoid using it and so crashing ubOde
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/PhysicsModules/ubOdeMeshing/Mesh.cs10
-rw-r--r--OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs9
2 files changed, 18 insertions, 1 deletions
diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Mesh.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Mesh.cs
index da8f623..b860255 100644
--- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Mesh.cs
+++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Mesh.cs
@@ -278,6 +278,16 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
278 return new Vector3(x, y, z); 278 return new Vector3(x, y, z);
279 } 279 }
280 280
281 public int numberVertices()
282 {
283 return m_bdata.m_vertices.Count;
284 }
285
286 public int numberTriangles()
287 {
288 return m_bdata.m_triangles.Count;
289 }
290
281 public List<Vector3> getVertexList() 291 public List<Vector3> getVertexList()
282 { 292 {
283 List<Vector3> result = new List<Vector3>(); 293 List<Vector3> result = new List<Vector3>();
diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
index 84df369..596ce0f 100644
--- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
+++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/Meshmerizer.cs
@@ -337,7 +337,6 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
337 return null; 337 return null;
338 } 338 }
339 339
340 primShape.SculptData = Utils.EmptyBytes;
341 340
342 int numCoords = coords.Count; 341 int numCoords = coords.Count;
343 int numFaces = faces.Count; 342 int numFaces = faces.Count;
@@ -355,6 +354,14 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
355 coords.Clear(); 354 coords.Clear();
356 faces.Clear(); 355 faces.Clear();
357 356
357 if(mesh.numberVertices() < 3 || mesh.numberTriangles() < 1)
358 {
359 m_log.ErrorFormat("[MESH]: invalid degenerated mesh for prim " + primName + " ignored");
360 return null;
361 }
362
363 primShape.SculptData = Utils.EmptyBytes;
364
358 return mesh; 365 return mesh;
359 } 366 }
360 367