diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index 6592e6c..b98f177 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |||
@@ -1729,33 +1729,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1729 | 1729 | ||
1730 | ODEchangeitem item; | 1730 | ODEchangeitem item; |
1731 | 1731 | ||
1732 | if (ChangesQueue.Count > 0) | ||
1733 | { | ||
1734 | int ttmpstart = Util.EnvironmentTickCount(); | ||
1735 | int ttmp; | ||
1736 | 1732 | ||
1737 | while (ChangesQueue.Dequeue(out item)) | ||
1738 | { | ||
1739 | if (item.actor != null) | ||
1740 | { | ||
1741 | try | ||
1742 | { | ||
1743 | if (item.actor is OdeCharacter) | ||
1744 | ((OdeCharacter)item.actor).DoAChange(item.what, item.arg); | ||
1745 | else if (((OdePrim)item.actor).DoAChange(item.what, item.arg)) | ||
1746 | RemovePrimThreadLocked((OdePrim)item.actor); | ||
1747 | } | ||
1748 | catch | ||
1749 | { | ||
1750 | m_log.WarnFormat("[PHYSICS]: doChange failed for a actor {0} {1}", | ||
1751 | item.actor.Name, item.what.ToString()); | ||
1752 | } | ||
1753 | } | ||
1754 | ttmp = Util.EnvironmentTickCountSubtract(ttmpstart); | ||
1755 | if (ttmp > 20) | ||
1756 | break; | ||
1757 | } | ||
1758 | } | ||
1759 | 1733 | ||
1760 | d.WorldSetQuickStepNumIterations(world, curphysiteractions); | 1734 | d.WorldSetQuickStepNumIterations(world, curphysiteractions); |
1761 | 1735 | ||
@@ -1766,6 +1740,33 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1766 | // clear pointer/counter to contacts to pass into joints | 1740 | // clear pointer/counter to contacts to pass into joints |
1767 | m_global_contactcount = 0; | 1741 | m_global_contactcount = 0; |
1768 | 1742 | ||
1743 | if (ChangesQueue.Count > 0) | ||
1744 | { | ||
1745 | int ttmpstart = Util.EnvironmentTickCount(); | ||
1746 | int ttmp; | ||
1747 | |||
1748 | while (ChangesQueue.Dequeue(out item)) | ||
1749 | { | ||
1750 | if (item.actor != null) | ||
1751 | { | ||
1752 | try | ||
1753 | { | ||
1754 | if (item.actor is OdeCharacter) | ||
1755 | ((OdeCharacter)item.actor).DoAChange(item.what, item.arg); | ||
1756 | else if (((OdePrim)item.actor).DoAChange(item.what, item.arg)) | ||
1757 | RemovePrimThreadLocked((OdePrim)item.actor); | ||
1758 | } | ||
1759 | catch | ||
1760 | { | ||
1761 | m_log.WarnFormat("[PHYSICS]: doChange failed for a actor {0} {1}", | ||
1762 | item.actor.Name, item.what.ToString()); | ||
1763 | } | ||
1764 | } | ||
1765 | ttmp = Util.EnvironmentTickCountSubtract(ttmpstart); | ||
1766 | if (ttmp > 20) | ||
1767 | break; | ||
1768 | } | ||
1769 | } | ||
1769 | 1770 | ||
1770 | // Move characters | 1771 | // Move characters |
1771 | lock (_characters) | 1772 | lock (_characters) |