aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs')
-rw-r--r--OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs71
1 files changed, 42 insertions, 29 deletions
diff --git a/OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs b/OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs
index d46bf0f..5d70bc1 100644
--- a/OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs
+++ b/OpenSim/OpenSim.Region/Scenes/Avatar.Update.cs
@@ -43,36 +43,24 @@ namespace OpenSim.Region.Scenes
43 /// </summary> 43 /// </summary>
44 public override void update() 44 public override void update()
45 { 45 {
46 if (this.newForce) 46 if (this.childAvatar == false)
47 { 47 {
48 this.SendTerseUpdateToALLClients(); 48 if (this.newForce)
49 _updateCount = 0;
50 }
51 else if (movementflag != 0)
52 {
53 _updateCount++;
54 if (_updateCount > 3)
55 { 49 {
56 this.SendTerseUpdateToALLClients(); 50 this.SendTerseUpdateToALLClients();
57 _updateCount = 0; 51 _updateCount = 0;
58 } 52 }
59 } 53 else if (movementflag != 0)
60 54 {
61 LLVector3 pos2 = this.Pos; 55 _updateCount++;
62 LLVector3 vel = this.Velocity; 56 if (_updateCount > 3)
63 57 {
64 float timeStep = 0.3f; 58 this.SendTerseUpdateToALLClients();
65 pos2.X = pos2.X + (vel.X * timeStep); 59 _updateCount = 0;
66 pos2.Y = pos2.Y + (vel.Y * timeStep); 60 }
67 pos2.Z = pos2.Z + (vel.Z * timeStep); 61 }
68 if ((pos2.X < 0) || (pos2.X > 256))
69 {
70 this.CrossToNewRegion();
71 }
72 62
73 if ((pos2.Y < 0) || (pos2.Y > 256)) 63 this.CheckBorderCrossing();
74 {
75 this.CrossToNewRegion();
76 } 64 }
77 } 65 }
78 66
@@ -165,10 +153,35 @@ namespace OpenSim.Region.Scenes
165 153
166 } 154 }
167 155
168 private void CrossToNewRegion() 156 /// <summary>
157 ///
158 /// </summary>
159 protected void CheckBorderCrossing()
160 {
161 LLVector3 pos2 = this.Pos;
162 LLVector3 vel = this.Velocity;
163
164 float timeStep = 0.3f;
165 pos2.X = pos2.X + (vel.X * timeStep);
166 pos2.Y = pos2.Y + (vel.Y * timeStep);
167 pos2.Z = pos2.Z + (vel.Z * timeStep);
168
169 if ((pos2.X < 0) || (pos2.X > 256))
170 {
171 this.CrossToNewRegion();
172 }
173
174 if ((pos2.Y < 0) || (pos2.Y > 256))
175 {
176 this.CrossToNewRegion();
177 }
178 }
179
180 /// <summary>
181 ///
182 /// </summary>
183 protected void CrossToNewRegion()
169 { 184 {
170
171 // Console.WriteLine("crossing to new region from region " + this.m_regionInfo.RegionLocX + " , "+ this.m_regionInfo.RegionLocY);
172 LLVector3 pos = this.Pos; 185 LLVector3 pos = this.Pos;
173 LLVector3 newpos = new LLVector3(pos.X, pos.Y, pos.Z); 186 LLVector3 newpos = new LLVector3(pos.X, pos.Y, pos.Z);
174 uint neighbourx = this.m_regionInfo.RegionLocX; 187 uint neighbourx = this.m_regionInfo.RegionLocX;
@@ -196,14 +209,14 @@ namespace OpenSim.Region.Scenes
196 } 209 }
197 210
198 LLVector3 vel = this.velocity; 211 LLVector3 vel = this.velocity;
199 // Console.WriteLine("new region should be " + neighbourx + " , " + neighboury);
200 ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury* 256)); 212 ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury* 256));
201 RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle); 213 RegionInfo neighbourRegion = this.m_world.RequestNeighbouringRegionInfo(neighbourHandle);
202 if (neighbourRegion != null) 214 if (neighbourRegion != null)
203 { 215 {
204 // Console.WriteLine("current region port is "+ this.m_regionInfo.IPListenPort + " now crossing to new region with port " + neighbourRegion.IPListenPort);
205 this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos); 216 this.m_world.InformNeighbourOfCrossing(neighbourHandle, this.ControllingClient.AgentId, newpos);
217 this.DownGradeAvatar();
206 this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, System.Net.IPAddress.Parse(neighbourRegion.IPListenAddr), (ushort)neighbourRegion.IPListenPort); 218 this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, System.Net.IPAddress.Parse(neighbourRegion.IPListenAddr), (ushort)neighbourRegion.IPListenPort);
219
207 } 220 }
208 } 221 }
209 222