diff options
Diffstat (limited to 'OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs')
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs index 933f573..74b4371 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapeCollection.cs | |||
@@ -149,7 +149,7 @@ public sealed class BSShapeCollection : IDisposable | |||
149 | // Called when releasing use of a BSBody. BSShape is handled separately. | 149 | // Called when releasing use of a BSBody. BSShape is handled separately. |
150 | public void DereferenceBody(BulletBody body, bool inTaintTime, BodyDestructionCallback bodyCallback ) | 150 | public void DereferenceBody(BulletBody body, bool inTaintTime, BodyDestructionCallback bodyCallback ) |
151 | { | 151 | { |
152 | if (body.ptr == IntPtr.Zero) | 152 | if (!body.HasPhysicalBody) |
153 | return; | 153 | return; |
154 | 154 | ||
155 | lock (m_collectionActivityLock) | 155 | lock (m_collectionActivityLock) |
@@ -243,12 +243,12 @@ public sealed class BSShapeCollection : IDisposable | |||
243 | // Release the usage of a shape. | 243 | // Release the usage of a shape. |
244 | public void DereferenceShape(BulletShape shape, bool inTaintTime, ShapeDestructionCallback shapeCallback) | 244 | public void DereferenceShape(BulletShape shape, bool inTaintTime, ShapeDestructionCallback shapeCallback) |
245 | { | 245 | { |
246 | if (shape.ptr == IntPtr.Zero) | 246 | if (!shape.HasPhysicalShape) |
247 | return; | 247 | return; |
248 | 248 | ||
249 | PhysicsScene.TaintedObject(inTaintTime, "BSShapeCollection.DereferenceShape", delegate() | 249 | PhysicsScene.TaintedObject(inTaintTime, "BSShapeCollection.DereferenceShape", delegate() |
250 | { | 250 | { |
251 | if (shape.ptr != IntPtr.Zero) | 251 | if (shape.HasPhysicalShape) |
252 | { | 252 | { |
253 | if (shape.isNativeShape) | 253 | if (shape.isNativeShape) |
254 | { | 254 | { |
@@ -440,7 +440,7 @@ public sealed class BSShapeCollection : IDisposable | |||
440 | } | 440 | } |
441 | 441 | ||
442 | // Create a mesh/hull shape or a native shape if 'nativeShapePossible' is 'true'. | 442 | // Create a mesh/hull shape or a native shape if 'nativeShapePossible' is 'true'. |
443 | private bool CreateGeomNonSpecial(bool forceRebuild, BSPhysObject prim, ShapeDestructionCallback shapeCallback) | 443 | public bool CreateGeomNonSpecial(bool forceRebuild, BSPhysObject prim, ShapeDestructionCallback shapeCallback) |
444 | { | 444 | { |
445 | bool ret = false; | 445 | bool ret = false; |
446 | bool haveShape = false; | 446 | bool haveShape = false; |
@@ -573,7 +573,7 @@ public sealed class BSShapeCollection : IDisposable | |||
573 | // Native shapes are scaled in Bullet so set the scaling to the size | 573 | // Native shapes are scaled in Bullet so set the scaling to the size |
574 | newShape = new BulletShape(BulletSimAPI.BuildNativeShape2(PhysicsScene.World.ptr, nativeShapeData), shapeType); | 574 | newShape = new BulletShape(BulletSimAPI.BuildNativeShape2(PhysicsScene.World.ptr, nativeShapeData), shapeType); |
575 | } | 575 | } |
576 | if (newShape.ptr == IntPtr.Zero) | 576 | if (!newShape.HasPhysicalShape) |
577 | { | 577 | { |
578 | PhysicsScene.Logger.ErrorFormat("{0} BuildPhysicalNativeShape failed. ID={1}, shape={2}", | 578 | PhysicsScene.Logger.ErrorFormat("{0} BuildPhysicalNativeShape failed. ID={1}, shape={2}", |
579 | LogHeader, prim.LocalID, shapeType); | 579 | LogHeader, prim.LocalID, shapeType); |
@@ -590,7 +590,7 @@ public sealed class BSShapeCollection : IDisposable | |||
590 | // Called at taint-time! | 590 | // Called at taint-time! |
591 | private bool GetReferenceToMesh(BSPhysObject prim, ShapeDestructionCallback shapeCallback) | 591 | private bool GetReferenceToMesh(BSPhysObject prim, ShapeDestructionCallback shapeCallback) |
592 | { | 592 | { |
593 | BulletShape newShape = new BulletShape(IntPtr.Zero); | 593 | BulletShape newShape = new BulletShape(); |
594 | 594 | ||
595 | float lod; | 595 | float lod; |
596 | System.UInt64 newMeshKey = ComputeShapeKey(prim.Size, prim.BaseShape, out lod); | 596 | System.UInt64 newMeshKey = ComputeShapeKey(prim.Size, prim.BaseShape, out lod); |
@@ -860,7 +860,7 @@ public sealed class BSShapeCollection : IDisposable | |||
860 | private BulletShape VerifyMeshCreated(BulletShape newShape, BSPhysObject prim) | 860 | private BulletShape VerifyMeshCreated(BulletShape newShape, BSPhysObject prim) |
861 | { | 861 | { |
862 | // If the shape was successfully created, nothing more to do | 862 | // If the shape was successfully created, nothing more to do |
863 | if (newShape.ptr != IntPtr.Zero) | 863 | if (newShape.HasPhysicalShape) |
864 | return newShape; | 864 | return newShape; |
865 | 865 | ||
866 | // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset | 866 | // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset |
@@ -919,7 +919,7 @@ public sealed class BSShapeCollection : IDisposable | |||
919 | bool ret = false; | 919 | bool ret = false; |
920 | 920 | ||
921 | // the mesh, hull or native shape must have already been created in Bullet | 921 | // the mesh, hull or native shape must have already been created in Bullet |
922 | bool mustRebuild = (prim.PhysBody.ptr == IntPtr.Zero); | 922 | bool mustRebuild = !prim.PhysBody.HasPhysicalBody; |
923 | 923 | ||
924 | // If there is an existing body, verify it's of an acceptable type. | 924 | // If there is an existing body, verify it's of an acceptable type. |
925 | // If not a solid object, body is a GhostObject. Otherwise a RigidBody. | 925 | // If not a solid object, body is a GhostObject. Otherwise a RigidBody. |