aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/ChOdePlugin
diff options
context:
space:
mode:
authorTom2010-08-03 16:07:18 -0700
committerTom2010-08-03 16:07:18 -0700
commite3cea888fba0afbb97e55b1a2aa8335f78a4ac26 (patch)
tree4bf985f240212df50007726ee3c45526aed8e7e4 /OpenSim/Region/Physics/ChOdePlugin
parentFix scripted sit offset in child prims (diff)
downloadopensim-SC_OLD-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.zip
opensim-SC_OLD-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.gz
opensim-SC_OLD-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.bz2
opensim-SC_OLD-e3cea888fba0afbb97e55b1a2aa8335f78a4ac26.tar.xz
Fix some more issues causing regions with corrupt sculpts to freeze.
Diffstat (limited to 'OpenSim/Region/Physics/ChOdePlugin')
-rw-r--r--OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs27
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 {