* Releases the inter-region thread synchronization between physics in ODE on the same instance.

* If you are hosting many regions on a single instance, you will probably notice a decrease in region startup time and maybe a slight increase in performance.
* Single regions won't notice anything different
0.6.0-stable
Teravus Ovares 2008-10-16 12:57:29 +00:00
parent 641de2f404
commit 68d85497ad
3 changed files with 7 additions and 6 deletions

View File

@ -147,7 +147,7 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
CAPSULE_LENGTH = (size.Z - ((size.Z * height_fudge_factor))); CAPSULE_LENGTH = (size.Z - ((size.Z * height_fudge_factor)));
lock (OdeScene.OdeLock) lock (_parent_scene.OdeLock)
{ {
AvatarGeomAndBodyCreation(pos.X, pos.Y, pos.Z, m_tensor); AvatarGeomAndBodyCreation(pos.X, pos.Y, pos.Z, m_tensor);
} }
@ -362,7 +362,7 @@ namespace OpenSim.Region.Physics.OdePlugin
get { return _position; } get { return _position; }
set set
{ {
lock (OdeScene.OdeLock) lock (_parent_scene.OdeLock)
{ {
d.BodySetPosition(Body, value.X, value.Y, value.Z); d.BodySetPosition(Body, value.X, value.Y, value.Z);
_position = value; _position = value;
@ -386,7 +386,7 @@ namespace OpenSim.Region.Physics.OdePlugin
set set
{ {
m_pidControllerActive = true; m_pidControllerActive = true;
lock (OdeScene.OdeLock) lock (_parent_scene.OdeLock)
{ {
d.JointDestroy(Amotor); d.JointDestroy(Amotor);
@ -863,7 +863,7 @@ namespace OpenSim.Region.Physics.OdePlugin
/// </summary> /// </summary>
public void Destroy() public void Destroy()
{ {
lock (OdeScene.OdeLock) lock (_parent_scene.OdeLock)
{ {
// Kill the Amotor // Kill the Amotor
d.JointDestroy(Amotor); d.JointDestroy(Amotor);

View File

@ -990,7 +990,7 @@ namespace OpenSim.Region.Physics.OdePlugin
} }
lock (OdeScene.OdeLock) lock (_parent_scene.OdeLock)
{ {
CreateGeom(m_targetSpace, _mesh); CreateGeom(m_targetSpace, _mesh);

View File

@ -242,7 +242,7 @@ namespace OpenSim.Region.Physics.OdePlugin
// split static geometry collision handling into spaces of 30 meters // split static geometry collision handling into spaces of 30 meters
public IntPtr[,] staticPrimspace; public IntPtr[,] staticPrimspace;
public static Object OdeLock = new Object(); public Object OdeLock;
public IMesher mesher; public IMesher mesher;
@ -259,6 +259,7 @@ namespace OpenSim.Region.Physics.OdePlugin
/// </summary> /// </summary>
public OdeScene(CollisionLocker dode) public OdeScene(CollisionLocker dode)
{ {
OdeLock = new Object();
ode = dode; ode = dode;
nearCallback = near; nearCallback = near;
triCallback = TriCallback; triCallback = TriCallback;