aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorTom2010-08-03 14:11:11 -0700
committerTom2010-08-03 14:11:11 -0700
commit1d1da5069ca91282228f453476bee2444138b230 (patch)
treec9530de6082172774ff88a1f042a8bb676e93767 /OpenSim
parentDrop the RestClient timeout from 15 minutes to 30 seconds. This does not addr... (diff)
downloadopensim-SC_OLD-1d1da5069ca91282228f453476bee2444138b230.zip
opensim-SC_OLD-1d1da5069ca91282228f453476bee2444138b230.tar.gz
opensim-SC_OLD-1d1da5069ca91282228f453476bee2444138b230.tar.bz2
opensim-SC_OLD-1d1da5069ca91282228f453476bee2444138b230.tar.xz
Catch a meshing exception caused by corrupt or missing sculpt maps, and mark the prim as "mesh failed" so it doesn't try meshing continuously
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs13
1 files changed, 11 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
index 7e70db9..60eda41 100644
--- a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
@@ -131,6 +131,7 @@ namespace OpenSim.Region.Physics.OdePlugin
131 //public GCHandle gc; 131 //public GCHandle gc;
132 private CollisionLocker ode; 132 private CollisionLocker ode;
133 133
134 private bool m_meshfailed = false;
134 private bool m_taintforce = false; 135 private bool m_taintforce = false;
135 private bool m_taintaddangularforce = false; 136 private bool m_taintaddangularforce = false;
136 private Vector3 m_force; 137 private Vector3 m_force;
@@ -1882,12 +1883,20 @@ namespace OpenSim.Region.Physics.OdePlugin
1882 1883
1883 m_targetSpace = targetspace; 1884 m_targetSpace = targetspace;
1884 1885
1885 if (_mesh == null) 1886 if (_mesh == null && m_meshfailed == false)
1886 { 1887 {
1887 if (_parent_scene.needsMeshing(_pbs)) 1888 if (_parent_scene.needsMeshing(_pbs))
1888 { 1889 {
1889 // Don't need to re-enable body.. it's done in SetMesh 1890 // Don't need to re-enable body.. it's done in SetMesh
1890 _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical); 1891 try
1892 {
1893 _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
1894 }
1895 catch
1896 {
1897 //Don't continuously try to mesh prims when meshing has failed
1898 m_meshfailed = true;
1899 }
1891 // createmesh returns null when it's a shape that isn't a cube. 1900 // createmesh returns null when it's a shape that isn't a cube.
1892 // m_log.Debug(m_localID); 1901 // m_log.Debug(m_localID);
1893 } 1902 }