diff options
author | Teravus Ovares | 2008-03-03 16:52:25 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-03-03 16:52:25 +0000 |
commit | d01535690254a347939bc8946d8c10e78a8ea577 (patch) | |
tree | 638cae76c554d79425bcef4f64c1c96cfb2b4eb3 /OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |
parent | * More compiler warning nukage. (diff) | |
download | opensim-SC-d01535690254a347939bc8946d8c10e78a8ea577.zip opensim-SC-d01535690254a347939bc8946d8c10e78a8ea577.tar.gz opensim-SC-d01535690254a347939bc8946d8c10e78a8ea577.tar.bz2 opensim-SC-d01535690254a347939bc8946d8c10e78a8ea577.tar.xz |
* Applied patch 708 from devalnor. Thanks devalnor!
* ODE: Added support for larger box stacks. (they're slow, but they work)
* ODEPlugin no longer tries to 'catch up' with the simulator frame rate if it gets behind. Catching up was causing a lot of problems with larger box stacks and other things that stall the simulator (like saving prim in the datastore)
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index eb90cf4..726f2e9 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -617,20 +617,23 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
617 | public void disableBody() | 617 | public void disableBody() |
618 | { | 618 | { |
619 | //this kills the body so things like 'mesh' can re-create it. | 619 | //this kills the body so things like 'mesh' can re-create it. |
620 | if (Body != (IntPtr) 0) | 620 | lock (this) |
621 | { | 621 | { |
622 | m_collisionCategories &= ~CollisionCategories.Body; | 622 | if (Body != (IntPtr)0) |
623 | m_collisionFlags &= ~(CollisionCategories.Wind | CollisionCategories.Land); | ||
624 | |||
625 | if (prim_geom != (IntPtr)0) | ||
626 | { | 623 | { |
627 | d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); | 624 | m_collisionCategories &= ~CollisionCategories.Body; |
628 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); | 625 | m_collisionFlags &= ~(CollisionCategories.Wind | CollisionCategories.Land); |
629 | } | ||
630 | 626 | ||
631 | _parent_scene.remActivePrim(this); | 627 | if (prim_geom != (IntPtr)0) |
632 | d.BodyDestroy(Body); | 628 | { |
633 | Body = (IntPtr) 0; | 629 | d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); |
630 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); | ||
631 | } | ||
632 | |||
633 | _parent_scene.remActivePrim(this); | ||
634 | d.BodyDestroy(Body); | ||
635 | Body = (IntPtr)0; | ||
636 | } | ||
634 | } | 637 | } |
635 | m_disabled = true; | 638 | m_disabled = true; |
636 | m_collisionscore = 0; | 639 | m_collisionscore = 0; |