diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdeScene.cs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs index 32e81e2..929b019 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs | |||
@@ -290,7 +290,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
290 | 290 | ||
291 | private readonly IntPtr contactgroup; | 291 | private readonly IntPtr contactgroup; |
292 | 292 | ||
293 | internal IntPtr LandGeom; | ||
294 | internal IntPtr WaterGeom; | 293 | internal IntPtr WaterGeom; |
295 | 294 | ||
296 | private float nmTerrainContactFriction = 255.0f; | 295 | private float nmTerrainContactFriction = 255.0f; |
@@ -489,6 +488,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
489 | /// </summary> | 488 | /// </summary> |
490 | internal Object OdeLock = new Object(); | 489 | internal Object OdeLock = new Object(); |
491 | 490 | ||
491 | private bool _worldInitialized = false; | ||
492 | |||
492 | public IMesher mesher; | 493 | public IMesher mesher; |
493 | 494 | ||
494 | private IConfigSource m_config; | 495 | private IConfigSource m_config; |
@@ -875,6 +876,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
875 | staticPrimspace[i, j] = IntPtr.Zero; | 876 | staticPrimspace[i, j] = IntPtr.Zero; |
876 | } | 877 | } |
877 | } | 878 | } |
879 | |||
880 | _worldInitialized = true; | ||
878 | } | 881 | } |
879 | 882 | ||
880 | // internal void waitForSpaceUnlock(IntPtr space) | 883 | // internal void waitForSpaceUnlock(IntPtr space) |
@@ -1508,8 +1511,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1508 | { | 1511 | { |
1509 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) | 1512 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) |
1510 | && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) | 1513 | && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) |
1511 | && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)) | 1514 | && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f))) |
1512 | && contactGeom.g1 != LandGeom && contactGeom.g2 != LandGeom) | ||
1513 | { | 1515 | { |
1514 | if (Math.Abs(contact.depth - contactGeom.depth) < 0.052f) | 1516 | if (Math.Abs(contact.depth - contactGeom.depth) < 0.052f) |
1515 | { | 1517 | { |
@@ -1538,7 +1540,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1538 | //d.GeomGetAABB(contactGeom.g2, out aabb2); | 1540 | //d.GeomGetAABB(contactGeom.g2, out aabb2); |
1539 | //d.GeomGetAABB(contactGeom.g1, out aabb1); | 1541 | //d.GeomGetAABB(contactGeom.g1, out aabb1); |
1540 | //aabb1. | 1542 | //aabb1. |
1541 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)) && contactGeom.g1 != LandGeom && contactGeom.g2 != LandGeom) | 1543 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f))) |
1542 | { | 1544 | { |
1543 | if (contactGeom.normal.X == contact.normal.X && contactGeom.normal.Y == contact.normal.Y && contactGeom.normal.Z == contact.normal.Z) | 1545 | if (contactGeom.normal.X == contact.normal.X && contactGeom.normal.Y == contact.normal.Y && contactGeom.normal.Z == contact.normal.Z) |
1544 | { | 1546 | { |
@@ -2896,6 +2898,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2896 | /// <returns>The number of frames simulated over that period.</returns> | 2898 | /// <returns>The number of frames simulated over that period.</returns> |
2897 | public override float Simulate(float timeStep) | 2899 | public override float Simulate(float timeStep) |
2898 | { | 2900 | { |
2901 | if (!_worldInitialized) return 11f; | ||
2902 | |||
2899 | int startFrameTick = CollectStats ? Util.EnvironmentTickCount() : 0; | 2903 | int startFrameTick = CollectStats ? Util.EnvironmentTickCount() : 0; |
2900 | int tempTick = 0, tempTick2 = 0; | 2904 | int tempTick = 0, tempTick2 = 0; |
2901 | 2905 | ||
@@ -4017,6 +4021,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
4017 | 4021 | ||
4018 | public override void Dispose() | 4022 | public override void Dispose() |
4019 | { | 4023 | { |
4024 | _worldInitialized = false; | ||
4025 | |||
4020 | m_rayCastManager.Dispose(); | 4026 | m_rayCastManager.Dispose(); |
4021 | m_rayCastManager = null; | 4027 | m_rayCastManager = null; |
4022 | 4028 | ||
@@ -4037,6 +4043,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
4037 | d.WorldDestroy(world); | 4043 | d.WorldDestroy(world); |
4038 | //d.CloseODE(); | 4044 | //d.CloseODE(); |
4039 | } | 4045 | } |
4046 | |||
4040 | } | 4047 | } |
4041 | 4048 | ||
4042 | public override Dictionary<uint, float> GetTopColliders() | 4049 | public override Dictionary<uint, float> GetTopColliders() |