diff options
author | Robert Adams | 2013-05-10 14:48:52 -0700 |
---|---|---|
committer | Robert Adams | 2013-05-10 14:48:52 -0700 |
commit | a42bb799cca27c0dddbecbd2edd2bd5e6d379472 (patch) | |
tree | 1a05aecae3e82788da6a5595d04859b8226031b2 | |
parent | Implement delete key for local console (diff) | |
download | opensim-SC-a42bb799cca27c0dddbecbd2edd2bd5e6d379472.zip opensim-SC-a42bb799cca27c0dddbecbd2edd2bd5e6d379472.tar.gz opensim-SC-a42bb799cca27c0dddbecbd2edd2bd5e6d379472.tar.bz2 opensim-SC-a42bb799cca27c0dddbecbd2edd2bd5e6d379472.tar.xz |
BulletSim: fix CPU loop that occurs when any 'degenerate' sculptie
is in a region. This fixes the high CPU usage for regions with nothing
else going on.
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs index 9d47657..262d734 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | |||
@@ -368,9 +368,10 @@ public class BSShapeMesh : BSShape | |||
368 | 368 | ||
369 | // Check to see if mesh was created (might require an asset). | 369 | // Check to see if mesh was created (might require an asset). |
370 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 370 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
371 | if (!newShape.isNativeShape) | 371 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) |
372 | { | 372 | { |
373 | // If a mesh was what was created, remember the built shape for later sharing. | 373 | // If a mesh was what was created, remember the built shape for later sharing. |
374 | // Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh. | ||
374 | Meshes.Add(newMeshKey, retMesh); | 375 | Meshes.Add(newMeshKey, retMesh); |
375 | } | 376 | } |
376 | 377 | ||
@@ -481,8 +482,11 @@ public class BSShapeMesh : BSShape | |||
481 | } | 482 | } |
482 | else | 483 | else |
483 | { | 484 | { |
485 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. | ||
486 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | ||
484 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", | 487 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", |
485 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); | 488 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); |
489 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); | ||
486 | } | 490 | } |
487 | } | 491 | } |
488 | newShape.shapeKey = newMeshKey; | 492 | newShape.shapeKey = newMeshKey; |
@@ -521,7 +525,7 @@ public class BSShapeHull : BSShape | |||
521 | 525 | ||
522 | // Check to see if hull was created (might require an asset). | 526 | // Check to see if hull was created (might require an asset). |
523 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 527 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
524 | if (!newShape.isNativeShape) | 528 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) |
525 | { | 529 | { |
526 | // If a mesh was what was created, remember the built shape for later sharing. | 530 | // If a mesh was what was created, remember the built shape for later sharing. |
527 | Hulls.Add(newHullKey, retHull); | 531 | Hulls.Add(newHullKey, retHull); |