aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs56
1 files changed, 8 insertions, 48 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 464f8f0..8eb069f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2782,17 +2782,17 @@ namespace OpenSim.Region.Framework.Scenes
2782 if (m_scene.TestBorderCross(pos2, Cardinals.S)) 2782 if (m_scene.TestBorderCross(pos2, Cardinals.S))
2783 { 2783 {
2784 needsTransit = true; 2784 needsTransit = true;
2785 neighbor = HaveNeighbor(Cardinals.SW, ref fix); 2785 neighbor = m_scene.HaveNeighbor(Cardinals.SW, ref fix);
2786 } 2786 }
2787 else if (m_scene.TestBorderCross(pos2, Cardinals.N)) 2787 else if (m_scene.TestBorderCross(pos2, Cardinals.N))
2788 { 2788 {
2789 needsTransit = true; 2789 needsTransit = true;
2790 neighbor = HaveNeighbor(Cardinals.NW, ref fix); 2790 neighbor = m_scene.HaveNeighbor(Cardinals.NW, ref fix);
2791 } 2791 }
2792 else 2792 else
2793 { 2793 {
2794 needsTransit = true; 2794 needsTransit = true;
2795 neighbor = HaveNeighbor(Cardinals.W, ref fix); 2795 neighbor = m_scene.HaveNeighbor(Cardinals.W, ref fix);
2796 } 2796 }
2797 } 2797 }
2798 else if (m_scene.TestBorderCross(pos2, Cardinals.E)) 2798 else if (m_scene.TestBorderCross(pos2, Cardinals.E))
@@ -2800,28 +2800,28 @@ namespace OpenSim.Region.Framework.Scenes
2800 if (m_scene.TestBorderCross(pos2, Cardinals.S)) 2800 if (m_scene.TestBorderCross(pos2, Cardinals.S))
2801 { 2801 {
2802 needsTransit = true; 2802 needsTransit = true;
2803 neighbor = HaveNeighbor(Cardinals.SE, ref fix); 2803 neighbor = m_scene.HaveNeighbor(Cardinals.SE, ref fix);
2804 } 2804 }
2805 else if (m_scene.TestBorderCross(pos2, Cardinals.N)) 2805 else if (m_scene.TestBorderCross(pos2, Cardinals.N))
2806 { 2806 {
2807 needsTransit = true; 2807 needsTransit = true;
2808 neighbor = HaveNeighbor(Cardinals.NE, ref fix); 2808 neighbor = m_scene.HaveNeighbor(Cardinals.NE, ref fix);
2809 } 2809 }
2810 else 2810 else
2811 { 2811 {
2812 needsTransit = true; 2812 needsTransit = true;
2813 neighbor = HaveNeighbor(Cardinals.E, ref fix); 2813 neighbor = m_scene.HaveNeighbor(Cardinals.E, ref fix);
2814 } 2814 }
2815 } 2815 }
2816 else if (m_scene.TestBorderCross(pos2, Cardinals.S)) 2816 else if (m_scene.TestBorderCross(pos2, Cardinals.S))
2817 { 2817 {
2818 needsTransit = true; 2818 needsTransit = true;
2819 neighbor = HaveNeighbor(Cardinals.S, ref fix); 2819 neighbor = m_scene.HaveNeighbor(Cardinals.S, ref fix);
2820 } 2820 }
2821 else if (m_scene.TestBorderCross(pos2, Cardinals.N)) 2821 else if (m_scene.TestBorderCross(pos2, Cardinals.N))
2822 { 2822 {
2823 needsTransit = true; 2823 needsTransit = true;
2824 neighbor = HaveNeighbor(Cardinals.N, ref fix); 2824 neighbor = m_scene.HaveNeighbor(Cardinals.N, ref fix);
2825 } 2825 }
2826 2826
2827 // Makes sure avatar does not end up outside region 2827 // Makes sure avatar does not end up outside region
@@ -2897,46 +2897,6 @@ namespace OpenSim.Region.Framework.Scenes
2897 } 2897 }
2898 2898
2899 /// <summary> 2899 /// <summary>
2900 /// Checks whether this region has a neighbour in the given direction.
2901 /// </summary>
2902 /// <param name="car"></param>
2903 /// <param name="fix"></param>
2904 /// <returns>
2905 /// An integer which represents a compass point. N == 1, going clockwise until we reach NW == 8.
2906 /// Returns a positive integer if there is a region in that direction, a negative integer if not.
2907 /// </returns>
2908 protected int HaveNeighbor(Cardinals car, ref int[] fix)
2909 {
2910 uint neighbourx = m_scene.RegionInfo.RegionLocX;
2911 uint neighboury = m_scene.RegionInfo.RegionLocY;
2912
2913 int dir = (int)car;
2914
2915 if (dir > 1 && dir < 5) //Heading East
2916 neighbourx++;
2917 else if (dir > 5) // Heading West
2918 neighbourx--;
2919
2920 if (dir < 3 || dir == 8) // Heading North
2921 neighboury++;
2922 else if (dir > 3 && dir < 7) // Heading Sout
2923 neighboury--;
2924
2925 int x = (int)(neighbourx * Constants.RegionSize);
2926 int y = (int)(neighboury * Constants.RegionSize);
2927 GridRegion neighbourRegion = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, x, y);
2928
2929 if (neighbourRegion == null)
2930 {
2931 fix[0] = (int)(m_scene.RegionInfo.RegionLocX - neighbourx);
2932 fix[1] = (int)(m_scene.RegionInfo.RegionLocY - neighboury);
2933 return dir * (-1);
2934 }
2935 else
2936 return dir;
2937 }
2938
2939 /// <summary>
2940 /// Moves the agent outside the region bounds 2900 /// Moves the agent outside the region bounds
2941 /// Tells neighbor region that we're crossing to it 2901 /// Tells neighbor region that we're crossing to it
2942 /// If the neighbor accepts, remove the agent's viewable avatar from this scene 2902 /// If the neighbor accepts, remove the agent's viewable avatar from this scene