diff options
author | Tom | 2010-08-03 16:07:18 -0700 |
---|---|---|
committer | Tom | 2010-08-03 16:07:18 -0700 |
commit | e3cea888fba0afbb97e55b1a2aa8335f78a4ac26 (patch) | |
tree | 4bf985f240212df50007726ee3c45526aed8e7e4 /OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs | |
parent | Fix scripted sit offset in child prims (diff) | |
download | opensim-SC-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.zip opensim-SC-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.gz opensim-SC-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.bz2 opensim-SC-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.xz |
Fix some more issues causing regions with corrupt sculpts to freeze.
Diffstat (limited to 'OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs')
-rw-r--r-- | OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs index 60eda41..1604c4b 100644 --- a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs | |||
@@ -2136,7 +2136,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2136 | // we don't need to do space calculation because the client sends a position update also. | 2136 | // we don't need to do space calculation because the client sends a position update also. |
2137 | 2137 | ||
2138 | // Construction of new prim | 2138 | // Construction of new prim |
2139 | if (_parent_scene.needsMeshing(_pbs)) | 2139 | if (_parent_scene.needsMeshing(_pbs) && m_meshfailed == false) |
2140 | { | 2140 | { |
2141 | float meshlod = _parent_scene.meshSculptLOD; | 2141 | float meshlod = _parent_scene.meshSculptLOD; |
2142 | 2142 | ||
@@ -2146,8 +2146,15 @@ Console.WriteLine(" JointCreateFixed"); | |||
2146 | 2146 | ||
2147 | IMesh mesh = null; | 2147 | IMesh mesh = null; |
2148 | 2148 | ||
2149 | if (_parent_scene.needsMeshing(_pbs)) | 2149 | try |
2150 | mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 2150 | { |
2151 | if (_parent_scene.needsMeshing(_pbs)) | ||
2152 | mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | ||
2153 | } | ||
2154 | catch | ||
2155 | { | ||
2156 | m_meshfailed = true; | ||
2157 | } | ||
2151 | 2158 | ||
2152 | //IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 2159 | //IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); |
2153 | //Console.WriteLine("changesize 1"); | 2160 | //Console.WriteLine("changesize 1"); |
@@ -2242,17 +2249,23 @@ Console.WriteLine(" JointCreateFixed"); | |||
2242 | if (_size.Z <= 0) _size.Z = 0.01f; | 2249 | if (_size.Z <= 0) _size.Z = 0.01f; |
2243 | // Construction of new prim | 2250 | // Construction of new prim |
2244 | 2251 | ||
2245 | if (_parent_scene.needsMeshing(_pbs)) | 2252 | if (_parent_scene.needsMeshing(_pbs) && m_meshfailed == false) |
2246 | { | 2253 | { |
2247 | // Don't need to re-enable body.. it's done in SetMesh | 2254 | // Don't need to re-enable body.. it's done in SetMesh |
2248 | float meshlod = _parent_scene.meshSculptLOD; | 2255 | float meshlod = _parent_scene.meshSculptLOD; |
2249 | 2256 | ||
2250 | if (IsPhysical) | 2257 | if (IsPhysical) |
2251 | meshlod = _parent_scene.MeshSculptphysicalLOD; | 2258 | meshlod = _parent_scene.MeshSculptphysicalLOD; |
2252 | 2259 | try | |
2253 | IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | 2260 | { |
2261 | IMesh mesh = _parent_scene.mesher.CreateMesh(oldname, _pbs, _size, meshlod, IsPhysical); | ||
2262 | CreateGeom(m_targetSpace, mesh); | ||
2263 | } | ||
2264 | catch | ||
2265 | { | ||
2266 | m_meshfailed = true; | ||
2267 | } | ||
2254 | // createmesh returns null when it doesn't mesh. | 2268 | // createmesh returns null when it doesn't mesh. |
2255 | CreateGeom(m_targetSpace, mesh); | ||
2256 | } | 2269 | } |
2257 | else | 2270 | else |
2258 | { | 2271 | { |