diff options
Very Preliminary border crossing added to sugilite. (Note: Sugilite doesn't have any backend ogs communication support yet so everything is Sandbox mode only )
Diffstat (limited to 'OpenSim/OpenSim.RegionServer/ClientView.API.cs')
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.API.cs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.API.cs b/OpenSim/OpenSim.RegionServer/ClientView.API.cs index 33727c4..b126004 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.API.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.API.cs | |||
@@ -166,7 +166,7 @@ namespace OpenSim | |||
166 | /// | 166 | /// |
167 | /// </summary> | 167 | /// </summary> |
168 | /// <param name="regInfo"></param> | 168 | /// <param name="regInfo"></param> |
169 | public void MoveAgentIntoRegion(RegionInfo regInfo) | 169 | public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos) |
170 | { | 170 | { |
171 | AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); | 171 | AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); |
172 | mov.AgentData.SessionID = this.SessionID; | 172 | mov.AgentData.SessionID = this.SessionID; |
@@ -174,7 +174,14 @@ namespace OpenSim | |||
174 | mov.Data.RegionHandle = regInfo.RegionHandle; | 174 | mov.Data.RegionHandle = regInfo.RegionHandle; |
175 | // TODO - dynamicalise this stuff | 175 | // TODO - dynamicalise this stuff |
176 | mov.Data.Timestamp = 1172750370; | 176 | mov.Data.Timestamp = 1172750370; |
177 | mov.Data.Position = this.startpos; | 177 | if (pos != null) |
178 | { | ||
179 | mov.Data.Position = pos; | ||
180 | } | ||
181 | else | ||
182 | { | ||
183 | mov.Data.Position = this.startpos; | ||
184 | } | ||
178 | mov.Data.LookAt = new LLVector3(0.99f, 0.042f, 0); | 185 | mov.Data.LookAt = new LLVector3(0.99f, 0.042f, 0); |
179 | 186 | ||
180 | OutPacket(mov); | 187 | OutPacket(mov); |
@@ -305,6 +312,29 @@ namespace OpenSim | |||
305 | return agentData; | 312 | return agentData; |
306 | } | 313 | } |
307 | 314 | ||
315 | public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, System.Net.IPAddress newRegionIP, ushort newRegionPort) | ||
316 | { | ||
317 | CrossedRegionPacket newSimPack = new CrossedRegionPacket(); | ||
318 | newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock(); | ||
319 | newSimPack.AgentData.AgentID = this.AgentID; | ||
320 | newSimPack.AgentData.SessionID = this.SessionID; | ||
321 | newSimPack.Info = new CrossedRegionPacket.InfoBlock(); | ||
322 | newSimPack.Info.Position = pos; | ||
323 | newSimPack.Info.LookAt = lookAt; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! | ||
324 | newSimPack.RegionData = new libsecondlife.Packets.CrossedRegionPacket.RegionDataBlock(); | ||
325 | newSimPack.RegionData.RegionHandle = newRegionHandle; | ||
326 | byte[] byteIP = newRegionIP.GetAddressBytes(); | ||
327 | newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24; | ||
328 | newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16; | ||
329 | newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8; | ||
330 | newSimPack.RegionData.SimIP += (uint)byteIP[0]; | ||
331 | newSimPack.RegionData.SimPort = newRegionPort; | ||
332 | newSimPack.RegionData.SeedCapability = new byte[0]; | ||
333 | |||
334 | this.OutPacket(newSimPack); | ||
335 | this.DowngradeClient(); | ||
336 | } | ||
337 | |||
308 | #region Appearance/ Wearables Methods | 338 | #region Appearance/ Wearables Methods |
309 | 339 | ||
310 | /// <summary> | 340 | /// <summary> |