diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 7243db1..2c64c85 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -707,10 +707,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
707 | foreach (ulong handle in seeds.Keys) | 707 | foreach (ulong handle in seeds.Keys) |
708 | { | 708 | { |
709 | uint x, y; | 709 | uint x, y; |
710 | Utils.LongToUInts(handle, out x, out y); | 710 | Util.RegionHandleToRegionLoc(handle, out x, out y); |
711 | x = x / Constants.RegionSize; | 711 | |
712 | y = y / Constants.RegionSize; | 712 | if (Util.IsOutsideView(DrawDistance, x, Scene.RegionInfo.LegacyRegionLocX, y, Scene.RegionInfo.LegacyRegionLocY)) |
713 | if (Util.IsOutsideView(DrawDistance, x, Scene.RegionInfo.RegionLocX, y, Scene.RegionInfo.RegionLocY)) | ||
714 | { | 713 | { |
715 | old.Add(handle); | 714 | old.Add(handle); |
716 | } | 715 | } |
@@ -731,9 +730,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
731 | foreach (KeyValuePair<ulong, string> kvp in KnownRegions) | 730 | foreach (KeyValuePair<ulong, string> kvp in KnownRegions) |
732 | { | 731 | { |
733 | uint x, y; | 732 | uint x, y; |
734 | Utils.LongToUInts(kvp.Key, out x, out y); | 733 | Util.RegionHandleToRegionLoc(kvp.Key, out x, out y); |
735 | x = x / Constants.RegionSize; | ||
736 | y = y / Constants.RegionSize; | ||
737 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); | 734 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); |
738 | } | 735 | } |
739 | } | 736 | } |
@@ -971,7 +968,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
971 | 968 | ||
972 | float posZLimit = 0; | 969 | float posZLimit = 0; |
973 | 970 | ||
974 | if (pos.X < Constants.RegionSize && pos.Y < Constants.RegionSize) | 971 | if (pos.X < m_scene.RegionInfo.RegionSizeX && pos.Y < m_scene.RegionInfo.RegionSizeY) |
975 | posZLimit = (float)m_scene.Heightmap[(int)pos.X, (int)pos.Y]; | 972 | posZLimit = (float)m_scene.Heightmap[(int)pos.X, (int)pos.Y]; |
976 | 973 | ||
977 | float newPosZ = posZLimit + localAVHeight / 2; | 974 | float newPosZ = posZLimit + localAVHeight / 2; |
@@ -2076,7 +2073,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2076 | if (regionCombinerModule != null) | 2073 | if (regionCombinerModule != null) |
2077 | regionSize = regionCombinerModule.GetSizeOfMegaregion(m_scene.RegionInfo.RegionID); | 2074 | regionSize = regionCombinerModule.GetSizeOfMegaregion(m_scene.RegionInfo.RegionID); |
2078 | else | 2075 | else |
2079 | regionSize = new Vector2(Constants.RegionSize); | 2076 | regionSize = new Vector2(m_scene.RegionInfo.RegionSizeX, m_scene.RegionInfo.RegionSizeY); |
2080 | 2077 | ||
2081 | if (pos.X < 0 || pos.X >= regionSize.X | 2078 | if (pos.X < 0 || pos.X >= regionSize.X |
2082 | || pos.Y < 0 || pos.Y >= regionSize.Y | 2079 | || pos.Y < 0 || pos.Y >= regionSize.Y |
@@ -2094,8 +2091,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2094 | // } | 2091 | // } |
2095 | 2092 | ||
2096 | // Get terrain height for sub-region in a megaregion if necessary | 2093 | // Get terrain height for sub-region in a megaregion if necessary |
2097 | int X = (int)((m_scene.RegionInfo.RegionLocX * Constants.RegionSize) + pos.X); | 2094 | int X = (int)((m_scene.RegionInfo.RegionWorldLocX) + pos.X); |
2098 | int Y = (int)((m_scene.RegionInfo.RegionLocY * Constants.RegionSize) + pos.Y); | 2095 | int Y = (int)((m_scene.RegionInfo.RegionWorldLocY) + pos.Y); |
2099 | GridRegion target_region = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, X, Y); | 2096 | GridRegion target_region = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, X, Y); |
2100 | // If X and Y is NaN, target_region will be null | 2097 | // If X and Y is NaN, target_region will be null |
2101 | if (target_region == null) | 2098 | if (target_region == null) |
@@ -2106,7 +2103,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2106 | if (!SceneManager.Instance.TryGetScene(target_regionID, out targetScene)) | 2103 | if (!SceneManager.Instance.TryGetScene(target_regionID, out targetScene)) |
2107 | targetScene = m_scene; | 2104 | targetScene = m_scene; |
2108 | 2105 | ||
2109 | float terrainHeight = (float)targetScene.Heightmap[(int)(pos.X % Constants.RegionSize), (int)(pos.Y % Constants.RegionSize)]; | 2106 | float terrainHeight = (float)targetScene.Heightmap[(int)(pos.X % regionSize.X), (int)(pos.Y % regionSize.Y)]; |
2110 | pos.Z = Math.Max(terrainHeight, pos.Z); | 2107 | pos.Z = Math.Max(terrainHeight, pos.Z); |
2111 | 2108 | ||
2112 | // Fudge factor. It appears that if one clicks "go here" on a piece of ground, the go here request is | 2109 | // Fudge factor. It appears that if one clicks "go here" on a piece of ground, the go here request is |
@@ -3199,11 +3196,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
3199 | Vector3 pos = AbsolutePosition; | 3196 | Vector3 pos = AbsolutePosition; |
3200 | if (AbsolutePosition.X < 0) | 3197 | if (AbsolutePosition.X < 0) |
3201 | pos.X += Velocity.X * 2; | 3198 | pos.X += Velocity.X * 2; |
3202 | else if (AbsolutePosition.X > Constants.RegionSize) | 3199 | else if (AbsolutePosition.X > m_scene.RegionInfo.RegionSizeX) |
3203 | pos.X -= Velocity.X * 2; | 3200 | pos.X -= Velocity.X * 2; |
3204 | if (AbsolutePosition.Y < 0) | 3201 | if (AbsolutePosition.Y < 0) |
3205 | pos.Y += Velocity.Y * 2; | 3202 | pos.Y += Velocity.Y * 2; |
3206 | else if (AbsolutePosition.Y > Constants.RegionSize) | 3203 | else if (AbsolutePosition.Y > m_scene.RegionInfo.RegionSizeY) |
3207 | pos.Y -= Velocity.Y * 2; | 3204 | pos.Y -= Velocity.Y * 2; |
3208 | Velocity = Vector3.Zero; | 3205 | Velocity = Vector3.Zero; |
3209 | AbsolutePosition = pos; | 3206 | AbsolutePosition = pos; |
@@ -3226,11 +3223,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
3226 | Vector3 pos = AbsolutePosition; | 3223 | Vector3 pos = AbsolutePosition; |
3227 | if (AbsolutePosition.X < 0) | 3224 | if (AbsolutePosition.X < 0) |
3228 | pos.X += Velocity.X * 2; | 3225 | pos.X += Velocity.X * 2; |
3229 | else if (AbsolutePosition.X > Constants.RegionSize) | 3226 | else if (AbsolutePosition.X > m_scene.RegionInfo.RegionSizeX) |
3230 | pos.X -= Velocity.X * 2; | 3227 | pos.X -= Velocity.X * 2; |
3231 | if (AbsolutePosition.Y < 0) | 3228 | if (AbsolutePosition.Y < 0) |
3232 | pos.Y += Velocity.Y * 2; | 3229 | pos.Y += Velocity.Y * 2; |
3233 | else if (AbsolutePosition.Y > Constants.RegionSize) | 3230 | else if (AbsolutePosition.Y > m_scene.RegionInfo.RegionSizeY) |
3234 | pos.Y -= Velocity.Y * 2; | 3231 | pos.Y -= Velocity.Y * 2; |
3235 | Velocity = Vector3.Zero; | 3232 | Velocity = Vector3.Zero; |
3236 | AbsolutePosition = pos; | 3233 | AbsolutePosition = pos; |
@@ -3279,7 +3276,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3279 | 3276 | ||
3280 | // Put the child agent back at the center | 3277 | // Put the child agent back at the center |
3281 | AbsolutePosition | 3278 | AbsolutePosition |
3282 | = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f), 70); | 3279 | = new Vector3(((float)m_scene.RegionInfo.RegionSizeX * 0.5f), ((float)m_scene.RegionInfo.RegionSizeY * 0.5f), 70); |
3283 | 3280 | ||
3284 | Animator.ResetAnimations(); | 3281 | Animator.ResetAnimations(); |
3285 | } | 3282 | } |
@@ -3306,9 +3303,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3306 | if (handle != Scene.RegionInfo.RegionHandle) | 3303 | if (handle != Scene.RegionInfo.RegionHandle) |
3307 | { | 3304 | { |
3308 | uint x, y; | 3305 | uint x, y; |
3309 | Utils.LongToUInts(handle, out x, out y); | 3306 | Util.RegionHandleToRegionLoc(handle, out x, out y); |
3310 | x = x / Constants.RegionSize; | ||
3311 | y = y / Constants.RegionSize; | ||
3312 | 3307 | ||
3313 | // m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); | 3308 | // m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); |
3314 | // m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); | 3309 | // m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); |
@@ -3389,8 +3384,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3389 | return; | 3384 | return; |
3390 | 3385 | ||
3391 | //m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY); | 3386 | //m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY); |
3392 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; | 3387 | // Find the distance (in meters) between the two regions |
3393 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; | 3388 | uint shiftx = Util.RegionToWorldLoc(rRegionX - tRegionX); |
3389 | uint shifty = Util.RegionToWorldLoc(rRegionY - tRegionY); | ||
3394 | 3390 | ||
3395 | Vector3 offset = new Vector3(shiftx, shifty, 0f); | 3391 | Vector3 offset = new Vector3(shiftx, shifty, 0f); |
3396 | 3392 | ||