aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs6
-rw-r--r--OpenSim/Region/ClientStack/ClientView.API.cs538
-rw-r--r--OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs89
-rw-r--r--OpenSim/Region/ClientStack/ClientView.PacketQueue.cs39
-rw-r--r--OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs270
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs86
-rw-r--r--OpenSim/Region/ClientStack/PacketServer.cs33
-rw-r--r--OpenSim/Region/ClientStack/RegionApplicationBase.cs25
-rw-r--r--OpenSim/Region/ClientStack/UDPServer.cs60
9 files changed, 613 insertions, 533 deletions
diff --git a/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs
index 3960c19..4b44ead 100644
--- a/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs
+++ b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs
@@ -29,12 +29,10 @@ using System.Net.Sockets;
29 29
30namespace OpenSim.Region.ClientStack 30namespace OpenSim.Region.ClientStack
31{ 31{
32
33 public interface ClientStackNetworkHandler 32 public interface ClientStackNetworkHandler
34 { 33 {
35 void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender); 34 void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode); // EndPoint packetSender);
36 void RemoveClientCircuit(uint circuitcode); 35 void RemoveClientCircuit(uint circuitcode);
37 void RegisterPacketServer(PacketServer server); 36 void RegisterPacketServer(PacketServer server);
38 } 37 }
39 38} \ No newline at end of file
40}
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs
index 24962f8..7dcf1e8 100644
--- a/OpenSim/Region/ClientStack/ClientView.API.cs
+++ b/OpenSim/Region/ClientStack/ClientView.API.cs
@@ -32,10 +32,8 @@ using System.Text;
32using Axiom.Math; 32using Axiom.Math;
33using libsecondlife; 33using libsecondlife;
34using libsecondlife.Packets; 34using libsecondlife.Packets;
35using OpenSim.Framework.Console;
36using OpenSim.Framework.Interfaces;
37using OpenSim.Framework;
38using OpenSim.Framework; 35using OpenSim.Framework;
36using OpenSim.Framework.Console;
39 37
40namespace OpenSim.Region.ClientStack 38namespace OpenSim.Region.ClientStack
41{ 39{
@@ -116,26 +114,18 @@ namespace OpenSim.Region.ClientStack
116 /// </summary> 114 /// </summary>
117 public LLVector3 StartPos 115 public LLVector3 StartPos
118 { 116 {
119 get 117 get { return startpos; }
120 { 118 set { startpos = value; }
121 return startpos;
122 }
123 set
124 {
125 startpos = value;
126 }
127 } 119 }
128 120
129 /// <summary> 121 /// <summary>
130 /// 122 ///
131 /// </summary> 123 /// </summary>
132 private LLUUID m_agentId; 124 private LLUUID m_agentId;
125
133 public LLUUID AgentId 126 public LLUUID AgentId
134 { 127 {
135 get 128 get { return m_agentId; }
136 {
137 return m_agentId;
138 }
139 } 129 }
140 130
141 /// <summary> 131 /// <summary>
@@ -143,11 +133,7 @@ namespace OpenSim.Region.ClientStack
143 /// </summary> 133 /// </summary>
144 public string FirstName 134 public string FirstName
145 { 135 {
146 get 136 get { return firstName; }
147 {
148 return this.firstName;
149 }
150
151 } 137 }
152 138
153 /// <summary> 139 /// <summary>
@@ -155,10 +141,7 @@ namespace OpenSim.Region.ClientStack
155 /// </summary> 141 /// </summary>
156 public string LastName 142 public string LastName
157 { 143 {
158 get 144 get { return lastName; }
159 {
160 return this.lastName;
161 }
162 } 145 }
163 146
164 #region Scene/Avatar to Client 147 #region Scene/Avatar to Client
@@ -182,11 +165,11 @@ namespace OpenSim.Region.ClientStack
182 handshake.RegionInfo.TerrainStartHeight01 = regionInfo.EstateSettings.terrainStartHeight1; 165 handshake.RegionInfo.TerrainStartHeight01 = regionInfo.EstateSettings.terrainStartHeight1;
183 handshake.RegionInfo.TerrainStartHeight10 = regionInfo.EstateSettings.terrainStartHeight2; 166 handshake.RegionInfo.TerrainStartHeight10 = regionInfo.EstateSettings.terrainStartHeight2;
184 handshake.RegionInfo.TerrainStartHeight11 = regionInfo.EstateSettings.terrainStartHeight3; 167 handshake.RegionInfo.TerrainStartHeight11 = regionInfo.EstateSettings.terrainStartHeight3;
185 handshake.RegionInfo.SimAccess = (byte)regionInfo.EstateSettings.simAccess; 168 handshake.RegionInfo.SimAccess = (byte) regionInfo.EstateSettings.simAccess;
186 handshake.RegionInfo.WaterHeight = regionInfo.EstateSettings.waterHeight; 169 handshake.RegionInfo.WaterHeight = regionInfo.EstateSettings.waterHeight;
187 170
188 171
189 handshake.RegionInfo.RegionFlags = (uint)regionInfo.EstateSettings.regionFlags; 172 handshake.RegionInfo.RegionFlags = (uint) regionInfo.EstateSettings.regionFlags;
190 173
191 handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0"); 174 handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0");
192 handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID; 175 handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID;
@@ -200,7 +183,7 @@ namespace OpenSim.Region.ClientStack
200 handshake.RegionInfo.TerrainDetail3 = regionInfo.EstateSettings.terrainDetail3; 183 handshake.RegionInfo.TerrainDetail3 = regionInfo.EstateSettings.terrainDetail3;
201 handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? 184 handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting?
202 185
203 this.OutPacket(handshake); 186 OutPacket(handshake);
204 } 187 }
205 188
206 /// <summary> 189 /// <summary>
@@ -210,14 +193,14 @@ namespace OpenSim.Region.ClientStack
210 public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look) 193 public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look)
211 { 194 {
212 AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); 195 AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
213 mov.AgentData.SessionID = this.m_sessionId; 196 mov.AgentData.SessionID = m_sessionId;
214 mov.AgentData.AgentID = this.AgentId; 197 mov.AgentData.AgentID = AgentId;
215 mov.Data.RegionHandle = regInfo.RegionHandle; 198 mov.Data.RegionHandle = regInfo.RegionHandle;
216 mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this 199 mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this
217 200
218 if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) 201 if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0))
219 { 202 {
220 mov.Data.Position = this.startpos; 203 mov.Data.Position = startpos;
221 } 204 }
222 else 205 else
223 { 206 {
@@ -255,7 +238,7 @@ namespace OpenSim.Region.ClientStack
255 reply.ChatData.OwnerID = fromAgentID; 238 reply.ChatData.OwnerID = fromAgentID;
256 reply.ChatData.SourceID = fromAgentID; 239 reply.ChatData.SourceID = fromAgentID;
257 240
258 this.OutPacket(reply); 241 OutPacket(reply);
259 } 242 }
260 243
261 /// <summary> 244 /// <summary>
@@ -264,27 +247,27 @@ namespace OpenSim.Region.ClientStack
264 /// <remarks>TODO</remarks> 247 /// <remarks>TODO</remarks>
265 /// <param name="message"></param> 248 /// <param name="message"></param>
266 /// <param name="target"></param> 249 /// <param name="target"></param>
267 public void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, LLUUID imSessionID, string fromName, byte dialog, uint timeStamp) 250 public void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent,
251 LLUUID imSessionID, string fromName, byte dialog, uint timeStamp)
268 { 252 {
269 253 Encoding enc = Encoding.ASCII;
270 Encoding enc = Encoding.ASCII; 254 ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket();
271 ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket(); 255 msg.AgentData.AgentID = fromAgent;
272 msg.AgentData.AgentID = fromAgent; 256 msg.AgentData.SessionID = fromAgentSession;
273 msg.AgentData.SessionID = fromAgentSession; 257 msg.MessageBlock.FromAgentName = enc.GetBytes(fromName + " \0");
274 msg.MessageBlock.FromAgentName = enc.GetBytes(fromName + " \0"); 258 msg.MessageBlock.Dialog = dialog;
275 msg.MessageBlock.Dialog = dialog; 259 msg.MessageBlock.FromGroup = false;
276 msg.MessageBlock.FromGroup = false; 260 msg.MessageBlock.ID = imSessionID;
277 msg.MessageBlock.ID = imSessionID; 261 msg.MessageBlock.Offline = 0;
278 msg.MessageBlock.Offline = 0; 262 msg.MessageBlock.ParentEstateID = 0;
279 msg.MessageBlock.ParentEstateID = 0; 263 msg.MessageBlock.Position = new LLVector3();
280 msg.MessageBlock.Position = new LLVector3(); 264 msg.MessageBlock.RegionID = LLUUID.Random();
281 msg.MessageBlock.RegionID = LLUUID.Random(); 265 msg.MessageBlock.Timestamp = timeStamp;
282 msg.MessageBlock.Timestamp = timeStamp; 266 msg.MessageBlock.ToAgentID = toAgent;
283 msg.MessageBlock.ToAgentID = toAgent; 267 msg.MessageBlock.Message = enc.GetBytes(message + "\0");
284 msg.MessageBlock.Message = enc.GetBytes(message + "\0"); 268 msg.MessageBlock.BinaryBucket = new byte[0];
285 msg.MessageBlock.BinaryBucket = new byte[0]; 269
286 270 OutPacket(msg);
287 this.OutPacket(msg);
288 } 271 }
289 272
290 /// <summary> 273 /// <summary>
@@ -301,10 +284,10 @@ namespace OpenSim.Region.ClientStack
301 { 284 {
302 for (int x = 0; x < 16; x = x + 4) 285 for (int x = 0; x < 16; x = x + 4)
303 { 286 {
304 patches[0] = x + 0 + y * 16; 287 patches[0] = x + 0 + y*16;
305 patches[1] = x + 1 + y * 16; 288 patches[1] = x + 1 + y*16;
306 patches[2] = x + 2 + y * 16; 289 patches[2] = x + 2 + y*16;
307 patches[3] = x + 3 + y * 16; 290 patches[3] = x + 3 + y*16;
308 291
309 Packet layerpack = TerrainManager.CreateLandPacket(map, patches); 292 Packet layerpack = TerrainManager.CreateLandPacket(map, patches);
310 OutPacket(layerpack); 293 OutPacket(layerpack);
@@ -313,7 +296,8 @@ namespace OpenSim.Region.ClientStack
313 } 296 }
314 catch (Exception e) 297 catch (Exception e)
315 { 298 {
316 MainLog.Instance.Warn("client", "ClientView API.cs: SendLayerData() - Failed with exception " + e.ToString()); 299 MainLog.Instance.Warn("client",
300 "ClientView API.cs: SendLayerData() - Failed with exception " + e.ToString());
317 } 301 }
318 } 302 }
319 303
@@ -332,14 +316,15 @@ namespace OpenSim.Region.ClientStack
332 patchx = px; 316 patchx = px;
333 patchy = py; 317 patchy = py;
334 318
335 patches[0] = patchx + 0 + patchy * 16; 319 patches[0] = patchx + 0 + patchy*16;
336 320
337 Packet layerpack = TerrainManager.CreateLandPacket(map, patches); 321 Packet layerpack = TerrainManager.CreateLandPacket(map, patches);
338 OutPacket(layerpack); 322 OutPacket(layerpack);
339 } 323 }
340 catch (Exception e) 324 catch (Exception e)
341 { 325 {
342 MainLog.Instance.Warn("client", "ClientView API .cs: SendLayerData() - Failed with exception " + e.ToString()); 326 MainLog.Instance.Warn("client",
327 "ClientView API .cs: SendLayerData() - Failed with exception " + e.ToString());
343 } 328 }
344 } 329 }
345 330
@@ -352,17 +337,17 @@ namespace OpenSim.Region.ClientStack
352 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint) 337 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint)
353 { 338 {
354 IPAddress neighbourIP = neighbourEndPoint.Address; 339 IPAddress neighbourIP = neighbourEndPoint.Address;
355 ushort neighbourPort = (ushort)neighbourEndPoint.Port; 340 ushort neighbourPort = (ushort) neighbourEndPoint.Port;
356 341
357 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); 342 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket();
358 enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); 343 enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock();
359 enablesimpacket.SimulatorInfo.Handle = neighbourHandle; 344 enablesimpacket.SimulatorInfo.Handle = neighbourHandle;
360 345
361 byte[] byteIP = neighbourIP.GetAddressBytes(); 346 byte[] byteIP = neighbourIP.GetAddressBytes();
362 enablesimpacket.SimulatorInfo.IP = (uint)byteIP[3] << 24; 347 enablesimpacket.SimulatorInfo.IP = (uint) byteIP[3] << 24;
363 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[2] << 16; 348 enablesimpacket.SimulatorInfo.IP += (uint) byteIP[2] << 16;
364 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[1] << 8; 349 enablesimpacket.SimulatorInfo.IP += (uint) byteIP[1] << 8;
365 enablesimpacket.SimulatorInfo.IP += (uint)byteIP[0]; 350 enablesimpacket.SimulatorInfo.IP += (uint) byteIP[0];
366 enablesimpacket.SimulatorInfo.Port = neighbourPort; 351 enablesimpacket.SimulatorInfo.Port = neighbourPort;
367 OutPacket(enablesimpacket); 352 OutPacket(enablesimpacket);
368 } 353 }
@@ -374,46 +359,48 @@ namespace OpenSim.Region.ClientStack
374 public AgentCircuitData RequestClientInfo() 359 public AgentCircuitData RequestClientInfo()
375 { 360 {
376 AgentCircuitData agentData = new AgentCircuitData(); 361 AgentCircuitData agentData = new AgentCircuitData();
377 agentData.AgentID = this.AgentId; 362 agentData.AgentID = AgentId;
378 agentData.SessionID = this.m_sessionId; 363 agentData.SessionID = m_sessionId;
379 agentData.SecureSessionID = this.SecureSessionID; 364 agentData.SecureSessionID = SecureSessionID;
380 agentData.circuitcode = this.m_circuitCode; 365 agentData.circuitcode = m_circuitCode;
381 agentData.child = false; 366 agentData.child = false;
382 agentData.firstname = this.firstName; 367 agentData.firstname = firstName;
383 agentData.lastname = this.lastName; 368 agentData.lastname = lastName;
384 agentData.CapsPath = ""; 369 agentData.CapsPath = "";
385 return agentData; 370 return agentData;
386 } 371 }
387 372
388 public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint externalIPEndPoint, string capsURL) 373 public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint externalIPEndPoint,
374 string capsURL)
389 { 375 {
390 LLVector3 look = new LLVector3(lookAt.X * 10, lookAt.Y * 10, lookAt.Z * 10); 376 LLVector3 look = new LLVector3(lookAt.X*10, lookAt.Y*10, lookAt.Z*10);
391 377
392 CrossedRegionPacket newSimPack = new CrossedRegionPacket(); 378 CrossedRegionPacket newSimPack = new CrossedRegionPacket();
393 newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock(); 379 newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock();
394 newSimPack.AgentData.AgentID = this.AgentId; 380 newSimPack.AgentData.AgentID = AgentId;
395 newSimPack.AgentData.SessionID = this.m_sessionId; 381 newSimPack.AgentData.SessionID = m_sessionId;
396 newSimPack.Info = new CrossedRegionPacket.InfoBlock(); 382 newSimPack.Info = new CrossedRegionPacket.InfoBlock();
397 newSimPack.Info.Position = pos; 383 newSimPack.Info.Position = pos;
398 newSimPack.Info.LookAt = look; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! 384 newSimPack.Info.LookAt = look;
385 // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!!
399 newSimPack.RegionData = new CrossedRegionPacket.RegionDataBlock(); 386 newSimPack.RegionData = new CrossedRegionPacket.RegionDataBlock();
400 newSimPack.RegionData.RegionHandle = newRegionHandle; 387 newSimPack.RegionData.RegionHandle = newRegionHandle;
401 byte[] byteIP = externalIPEndPoint.Address.GetAddressBytes(); 388 byte[] byteIP = externalIPEndPoint.Address.GetAddressBytes();
402 newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24; 389 newSimPack.RegionData.SimIP = (uint) byteIP[3] << 24;
403 newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16; 390 newSimPack.RegionData.SimIP += (uint) byteIP[2] << 16;
404 newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8; 391 newSimPack.RegionData.SimIP += (uint) byteIP[1] << 8;
405 newSimPack.RegionData.SimIP += (uint)byteIP[0]; 392 newSimPack.RegionData.SimIP += (uint) byteIP[0];
406 newSimPack.RegionData.SimPort = (ushort)externalIPEndPoint.Port; 393 newSimPack.RegionData.SimPort = (ushort) externalIPEndPoint.Port;
407 //newSimPack.RegionData.SeedCapability = new byte[0]; 394 //newSimPack.RegionData.SeedCapability = new byte[0];
408 newSimPack.RegionData.SeedCapability = Helpers.StringToField(capsURL); 395 newSimPack.RegionData.SeedCapability = Helpers.StringToField(capsURL);
409 396
410 this.OutPacket(newSimPack); 397 OutPacket(newSimPack);
411 } 398 }
412 399
413 public void SendMapBlock(List<MapBlockData> mapBlocks) 400 public void SendMapBlock(List<MapBlockData> mapBlocks)
414 { 401 {
415 MapBlockReplyPacket mapReply = new MapBlockReplyPacket(); 402 MapBlockReplyPacket mapReply = new MapBlockReplyPacket();
416 mapReply.AgentData.AgentID = this.AgentId; 403 mapReply.AgentData.AgentID = AgentId;
417 mapReply.Data = new MapBlockReplyPacket.DataBlock[mapBlocks.Count]; 404 mapReply.Data = new MapBlockReplyPacket.DataBlock[mapBlocks.Count];
418 mapReply.AgentData.Flags = 0; 405 mapReply.AgentData.Flags = 0;
419 406
@@ -429,13 +416,13 @@ namespace OpenSim.Region.ClientStack
429 mapReply.Data[i].Access = mapBlocks[i].Access; 416 mapReply.Data[i].Access = mapBlocks[i].Access;
430 mapReply.Data[i].Agents = mapBlocks[i].Agents; 417 mapReply.Data[i].Agents = mapBlocks[i].Agents;
431 } 418 }
432 this.OutPacket(mapReply); 419 OutPacket(mapReply);
433 } 420 }
434 421
435 public void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags) 422 public void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags)
436 { 423 {
437 TeleportLocalPacket tpLocal = new TeleportLocalPacket(); 424 TeleportLocalPacket tpLocal = new TeleportLocalPacket();
438 tpLocal.Info.AgentID = this.AgentId; 425 tpLocal.Info.AgentID = AgentId;
439 tpLocal.Info.TeleportFlags = flags; 426 tpLocal.Info.TeleportFlags = flags;
440 tpLocal.Info.LocationID = 2; 427 tpLocal.Info.LocationID = 2;
441 tpLocal.Info.LookAt = lookAt; 428 tpLocal.Info.LookAt = lookAt;
@@ -443,10 +430,11 @@ namespace OpenSim.Region.ClientStack
443 OutPacket(tpLocal); 430 OutPacket(tpLocal);
444 } 431 }
445 432
446 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags, string capsURL) 433 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID,
434 uint flags, string capsURL)
447 { 435 {
448 TeleportFinishPacket teleport = new TeleportFinishPacket(); 436 TeleportFinishPacket teleport = new TeleportFinishPacket();
449 teleport.Info.AgentID = this.AgentId; 437 teleport.Info.AgentID = AgentId;
450 teleport.Info.RegionHandle = regionHandle; 438 teleport.Info.RegionHandle = regionHandle;
451 teleport.Info.SimAccess = simAccess; 439 teleport.Info.SimAccess = simAccess;
452 440
@@ -455,13 +443,13 @@ namespace OpenSim.Region.ClientStack
455 443
456 IPAddress oIP = newRegionEndPoint.Address; 444 IPAddress oIP = newRegionEndPoint.Address;
457 byte[] byteIP = oIP.GetAddressBytes(); 445 byte[] byteIP = oIP.GetAddressBytes();
458 uint ip = (uint)byteIP[3] << 24; 446 uint ip = (uint) byteIP[3] << 24;
459 ip += (uint)byteIP[2] << 16; 447 ip += (uint) byteIP[2] << 16;
460 ip += (uint)byteIP[1] << 8; 448 ip += (uint) byteIP[1] << 8;
461 ip += (uint)byteIP[0]; 449 ip += (uint) byteIP[0];
462 450
463 teleport.Info.SimIP = ip; 451 teleport.Info.SimIP = ip;
464 teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; 452 teleport.Info.SimPort = (ushort) newRegionEndPoint.Port;
465 teleport.Info.LocationID = 4; 453 teleport.Info.LocationID = 4;
466 teleport.Info.TeleportFlags = 1 << 4; 454 teleport.Info.TeleportFlags = 1 << 4;
467 OutPacket(teleport); 455 OutPacket(teleport);
@@ -473,8 +461,8 @@ namespace OpenSim.Region.ClientStack
473 public void SendTeleportCancel() 461 public void SendTeleportCancel()
474 { 462 {
475 TeleportCancelPacket tpCancel = new TeleportCancelPacket(); 463 TeleportCancelPacket tpCancel = new TeleportCancelPacket();
476 tpCancel.Info.SessionID = this.m_sessionId; 464 tpCancel.Info.SessionID = m_sessionId;
477 tpCancel.Info.AgentID = this.AgentId; 465 tpCancel.Info.AgentID = AgentId;
478 466
479 OutPacket(tpCancel); 467 OutPacket(tpCancel);
480 } 468 }
@@ -492,7 +480,7 @@ namespace OpenSim.Region.ClientStack
492 public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance) 480 public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance)
493 { 481 {
494 MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket(); 482 MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket();
495 money.MoneyData.AgentID = this.AgentId; 483 money.MoneyData.AgentID = AgentId;
496 money.MoneyData.TransactionID = transaction; 484 money.MoneyData.TransactionID = transaction;
497 money.MoneyData.TransactionSuccess = success; 485 money.MoneyData.TransactionSuccess = success;
498 money.MoneyData.Description = description; 486 money.MoneyData.Description = description;
@@ -506,7 +494,6 @@ namespace OpenSim.Region.ClientStack
506 pc.PingID.PingID = seq; 494 pc.PingID.PingID = seq;
507 pc.Header.Reliable = false; 495 pc.Header.Reliable = false;
508 OutPacket(pc); 496 OutPacket(pc);
509
510 } 497 }
511 498
512 public void SendKillObject(ulong regionHandle, uint localID) 499 public void SendKillObject(ulong regionHandle, uint localID)
@@ -522,8 +509,8 @@ namespace OpenSim.Region.ClientStack
522 { 509 {
523 Encoding enc = Encoding.ASCII; 510 Encoding enc = Encoding.ASCII;
524 uint FULL_MASK_PERMISSIONS = 2147483647; 511 uint FULL_MASK_PERMISSIONS = 2147483647;
525 InventoryDescendentsPacket descend = this.CreateInventoryDescendentsPacket(ownerID, folderID); 512 InventoryDescendentsPacket descend = CreateInventoryDescendentsPacket(ownerID, folderID);
526 513
527 int count = 0; 514 int count = 0;
528 if (items.Count < 40) 515 if (items.Count < 40)
529 { 516 {
@@ -550,25 +537,30 @@ namespace OpenSim.Region.ClientStack
550 descend.ItemData[i].FolderID = item.parentFolderID; 537 descend.ItemData[i].FolderID = item.parentFolderID;
551 descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); 538 descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
552 descend.ItemData[i].GroupMask = 0; 539 descend.ItemData[i].GroupMask = 0;
553 descend.ItemData[i].InvType = (sbyte)item.invType; 540 descend.ItemData[i].InvType = (sbyte) item.invType;
554 descend.ItemData[i].Name = enc.GetBytes(item.inventoryName + "\0"); 541 descend.ItemData[i].Name = enc.GetBytes(item.inventoryName + "\0");
555 descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions; 542 descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions;
556 descend.ItemData[i].OwnerID = item.avatarID; 543 descend.ItemData[i].OwnerID = item.avatarID;
557 descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions; 544 descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions;
558 descend.ItemData[i].SalePrice = 0; 545 descend.ItemData[i].SalePrice = 0;
559 descend.ItemData[i].SaleType = 0; 546 descend.ItemData[i].SaleType = 0;
560 descend.ItemData[i].Type = (sbyte)item.assetType; 547 descend.ItemData[i].Type = (sbyte) item.assetType;
561 descend.ItemData[i].CRC = Helpers.InventoryCRC(1000, 0, descend.ItemData[i].InvType, descend.ItemData[i].Type, descend.ItemData[i].AssetID, descend.ItemData[i].GroupID, 100, descend.ItemData[i].OwnerID, descend.ItemData[i].CreatorID, descend.ItemData[i].ItemID, descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); 548 descend.ItemData[i].CRC =
549 Helpers.InventoryCRC(1000, 0, descend.ItemData[i].InvType, descend.ItemData[i].Type,
550 descend.ItemData[i].AssetID, descend.ItemData[i].GroupID, 100,
551 descend.ItemData[i].OwnerID, descend.ItemData[i].CreatorID,
552 descend.ItemData[i].ItemID, descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS,
553 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
562 554
563 i++; 555 i++;
564 count++; 556 count++;
565 if (i == 40) 557 if (i == 40)
566 { 558 {
567 this.OutPacket(descend); 559 OutPacket(descend);
568 560
569 if ((items.Count - count) > 0) 561 if ((items.Count - count) > 0)
570 { 562 {
571 descend = this.CreateInventoryDescendentsPacket(ownerID, folderID); 563 descend = CreateInventoryDescendentsPacket(ownerID, folderID);
572 if ((items.Count - count) < 40) 564 if ((items.Count - count) < 40)
573 { 565 {
574 descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count - count]; 566 descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count - count];
@@ -586,15 +578,14 @@ namespace OpenSim.Region.ClientStack
586 578
587 if (i < 40) 579 if (i < 40)
588 { 580 {
589 this.OutPacket(descend); 581 OutPacket(descend);
590 } 582 }
591
592 } 583 }
593 584
594 private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID) 585 private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID)
595 { 586 {
596 InventoryDescendentsPacket descend = new InventoryDescendentsPacket(); 587 InventoryDescendentsPacket descend = new InventoryDescendentsPacket();
597 descend.AgentData.AgentID = this.AgentId; 588 descend.AgentData.AgentID = AgentId;
598 descend.AgentData.OwnerID = ownerID; 589 descend.AgentData.OwnerID = ownerID;
599 descend.AgentData.FolderID = folderID; 590 descend.AgentData.FolderID = folderID;
600 descend.AgentData.Version = 0; 591 descend.AgentData.Version = 0;
@@ -607,31 +598,39 @@ namespace OpenSim.Region.ClientStack
607 Encoding enc = Encoding.ASCII; 598 Encoding enc = Encoding.ASCII;
608 uint FULL_MASK_PERMISSIONS = 2147483647; 599 uint FULL_MASK_PERMISSIONS = 2147483647;
609 FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket(); 600 FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket();
610 inventoryReply.AgentData.AgentID = this.AgentId; 601 inventoryReply.AgentData.AgentID = AgentId;
611 inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1]; 602 inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1];
612 inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock(); 603 inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock();
613 inventoryReply.InventoryData[0].ItemID = item.inventoryID; 604 inventoryReply.InventoryData[0].ItemID = item.inventoryID;
614 inventoryReply.InventoryData[0].AssetID = item.assetID; 605 inventoryReply.InventoryData[0].AssetID = item.assetID;
615 inventoryReply.InventoryData[0].CreatorID = item.creatorsID; 606 inventoryReply.InventoryData[0].CreatorID = item.creatorsID;
616 inventoryReply.InventoryData[0].BaseMask = item.inventoryBasePermissions; 607 inventoryReply.InventoryData[0].BaseMask = item.inventoryBasePermissions;
617 inventoryReply.InventoryData[0].CreationDate = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; 608 inventoryReply.InventoryData[0].CreationDate =
609 (int) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
618 inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0"); 610 inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0");
619 inventoryReply.InventoryData[0].EveryoneMask = item.inventoryEveryOnePermissions; 611 inventoryReply.InventoryData[0].EveryoneMask = item.inventoryEveryOnePermissions;
620 inventoryReply.InventoryData[0].Flags = 0; 612 inventoryReply.InventoryData[0].Flags = 0;
621 inventoryReply.InventoryData[0].FolderID = item.parentFolderID; 613 inventoryReply.InventoryData[0].FolderID = item.parentFolderID;
622 inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); 614 inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
623 inventoryReply.InventoryData[0].GroupMask = 0; 615 inventoryReply.InventoryData[0].GroupMask = 0;
624 inventoryReply.InventoryData[0].InvType = (sbyte)item.invType; 616 inventoryReply.InventoryData[0].InvType = (sbyte) item.invType;
625 inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0"); 617 inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0");
626 inventoryReply.InventoryData[0].NextOwnerMask = item.inventoryNextPermissions; 618 inventoryReply.InventoryData[0].NextOwnerMask = item.inventoryNextPermissions;
627 inventoryReply.InventoryData[0].OwnerID = item.avatarID; 619 inventoryReply.InventoryData[0].OwnerID = item.avatarID;
628 inventoryReply.InventoryData[0].OwnerMask = item.inventoryCurrentPermissions; 620 inventoryReply.InventoryData[0].OwnerMask = item.inventoryCurrentPermissions;
629 inventoryReply.InventoryData[0].SalePrice = 0; 621 inventoryReply.InventoryData[0].SalePrice = 0;
630 inventoryReply.InventoryData[0].SaleType = 0; 622 inventoryReply.InventoryData[0].SaleType = 0;
631 inventoryReply.InventoryData[0].Type = (sbyte)item.assetType; 623 inventoryReply.InventoryData[0].Type = (sbyte) item.assetType;
632 inventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, inventoryReply.InventoryData[0].InvType, inventoryReply.InventoryData[0].Type, inventoryReply.InventoryData[0].AssetID, inventoryReply.InventoryData[0].GroupID, 100, inventoryReply.InventoryData[0].OwnerID, inventoryReply.InventoryData[0].CreatorID, inventoryReply.InventoryData[0].ItemID, inventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); 624 inventoryReply.InventoryData[0].CRC =
633 625 Helpers.InventoryCRC(1000, 0, inventoryReply.InventoryData[0].InvType,
634 this.OutPacket(inventoryReply); 626 inventoryReply.InventoryData[0].Type, inventoryReply.InventoryData[0].AssetID,
627 inventoryReply.InventoryData[0].GroupID, 100,
628 inventoryReply.InventoryData[0].OwnerID, inventoryReply.InventoryData[0].CreatorID,
629 inventoryReply.InventoryData[0].ItemID, inventoryReply.InventoryData[0].FolderID,
630 FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS,
631 FULL_MASK_PERMISSIONS);
632
633 OutPacket(inventoryReply);
635 } 634 }
636 635
637 public void SendInventoryItemUpdate(InventoryItemBase Item) 636 public void SendInventoryItemUpdate(InventoryItemBase Item)
@@ -639,7 +638,7 @@ namespace OpenSim.Region.ClientStack
639 Encoding enc = Encoding.ASCII; 638 Encoding enc = Encoding.ASCII;
640 uint FULL_MASK_PERMISSIONS = 2147483647; 639 uint FULL_MASK_PERMISSIONS = 2147483647;
641 UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket(); 640 UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket();
642 InventoryReply.AgentData.AgentID = this.AgentId; 641 InventoryReply.AgentData.AgentID = AgentId;
643 InventoryReply.AgentData.SimApproved = true; 642 InventoryReply.AgentData.SimApproved = true;
644 InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; 643 InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1];
645 InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); 644 InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock();
@@ -654,15 +653,22 @@ namespace OpenSim.Region.ClientStack
654 InventoryReply.InventoryData[0].FolderID = Item.parentFolderID; 653 InventoryReply.InventoryData[0].FolderID = Item.parentFolderID;
655 InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); 654 InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
656 InventoryReply.InventoryData[0].GroupMask = 0; 655 InventoryReply.InventoryData[0].GroupMask = 0;
657 InventoryReply.InventoryData[0].InvType = (sbyte)Item.invType; 656 InventoryReply.InventoryData[0].InvType = (sbyte) Item.invType;
658 InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0"); 657 InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0");
659 InventoryReply.InventoryData[0].NextOwnerMask = Item.inventoryNextPermissions; 658 InventoryReply.InventoryData[0].NextOwnerMask = Item.inventoryNextPermissions;
660 InventoryReply.InventoryData[0].OwnerID = Item.avatarID; 659 InventoryReply.InventoryData[0].OwnerID = Item.avatarID;
661 InventoryReply.InventoryData[0].OwnerMask = Item.inventoryCurrentPermissions; 660 InventoryReply.InventoryData[0].OwnerMask = Item.inventoryCurrentPermissions;
662 InventoryReply.InventoryData[0].SalePrice = 100; 661 InventoryReply.InventoryData[0].SalePrice = 100;
663 InventoryReply.InventoryData[0].SaleType = 0; 662 InventoryReply.InventoryData[0].SaleType = 0;
664 InventoryReply.InventoryData[0].Type = (sbyte)Item.assetType; 663 InventoryReply.InventoryData[0].Type = (sbyte) Item.assetType;
665 InventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); 664 InventoryReply.InventoryData[0].CRC =
665 Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType,
666 InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID,
667 InventoryReply.InventoryData[0].GroupID, 100,
668 InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID,
669 InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID,
670 FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS,
671 FULL_MASK_PERMISSIONS);
666 672
667 OutPacket(InventoryReply); 673 OutPacket(InventoryReply);
668 } 674 }
@@ -670,8 +676,8 @@ namespace OpenSim.Region.ClientStack
670 public void SendRemoveInventoryItem(LLUUID itemID) 676 public void SendRemoveInventoryItem(LLUUID itemID)
671 { 677 {
672 RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket(); 678 RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket();
673 remove.AgentData.AgentID = this.AgentId; 679 remove.AgentData.AgentID = AgentId;
674 remove.AgentData.SessionID = this.m_sessionId; 680 remove.AgentData.SessionID = m_sessionId;
675 remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1]; 681 remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1];
676 remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock(); 682 remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock();
677 remove.InventoryData[0].ItemID = itemID; 683 remove.InventoryData[0].ItemID = itemID;
@@ -716,13 +722,14 @@ namespace OpenSim.Region.ClientStack
716 public void SendAgentAlertMessage(string message, bool modal) 722 public void SendAgentAlertMessage(string message, bool modal)
717 { 723 {
718 AgentAlertMessagePacket alertPack = new AgentAlertMessagePacket(); 724 AgentAlertMessagePacket alertPack = new AgentAlertMessagePacket();
719 alertPack.AgentData.AgentID = this.AgentId; 725 alertPack.AgentData.AgentID = AgentId;
720 alertPack.AlertData.Message = Helpers.StringToField(message); 726 alertPack.AlertData.Message = Helpers.StringToField(message);
721 alertPack.AlertData.Modal = modal; 727 alertPack.AlertData.Modal = modal;
722 OutPacket(alertPack); 728 OutPacket(alertPack);
723 } 729 }
724 730
725 public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url) 731 public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message,
732 string url)
726 { 733 {
727 LoadURLPacket loadURL = new LoadURLPacket(); 734 LoadURLPacket loadURL = new LoadURLPacket();
728 loadURL.Data.ObjectName = Helpers.StringToField(objectname); 735 loadURL.Data.ObjectName = Helpers.StringToField(objectname);
@@ -761,14 +768,13 @@ namespace OpenSim.Region.ClientStack
761 768
762 public void SendViewerTime(int phase) 769 public void SendViewerTime(int phase)
763 { 770 {
764
765 SimulatorViewerTimeMessagePacket viewertime = new SimulatorViewerTimeMessagePacket(); 771 SimulatorViewerTimeMessagePacket viewertime = new SimulatorViewerTimeMessagePacket();
766 //viewertime.TimeInfo.SecPerDay = 86400; 772 //viewertime.TimeInfo.SecPerDay = 86400;
767 // viewertime.TimeInfo.SecPerYear = 31536000; 773 // viewertime.TimeInfo.SecPerYear = 31536000;
768 viewertime.TimeInfo.SecPerDay = 1000; 774 viewertime.TimeInfo.SecPerDay = 1000;
769 viewertime.TimeInfo.SecPerYear = 365000; 775 viewertime.TimeInfo.SecPerYear = 365000;
770 viewertime.TimeInfo.SunPhase = 1; 776 viewertime.TimeInfo.SunPhase = 1;
771 int sunPhase = (phase + 2) / 2; 777 int sunPhase = (phase + 2)/2;
772 if ((sunPhase < 6) || (sunPhase > 36)) 778 if ((sunPhase < 6) || (sunPhase > 36))
773 { 779 {
774 viewertime.TimeInfo.SunDirection = new LLVector3(0f, 0.8f, -0.8f); 780 viewertime.TimeInfo.SunDirection = new LLVector3(0f, 0.8f, -0.8f);
@@ -781,27 +787,41 @@ namespace OpenSim.Region.ClientStack
781 sunPhase = 12; 787 sunPhase = 12;
782 } 788 }
783 sunPhase = sunPhase - 12; 789 sunPhase = sunPhase - 12;
784 float yValue = 0.1f * (sunPhase); 790 float yValue = 0.1f*(sunPhase);
785 if (yValue > 1.2f) { yValue = yValue - 1.2f; } 791 if (yValue > 1.2f)
786 if (yValue > 1 ) { yValue = 1; } 792 {
787 if (yValue < 0) { yValue = 0; } 793 yValue = yValue - 1.2f;
794 }
795 if (yValue > 1)
796 {
797 yValue = 1;
798 }
799 if (yValue < 0)
800 {
801 yValue = 0;
802 }
788 if (sunPhase < 14) 803 if (sunPhase < 14)
789 { 804 {
790 yValue = 1 - yValue; 805 yValue = 1 - yValue;
791 } 806 }
792 if (sunPhase < 12) { yValue *= -1; } 807 if (sunPhase < 12)
808 {
809 yValue *= -1;
810 }
793 viewertime.TimeInfo.SunDirection = new LLVector3(0f, yValue, 0.3f); 811 viewertime.TimeInfo.SunDirection = new LLVector3(0f, yValue, 0.3f);
794 //Console.WriteLine("sending sun update " + yValue); 812 //Console.WriteLine("sending sun update " + yValue);
795 } 813 }
796 viewertime.TimeInfo.SunAngVelocity = new LLVector3(0, 0.0f, 10.0f); 814 viewertime.TimeInfo.SunAngVelocity = new LLVector3(0, 0.0f, 10.0f);
797 viewertime.TimeInfo.UsecSinceStart = (ulong)Util.UnixTimeSinceEpoch(); 815 viewertime.TimeInfo.UsecSinceStart = (ulong) Util.UnixTimeSinceEpoch();
798 OutPacket(viewertime); 816 OutPacket(viewertime);
799 } 817 }
800 818
801 public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID) 819 public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember,
820 string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL,
821 LLUUID partnerID)
802 { 822 {
803 AvatarPropertiesReplyPacket avatarReply = new AvatarPropertiesReplyPacket(); 823 AvatarPropertiesReplyPacket avatarReply = new AvatarPropertiesReplyPacket();
804 avatarReply.AgentData.AgentID = this.AgentId; 824 avatarReply.AgentData.AgentID = AgentId;
805 avatarReply.AgentData.AvatarID = avatarID; 825 avatarReply.AgentData.AvatarID = avatarID;
806 avatarReply.PropertiesData.AboutText = Helpers.StringToField(aboutText); 826 avatarReply.PropertiesData.AboutText = Helpers.StringToField(aboutText);
807 avatarReply.PropertiesData.BornOn = Helpers.StringToField(bornOn); 827 avatarReply.PropertiesData.BornOn = Helpers.StringToField(bornOn);
@@ -827,6 +847,7 @@ namespace OpenSim.Region.ClientStack
827 847
828 OutPacket(avatarSitResponse); 848 OutPacket(avatarSitResponse);
829 } 849 }
850
830 #endregion 851 #endregion
831 852
832 #region Appearance/ Wearables Methods 853 #region Appearance/ Wearables Methods
@@ -838,22 +859,22 @@ namespace OpenSim.Region.ClientStack
838 public void SendWearables(AvatarWearable[] wearables) 859 public void SendWearables(AvatarWearable[] wearables)
839 { 860 {
840 AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket(); 861 AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket();
841 aw.AgentData.AgentID = this.AgentId; 862 aw.AgentData.AgentID = AgentId;
842 aw.AgentData.SerialNum = 0; 863 aw.AgentData.SerialNum = 0;
843 aw.AgentData.SessionID = this.m_sessionId; 864 aw.AgentData.SessionID = m_sessionId;
844 865
845 aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; 866 aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13];
846 AgentWearablesUpdatePacket.WearableDataBlock awb; 867 AgentWearablesUpdatePacket.WearableDataBlock awb;
847 for (int i = 0; i < wearables.Length; i++) 868 for (int i = 0; i < wearables.Length; i++)
848 { 869 {
849 awb = new AgentWearablesUpdatePacket.WearableDataBlock(); 870 awb = new AgentWearablesUpdatePacket.WearableDataBlock();
850 awb.WearableType = (byte)i; 871 awb.WearableType = (byte) i;
851 awb.AssetID = wearables[i].AssetID; 872 awb.AssetID = wearables[i].AssetID;
852 awb.ItemID = wearables[i].ItemID; 873 awb.ItemID = wearables[i].ItemID;
853 aw.WearableData[i] = awb; 874 aw.WearableData[i] = awb;
854 } 875 }
855 876
856 this.OutPacket(aw); 877 OutPacket(aw);
857 } 878 }
858 879
859 /// <summary> 880 /// <summary>
@@ -893,7 +914,7 @@ namespace OpenSim.Region.ClientStack
893 ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); 914 ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock();
894 ani.AnimationList[0].AnimID = animID; 915 ani.AnimationList[0].AnimID = animID;
895 ani.AnimationList[0].AnimSequenceID = seq; 916 ani.AnimationList[0].AnimSequenceID = seq;
896 this.OutPacket(ani); 917 OutPacket(ani);
897 } 918 }
898 919
899 #endregion 920 #endregion
@@ -909,25 +930,26 @@ namespace OpenSim.Region.ClientStack
909 /// <param name="avatarID"></param> 930 /// <param name="avatarID"></param>
910 /// <param name="avatarLocalID"></param> 931 /// <param name="avatarLocalID"></param>
911 /// <param name="Pos"></param> 932 /// <param name="Pos"></param>
912 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID) 933 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID,
934 uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID)
913 { 935 {
914 ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); 936 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
915 objupdate.RegionData.RegionHandle = regionHandle; 937 objupdate.RegionData.RegionHandle = regionHandle;
916 objupdate.RegionData.TimeDilation = 64096; 938 objupdate.RegionData.TimeDilation = 64096;
917 objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; 939 objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
918 objupdate.ObjectData[0] = this.CreateDefaultAvatarPacket(textureEntry); 940 objupdate.ObjectData[0] = CreateDefaultAvatarPacket(textureEntry);
919 941
920 //give this avatar object a local id and assign the user a name 942 //give this avatar object a local id and assign the user a name
921 objupdate.ObjectData[0].ID = avatarLocalID; 943 objupdate.ObjectData[0].ID = avatarLocalID;
922 objupdate.ObjectData[0].FullID = avatarID; 944 objupdate.ObjectData[0].FullID = avatarID;
923 objupdate.ObjectData[0].ParentID = parentID; 945 objupdate.ObjectData[0].ParentID = parentID;
924 objupdate.ObjectData[0].NameValue = Helpers.StringToField("FirstName STRING RW SV " + firstName + "\nLastName STRING RW SV " + lastName); 946 objupdate.ObjectData[0].NameValue =
925 LLVector3 pos2 = new LLVector3((float)Pos.X, (float)Pos.Y, (float)Pos.Z); 947 Helpers.StringToField("FirstName STRING RW SV " + firstName + "\nLastName STRING RW SV " + lastName);
948 LLVector3 pos2 = new LLVector3((float) Pos.X, (float) Pos.Y, (float) Pos.Z);
926 byte[] pb = pos2.GetBytes(); 949 byte[] pb = pos2.GetBytes();
927 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); 950 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
928 951
929 OutPacket(objupdate); 952 OutPacket(objupdate);
930
931 } 953 }
932 954
933 /// <summary> 955 /// <summary>
@@ -938,38 +960,41 @@ namespace OpenSim.Region.ClientStack
938 /// <param name="localID"></param> 960 /// <param name="localID"></param>
939 /// <param name="position"></param> 961 /// <param name="position"></param>
940 /// <param name="velocity"></param> 962 /// <param name="velocity"></param>
941 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation) 963 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position,
964 LLVector3 velocity, LLQuaternion rotation)
942 { 965 {
943 ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = this.CreateAvatarImprovedBlock(localID, position, velocity, rotation); 966 ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock =
967 CreateAvatarImprovedBlock(localID, position, velocity, rotation);
944 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); 968 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
945 terse.RegionData.RegionHandle = regionHandle; 969 terse.RegionData.RegionHandle = regionHandle;
946 terse.RegionData.TimeDilation = timeDilation; 970 terse.RegionData.TimeDilation = timeDilation;
947 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; 971 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
948 terse.ObjectData[0] = terseBlock; 972 terse.ObjectData[0] = terseBlock;
949 973
950 this.OutPacket(terse); 974 OutPacket(terse);
951 } 975 }
952 976
953 public void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations) 977 public void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations)
954 { 978 {
955 CoarseLocationUpdatePacket loc = new CoarseLocationUpdatePacket(); 979 CoarseLocationUpdatePacket loc = new CoarseLocationUpdatePacket();
956 int total = CoarseLocations.Count; 980 int total = CoarseLocations.Count;
957 CoarseLocationUpdatePacket.IndexBlock ib = 981 CoarseLocationUpdatePacket.IndexBlock ib =
958 new CoarseLocationUpdatePacket.IndexBlock(); 982 new CoarseLocationUpdatePacket.IndexBlock();
959 loc.Location = new CoarseLocationUpdatePacket.LocationBlock[total]; 983 loc.Location = new CoarseLocationUpdatePacket.LocationBlock[total];
960 for(int i=0; i<total; i++) { 984 for (int i = 0; i < total; i++)
961 CoarseLocationUpdatePacket.LocationBlock lb = 985 {
962 new CoarseLocationUpdatePacket.LocationBlock(); 986 CoarseLocationUpdatePacket.LocationBlock lb =
963 lb.X = (byte)CoarseLocations[i].X; 987 new CoarseLocationUpdatePacket.LocationBlock();
964 lb.Y = (byte)CoarseLocations[i].Y; 988 lb.X = (byte) CoarseLocations[i].X;
965 lb.Z = (byte)(CoarseLocations[i].Z/4); 989 lb.Y = (byte) CoarseLocations[i].Y;
966 loc.Location[i] = lb; 990 lb.Z = (byte) (CoarseLocations[i].Z/4);
967 } 991 loc.Location[i] = lb;
968 ib.You = -1; 992 }
969 ib.Prey = -1; 993 ib.You = -1;
970 loc.Index = ib; 994 ib.Prey = -1;
971 this.OutPacket(loc); 995 loc.Index = ib;
972 } 996 OutPacket(loc);
997 }
973 998
974 #endregion 999 #endregion
975 1000
@@ -984,27 +1009,28 @@ namespace OpenSim.Region.ClientStack
984 public void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) 1009 public void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint)
985 { 1010 {
986 ObjectAttachPacket attach = new ObjectAttachPacket(); 1011 ObjectAttachPacket attach = new ObjectAttachPacket();
987 attach.AgentData.AgentID = this.AgentId; 1012 attach.AgentData.AgentID = AgentId;
988 attach.AgentData.SessionID = this.m_sessionId; 1013 attach.AgentData.SessionID = m_sessionId;
989 attach.AgentData.AttachmentPoint = attachPoint; 1014 attach.AgentData.AttachmentPoint = attachPoint;
990 attach.ObjectData = new ObjectAttachPacket.ObjectDataBlock[1]; 1015 attach.ObjectData = new ObjectAttachPacket.ObjectDataBlock[1];
991 attach.ObjectData[0] = new ObjectAttachPacket.ObjectDataBlock(); 1016 attach.ObjectData[0] = new ObjectAttachPacket.ObjectDataBlock();
992 attach.ObjectData[0].ObjectLocalID = localID; 1017 attach.ObjectData[0].ObjectLocalID = localID;
993 attach.ObjectData[0].Rotation = rotation; 1018 attach.ObjectData[0].Rotation = rotation;
994 1019
995 this.OutPacket(attach); 1020 OutPacket(attach);
996 } 1021 }
997 1022
998 public void SendPrimitiveToClient( 1023 public void SendPrimitiveToClient(
999 ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, 1024 ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos,
1025 uint flags,
1000 LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation) 1026 LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation)
1001 { 1027 {
1002 ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); 1028 ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
1003 outPacket.RegionData.RegionHandle = regionHandle; 1029 outPacket.RegionData.RegionHandle = regionHandle;
1004 outPacket.RegionData.TimeDilation = timeDilation; 1030 outPacket.RegionData.TimeDilation = timeDilation;
1005 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; 1031 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
1006 1032
1007 outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primShape, flags); 1033 outPacket.ObjectData[0] = CreatePrimUpdateBlock(primShape, flags);
1008 1034
1009 outPacket.ObjectData[0].ID = localID; 1035 outPacket.ObjectData[0].ID = localID;
1010 outPacket.ObjectData[0].FullID = objectID; 1036 outPacket.ObjectData[0].FullID = objectID;
@@ -1033,35 +1059,38 @@ namespace OpenSim.Region.ClientStack
1033 /// <param name="localID"></param> 1059 /// <param name="localID"></param>
1034 /// <param name="position"></param> 1060 /// <param name="position"></param>
1035 /// <param name="rotation"></param> 1061 /// <param name="rotation"></param>
1036 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation) 1062 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position,
1063 LLQuaternion rotation)
1037 { 1064 {
1038 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); 1065 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
1039 terse.RegionData.RegionHandle = regionHandle; 1066 terse.RegionData.RegionHandle = regionHandle;
1040 terse.RegionData.TimeDilation = timeDilation; 1067 terse.RegionData.TimeDilation = timeDilation;
1041 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; 1068 terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
1042 terse.ObjectData[0] = this.CreatePrimImprovedBlock(localID, position, rotation); 1069 terse.ObjectData[0] = CreatePrimImprovedBlock(localID, position, rotation);
1043 1070
1044 this.OutPacket(terse); 1071 OutPacket(terse);
1045 } 1072 }
1046 1073
1047 #endregion 1074 #endregion
1048 1075
1049 #region Helper Methods 1076 #region Helper Methods
1050 1077
1051 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateAvatarImprovedBlock(uint localID, LLVector3 pos, LLVector3 velocity, LLQuaternion rotation) 1078 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateAvatarImprovedBlock(uint localID, LLVector3 pos,
1079 LLVector3 velocity,
1080 LLQuaternion rotation)
1052 { 1081 {
1053 byte[] bytes = new byte[60]; 1082 byte[] bytes = new byte[60];
1054 int i = 0; 1083 int i = 0;
1055 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); 1084 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
1056 1085
1057 dat.TextureEntry = new byte[0];// AvatarTemplate.TextureEntry; 1086 dat.TextureEntry = new byte[0]; // AvatarTemplate.TextureEntry;
1058 1087
1059 uint ID = localID; 1088 uint ID = localID;
1060 1089
1061 bytes[i++] = (byte)(ID % 256); 1090 bytes[i++] = (byte) (ID%256);
1062 bytes[i++] = (byte)((ID >> 8) % 256); 1091 bytes[i++] = (byte) ((ID >> 8)%256);
1063 bytes[i++] = (byte)((ID >> 16) % 256); 1092 bytes[i++] = (byte) ((ID >> 16)%256);
1064 bytes[i++] = (byte)((ID >> 24) % 256); 1093 bytes[i++] = (byte) ((ID >> 24)%256);
1065 bytes[i++] = 0; 1094 bytes[i++] = 0;
1066 bytes[i++] = 1; 1095 bytes[i++] = 1;
1067 i += 14; 1096 i += 14;
@@ -1078,55 +1107,55 @@ namespace OpenSim.Region.ClientStack
1078 1107
1079 internDirec = new Vector3(velocity.X, velocity.Y, velocity.Z); 1108 internDirec = new Vector3(velocity.X, velocity.Y, velocity.Z);
1080 1109
1081 internDirec = internDirec / 128.0f; 1110 internDirec = internDirec/128.0f;
1082 internDirec.x += 1; 1111 internDirec.x += 1;
1083 internDirec.y += 1; 1112 internDirec.y += 1;
1084 internDirec.z += 1; 1113 internDirec.z += 1;
1085 1114
1086 InternVelocityX = (ushort)(32768 * internDirec.x); 1115 InternVelocityX = (ushort) (32768*internDirec.x);
1087 InternVelocityY = (ushort)(32768 * internDirec.y); 1116 InternVelocityY = (ushort) (32768*internDirec.y);
1088 InternVelocityZ = (ushort)(32768 * internDirec.z); 1117 InternVelocityZ = (ushort) (32768*internDirec.z);
1089 1118
1090 ushort ac = 32767; 1119 ushort ac = 32767;
1091 bytes[i++] = (byte)(InternVelocityX % 256); 1120 bytes[i++] = (byte) (InternVelocityX%256);
1092 bytes[i++] = (byte)((InternVelocityX >> 8) % 256); 1121 bytes[i++] = (byte) ((InternVelocityX >> 8)%256);
1093 bytes[i++] = (byte)(InternVelocityY % 256); 1122 bytes[i++] = (byte) (InternVelocityY%256);
1094 bytes[i++] = (byte)((InternVelocityY >> 8) % 256); 1123 bytes[i++] = (byte) ((InternVelocityY >> 8)%256);
1095 bytes[i++] = (byte)(InternVelocityZ % 256); 1124 bytes[i++] = (byte) (InternVelocityZ%256);
1096 bytes[i++] = (byte)((InternVelocityZ >> 8) % 256); 1125 bytes[i++] = (byte) ((InternVelocityZ >> 8)%256);
1097 1126
1098 //accel 1127 //accel
1099 bytes[i++] = (byte)(ac % 256); 1128 bytes[i++] = (byte) (ac%256);
1100 bytes[i++] = (byte)((ac >> 8) % 256); 1129 bytes[i++] = (byte) ((ac >> 8)%256);
1101 bytes[i++] = (byte)(ac % 256); 1130 bytes[i++] = (byte) (ac%256);
1102 bytes[i++] = (byte)((ac >> 8) % 256); 1131 bytes[i++] = (byte) ((ac >> 8)%256);
1103 bytes[i++] = (byte)(ac % 256); 1132 bytes[i++] = (byte) (ac%256);
1104 bytes[i++] = (byte)((ac >> 8) % 256); 1133 bytes[i++] = (byte) ((ac >> 8)%256);
1105 1134
1106 //rotation 1135 //rotation
1107 ushort rw, rx, ry, rz; 1136 ushort rw, rx, ry, rz;
1108 rw = (ushort)(32768 * (rotation.W + 1)); 1137 rw = (ushort) (32768*(rotation.W + 1));
1109 rx = (ushort)(32768 * (rotation.X + 1)); 1138 rx = (ushort) (32768*(rotation.X + 1));
1110 ry = (ushort)(32768 * (rotation.Y + 1)); 1139 ry = (ushort) (32768*(rotation.Y + 1));
1111 rz = (ushort)(32768 * (rotation.Z + 1)); 1140 rz = (ushort) (32768*(rotation.Z + 1));
1112 1141
1113 //rot 1142 //rot
1114 bytes[i++] = (byte)(rx % 256); 1143 bytes[i++] = (byte) (rx%256);
1115 bytes[i++] = (byte)((rx >> 8) % 256); 1144 bytes[i++] = (byte) ((rx >> 8)%256);
1116 bytes[i++] = (byte)(ry % 256); 1145 bytes[i++] = (byte) (ry%256);
1117 bytes[i++] = (byte)((ry >> 8) % 256); 1146 bytes[i++] = (byte) ((ry >> 8)%256);
1118 bytes[i++] = (byte)(rz % 256); 1147 bytes[i++] = (byte) (rz%256);
1119 bytes[i++] = (byte)((rz >> 8) % 256); 1148 bytes[i++] = (byte) ((rz >> 8)%256);
1120 bytes[i++] = (byte)(rw % 256); 1149 bytes[i++] = (byte) (rw%256);
1121 bytes[i++] = (byte)((rw >> 8) % 256); 1150 bytes[i++] = (byte) ((rw >> 8)%256);
1122 1151
1123 //rotation vel 1152 //rotation vel
1124 bytes[i++] = (byte)(ac % 256); 1153 bytes[i++] = (byte) (ac%256);
1125 bytes[i++] = (byte)((ac >> 8) % 256); 1154 bytes[i++] = (byte) ((ac >> 8)%256);
1126 bytes[i++] = (byte)(ac % 256); 1155 bytes[i++] = (byte) (ac%256);
1127 bytes[i++] = (byte)((ac >> 8) % 256); 1156 bytes[i++] = (byte) ((ac >> 8)%256);
1128 bytes[i++] = (byte)(ac % 256); 1157 bytes[i++] = (byte) (ac%256);
1129 bytes[i++] = (byte)((ac >> 8) % 256); 1158 bytes[i++] = (byte) ((ac >> 8)%256);
1130 1159
1131 dat.Data = bytes; 1160 dat.Data = bytes;
1132 1161
@@ -1140,7 +1169,9 @@ namespace OpenSim.Region.ClientStack
1140 /// <param name="position"></param> 1169 /// <param name="position"></param>
1141 /// <param name="rotation"></param> 1170 /// <param name="rotation"></param>
1142 /// <returns></returns> 1171 /// <returns></returns>
1143 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreatePrimImprovedBlock(uint localID, LLVector3 position, LLQuaternion rotation) 1172 protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreatePrimImprovedBlock(uint localID,
1173 LLVector3 position,
1174 LLQuaternion rotation)
1144 { 1175 {
1145 uint ID = localID; 1176 uint ID = localID;
1146 byte[] bytes = new byte[60]; 1177 byte[] bytes = new byte[60];
@@ -1148,10 +1179,10 @@ namespace OpenSim.Region.ClientStack
1148 int i = 0; 1179 int i = 0;
1149 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); 1180 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
1150 dat.TextureEntry = new byte[0]; 1181 dat.TextureEntry = new byte[0];
1151 bytes[i++] = (byte)(ID % 256); 1182 bytes[i++] = (byte) (ID%256);
1152 bytes[i++] = (byte)((ID >> 8) % 256); 1183 bytes[i++] = (byte) ((ID >> 8)%256);
1153 bytes[i++] = (byte)((ID >> 16) % 256); 1184 bytes[i++] = (byte) ((ID >> 16)%256);
1154 bytes[i++] = (byte)((ID >> 24) % 256); 1185 bytes[i++] = (byte) ((ID >> 24)%256);
1155 bytes[i++] = 0; 1186 bytes[i++] = 0;
1156 bytes[i++] = 0; 1187 bytes[i++] = 0;
1157 1188
@@ -1161,44 +1192,44 @@ namespace OpenSim.Region.ClientStack
1161 ushort ac = 32767; 1192 ushort ac = 32767;
1162 1193
1163 //vel 1194 //vel
1164 bytes[i++] = (byte)(ac % 256); 1195 bytes[i++] = (byte) (ac%256);
1165 bytes[i++] = (byte)((ac >> 8) % 256); 1196 bytes[i++] = (byte) ((ac >> 8)%256);
1166 bytes[i++] = (byte)(ac % 256); 1197 bytes[i++] = (byte) (ac%256);
1167 bytes[i++] = (byte)((ac >> 8) % 256); 1198 bytes[i++] = (byte) ((ac >> 8)%256);
1168 bytes[i++] = (byte)(ac % 256); 1199 bytes[i++] = (byte) (ac%256);
1169 bytes[i++] = (byte)((ac >> 8) % 256); 1200 bytes[i++] = (byte) ((ac >> 8)%256);
1170 1201
1171 //accel 1202 //accel
1172 bytes[i++] = (byte)(ac % 256); 1203 bytes[i++] = (byte) (ac%256);
1173 bytes[i++] = (byte)((ac >> 8) % 256); 1204 bytes[i++] = (byte) ((ac >> 8)%256);
1174 bytes[i++] = (byte)(ac % 256); 1205 bytes[i++] = (byte) (ac%256);
1175 bytes[i++] = (byte)((ac >> 8) % 256); 1206 bytes[i++] = (byte) ((ac >> 8)%256);
1176 bytes[i++] = (byte)(ac % 256); 1207 bytes[i++] = (byte) (ac%256);
1177 bytes[i++] = (byte)((ac >> 8) % 256); 1208 bytes[i++] = (byte) ((ac >> 8)%256);
1178 1209
1179 ushort rw, rx, ry, rz; 1210 ushort rw, rx, ry, rz;
1180 rw = (ushort)(32768 * (rotation.W + 1)); 1211 rw = (ushort) (32768*(rotation.W + 1));
1181 rx = (ushort)(32768 * (rotation.X + 1)); 1212 rx = (ushort) (32768*(rotation.X + 1));
1182 ry = (ushort)(32768 * (rotation.Y + 1)); 1213 ry = (ushort) (32768*(rotation.Y + 1));
1183 rz = (ushort)(32768 * (rotation.Z + 1)); 1214 rz = (ushort) (32768*(rotation.Z + 1));
1184 1215
1185 //rot 1216 //rot
1186 bytes[i++] = (byte)(rx % 256); 1217 bytes[i++] = (byte) (rx%256);
1187 bytes[i++] = (byte)((rx >> 8) % 256); 1218 bytes[i++] = (byte) ((rx >> 8)%256);
1188 bytes[i++] = (byte)(ry % 256); 1219 bytes[i++] = (byte) (ry%256);
1189 bytes[i++] = (byte)((ry >> 8) % 256); 1220 bytes[i++] = (byte) ((ry >> 8)%256);
1190 bytes[i++] = (byte)(rz % 256); 1221 bytes[i++] = (byte) (rz%256);
1191 bytes[i++] = (byte)((rz >> 8) % 256); 1222 bytes[i++] = (byte) ((rz >> 8)%256);
1192 bytes[i++] = (byte)(rw % 256); 1223 bytes[i++] = (byte) (rw%256);
1193 bytes[i++] = (byte)((rw >> 8) % 256); 1224 bytes[i++] = (byte) ((rw >> 8)%256);
1194 1225
1195 //rotation vel 1226 //rotation vel
1196 bytes[i++] = (byte)(ac % 256); 1227 bytes[i++] = (byte) (ac%256);
1197 bytes[i++] = (byte)((ac >> 8) % 256); 1228 bytes[i++] = (byte) ((ac >> 8)%256);
1198 bytes[i++] = (byte)(ac % 256); 1229 bytes[i++] = (byte) (ac%256);
1199 bytes[i++] = (byte)((ac >> 8) % 256); 1230 bytes[i++] = (byte) ((ac >> 8)%256);
1200 bytes[i++] = (byte)(ac % 256); 1231 bytes[i++] = (byte) (ac%256);
1201 bytes[i++] = (byte)((ac >> 8) % 256); 1232 bytes[i++] = (byte) ((ac >> 8)%256);
1202 1233
1203 dat.Data = bytes; 1234 dat.Data = bytes;
1204 return dat; 1235 return dat;
@@ -1212,16 +1243,15 @@ namespace OpenSim.Region.ClientStack
1212 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimitiveBaseShape primShape, uint flags) 1243 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimitiveBaseShape primShape, uint flags)
1213 { 1244 {
1214 ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); 1245 ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock();
1215 this.SetDefaultPrimPacketValues(objupdate); 1246 SetDefaultPrimPacketValues(objupdate);
1216 objupdate.UpdateFlags = flags; 1247 objupdate.UpdateFlags = flags;
1217 this.SetPrimPacketShapeData(objupdate, primShape); 1248 SetPrimPacketShapeData(objupdate, primShape);
1218 1249
1219 return objupdate; 1250 return objupdate;
1220 } 1251 }
1221 1252
1222 protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimitiveBaseShape primData) 1253 protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimitiveBaseShape primData)
1223 { 1254 {
1224
1225 objectData.TextureEntry = primData.TextureEntry; 1255 objectData.TextureEntry = primData.TextureEntry;
1226 objectData.PCode = primData.PCode; 1256 objectData.PCode = primData.PCode;
1227 objectData.PathBegin = primData.PathBegin; 1257 objectData.PathBegin = primData.PathBegin;
@@ -1278,10 +1308,11 @@ namespace OpenSim.Region.ClientStack
1278 /// <returns></returns> 1308 /// <returns></returns>
1279 protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket(byte[] textureEntry) 1309 protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket(byte[] textureEntry)
1280 { 1310 {
1281 ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i); 1311 ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock();
1312 // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
1282 1313
1283 SetDefaultAvatarPacketValues(ref objdata); 1314 SetDefaultAvatarPacketValues(ref objdata);
1284 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); 1315 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
1285 objdata.PathCurve = 16; 1316 objdata.PathCurve = 16;
1286 objdata.ProfileCurve = 1; 1317 objdata.ProfileCurve = 1;
1287 objdata.PathScaleX = 100; 1318 objdata.PathScaleX = 100;
@@ -1353,6 +1384,5 @@ namespace OpenSim.Region.ClientStack
1353 } 1384 }
1354 1385
1355 #endregion 1386 #endregion
1356
1357 } 1387 }
1358} 1388} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs
index 0771a4a..d589a7b 100644
--- a/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs
+++ b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs
@@ -27,9 +27,8 @@
27*/ 27*/
28using libsecondlife; 28using libsecondlife;
29using libsecondlife.Packets; 29using libsecondlife.Packets;
30using OpenSim.Framework.Console;
31using OpenSim.Framework.Interfaces;
32using OpenSim.Framework; 30using OpenSim.Framework;
31using OpenSim.Framework.Console;
33 32
34namespace OpenSim.Region.ClientStack 33namespace OpenSim.Region.ClientStack
35{ 34{
@@ -37,17 +36,17 @@ namespace OpenSim.Region.ClientStack
37 { 36 {
38 protected virtual void RegisterLocalPacketHandlers() 37 protected virtual void RegisterLocalPacketHandlers()
39 { 38 {
40 this.AddLocalPacketHandler(PacketType.LogoutRequest, this.Logout); 39 AddLocalPacketHandler(PacketType.LogoutRequest, Logout);
41 this.AddLocalPacketHandler(PacketType.ViewerEffect, this.HandleViewerEffect); 40 AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect);
42 this.AddLocalPacketHandler(PacketType.AgentCachedTexture, this.AgentTextureCached); 41 AddLocalPacketHandler(PacketType.AgentCachedTexture, AgentTextureCached);
43 this.AddLocalPacketHandler(PacketType.MultipleObjectUpdate, this.MultipleObjUpdate); 42 AddLocalPacketHandler(PacketType.MultipleObjectUpdate, MultipleObjUpdate);
44 } 43 }
45 44
46 private bool HandleViewerEffect(IClientAPI sender, Packet Pack) 45 private bool HandleViewerEffect(IClientAPI sender, Packet Pack)
47 { 46 {
48 ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; 47 ViewerEffectPacket viewer = (ViewerEffectPacket) Pack;
49 48
50 if( OnViewerEffect != null ) 49 if (OnViewerEffect != null)
51 { 50 {
52 OnViewerEffect(sender, viewer.Effect); 51 OnViewerEffect(sender, viewer.Effect);
53 } 52 }
@@ -59,7 +58,7 @@ namespace OpenSim.Region.ClientStack
59 { 58 {
60 MainLog.Instance.Verbose("CLIENT", "Got a logout request"); 59 MainLog.Instance.Verbose("CLIENT", "Got a logout request");
61 60
62 if( OnLogout != null ) 61 if (OnLogout != null)
63 { 62 {
64 OnLogout(client); 63 OnLogout(client);
65 } 64 }
@@ -70,13 +69,14 @@ namespace OpenSim.Region.ClientStack
70 protected bool AgentTextureCached(IClientAPI simclient, Packet packet) 69 protected bool AgentTextureCached(IClientAPI simclient, Packet packet)
71 { 70 {
72 //System.Console.WriteLine("texture cached: " + packet.ToString()); 71 //System.Console.WriteLine("texture cached: " + packet.ToString());
73 AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket)packet; 72 AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket) packet;
74 AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket(); 73 AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket();
75 cachedresp.AgentData.AgentID = this.AgentId; 74 cachedresp.AgentData.AgentID = AgentId;
76 cachedresp.AgentData.SessionID = this.m_sessionId; 75 cachedresp.AgentData.SessionID = m_sessionId;
77 cachedresp.AgentData.SerialNum = this.cachedtextureserial; 76 cachedresp.AgentData.SerialNum = cachedtextureserial;
78 this.cachedtextureserial++; 77 cachedtextureserial++;
79 cachedresp.WearableData = new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length]; 78 cachedresp.WearableData =
79 new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length];
80 for (int i = 0; i < chechedtex.WearableData.Length; i++) 80 for (int i = 0; i < chechedtex.WearableData.Length; i++)
81 { 81 {
82 cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); 82 cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock();
@@ -84,17 +84,18 @@ namespace OpenSim.Region.ClientStack
84 cachedresp.WearableData[i].TextureID = LLUUID.Zero; 84 cachedresp.WearableData[i].TextureID = LLUUID.Zero;
85 cachedresp.WearableData[i].HostName = new byte[0]; 85 cachedresp.WearableData[i].HostName = new byte[0];
86 } 86 }
87 this.OutPacket(cachedresp); 87 OutPacket(cachedresp);
88 return true; 88 return true;
89 } 89 }
90 90
91 protected bool MultipleObjUpdate(IClientAPI simClient, Packet packet) 91 protected bool MultipleObjUpdate(IClientAPI simClient, Packet packet)
92 { 92 {
93 MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket)packet; 93 MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket) packet;
94 // System.Console.WriteLine("new multi update packet " + multipleupdate.ToString()); 94 // System.Console.WriteLine("new multi update packet " + multipleupdate.ToString());
95 for (int i = 0; i < multipleupdate.ObjectData.Length; i++) 95 for (int i = 0; i < multipleupdate.ObjectData.Length; i++)
96 { 96 {
97 #region position 97 #region position
98
98 if (multipleupdate.ObjectData[i].Type == 9) //change position 99 if (multipleupdate.ObjectData[i].Type == 9) //change position
99 { 100 {
100 if (OnUpdatePrimGroupPosition != null) 101 if (OnUpdatePrimGroupPosition != null)
@@ -102,20 +103,20 @@ namespace OpenSim.Region.ClientStack
102 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); 103 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
103 OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); 104 OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
104 } 105 }
105
106 } 106 }
107 else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position 107 else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position
108 { 108 {
109 if (OnUpdatePrimSinglePosition != null) 109 if (OnUpdatePrimSinglePosition != null)
110 { 110 {
111 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); 111 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
112 // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); 112 // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
113 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); 113 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
114 } 114 }
115 } 115 }
116 #endregion position 116 #endregion position
117 #region rotation 117 #region rotation
118 else if (multipleupdate.ObjectData[i].Type == 2)// single item of group rotation from tab 118
119 else if (multipleupdate.ObjectData[i].Type == 2) // single item of group rotation from tab
119 { 120 {
120 if (OnUpdatePrimSingleRotation != null) 121 if (OnUpdatePrimSingleRotation != null)
121 { 122 {
@@ -124,38 +125,39 @@ namespace OpenSim.Region.ClientStack
124 OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); 125 OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
125 } 126 }
126 } 127 }
127 else if (multipleupdate.ObjectData[i].Type == 3)// single item of group rotation from mouse 128 else if (multipleupdate.ObjectData[i].Type == 3) // single item of group rotation from mouse
128 { 129 {
129 if (OnUpdatePrimSingleRotation != null) 130 if (OnUpdatePrimSingleRotation != null)
130 { 131 {
131 libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); 132 LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
132 //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); 133 //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
133 OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); 134 OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
134 } 135 }
135 } 136 }
136 else if (multipleupdate.ObjectData[i].Type == 10)//group rotation from object tab 137 else if (multipleupdate.ObjectData[i].Type == 10) //group rotation from object tab
137 { 138 {
138 if (OnUpdatePrimGroupRotation != null) 139 if (OnUpdatePrimGroupRotation != null)
139 { 140 {
140 libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); 141 LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true);
141 // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); 142 // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
142 OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); 143 OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
143 } 144 }
144 } 145 }
145 else if (multipleupdate.ObjectData[i].Type == 11)//group rotation from mouse 146 else if (multipleupdate.ObjectData[i].Type == 11) //group rotation from mouse
146 { 147 {
147 if (OnUpdatePrimGroupMouseRotation != null) 148 if (OnUpdatePrimGroupMouseRotation != null)
148 { 149 {
149 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); 150 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
150 libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); 151 LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
151 //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); 152 //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
152 // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); 153 // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
153 OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this); 154 OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this);
154 } 155 }
155 } 156 }
156 #endregion 157 #endregion
157 #region scale 158 #region scale
158 else if (multipleupdate.ObjectData[i].Type == 13)//group scale from object tab 159
160 else if (multipleupdate.ObjectData[i].Type == 13) //group scale from object tab
159 { 161 {
160 if (OnUpdatePrimScale != null) 162 if (OnUpdatePrimScale != null)
161 { 163 {
@@ -164,40 +166,41 @@ namespace OpenSim.Region.ClientStack
164 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); 166 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
165 167
166 // Change the position based on scale (for bug number 246) 168 // Change the position based on scale (for bug number 246)
167 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); 169 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
168 // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); 170 // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
169 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); 171 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
170 } 172 }
171 } 173 }
172 else if (multipleupdate.ObjectData[i].Type == 29)//group scale from mouse 174 else if (multipleupdate.ObjectData[i].Type == 29) //group scale from mouse
173 { 175 {
174 if (OnUpdatePrimScale != null) 176 if (OnUpdatePrimScale != null)
175 { 177 {
176 libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); 178 LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
177 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z ); 179 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z );
178 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); 180 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
179 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); 181 LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
180 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); 182 OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
181 } 183 }
182 } 184 }
183 else if (multipleupdate.ObjectData[i].Type == 5)//single prim scale from object tab 185 else if (multipleupdate.ObjectData[i].Type == 5) //single prim scale from object tab
184 { 186 {
185 if (OnUpdatePrimScale != null) 187 if (OnUpdatePrimScale != null)
186 { 188 {
187 libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); 189 LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
188 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); 190 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z);
189 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); 191 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
190 } 192 }
191 } 193 }
192 else if (multipleupdate.ObjectData[i].Type == 21)//single prim scale from mouse 194 else if (multipleupdate.ObjectData[i].Type == 21) //single prim scale from mouse
193 { 195 {
194 if (OnUpdatePrimScale != null) 196 if (OnUpdatePrimScale != null)
195 { 197 {
196 libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); 198 LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
197 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); 199 // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z);
198 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); 200 OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
199 } 201 }
200 } 202 }
203
201 #endregion 204 #endregion
202 } 205 }
203 return true; 206 return true;
@@ -208,7 +211,7 @@ namespace OpenSim.Region.ClientStack
208 //should be getting the map layer from the grid server 211 //should be getting the map layer from the grid server
209 //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area) 212 //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area)
210 MapLayerReplyPacket mapReply = new MapLayerReplyPacket(); 213 MapLayerReplyPacket mapReply = new MapLayerReplyPacket();
211 mapReply.AgentData.AgentID = this.AgentId; 214 mapReply.AgentData.AgentID = AgentId;
212 mapReply.AgentData.Flags = 0; 215 mapReply.AgentData.Flags = 0;
213 mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1]; 216 mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1];
214 mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock(); 217 mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock();
@@ -217,7 +220,7 @@ namespace OpenSim.Region.ClientStack
217 mapReply.LayerData[0].Top = 30000; 220 mapReply.LayerData[0].Top = 30000;
218 mapReply.LayerData[0].Right = 30000; 221 mapReply.LayerData[0].Right = 30000;
219 mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006"); 222 mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006");
220 this.OutPacket(mapReply); 223 OutPacket(mapReply);
221 } 224 }
222 225
223 public void RequestMapBlocks(int minX, int minY, int maxX, int maxY) 226 public void RequestMapBlocks(int minX, int minY, int maxX, int maxY)
@@ -251,4 +254,4 @@ namespace OpenSim.Region.ClientStack
251 */ 254 */
252 } 255 }
253 } 256 }
254} 257} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs
index 5cd30ce..efeff29 100644
--- a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs
+++ b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs
@@ -32,13 +32,12 @@ using System.Net.Sockets;
32using System.Timers; 32using System.Timers;
33using libsecondlife; 33using libsecondlife;
34using libsecondlife.Packets; 34using libsecondlife.Packets;
35using OpenSim.Framework.Console;
36using OpenSim.Framework; 35using OpenSim.Framework;
37using OpenSim.Region.Environment; 36using OpenSim.Framework.Console;
38 37
39namespace OpenSim.Region.ClientStack 38namespace OpenSim.Region.ClientStack
40{ 39{
41 public partial class ClientView 40 public partial class ClientView
42 { 41 {
43 protected BlockingQueue<QueItem> PacketQueue; 42 protected BlockingQueue<QueItem> PacketQueue;
44 protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); 43 protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>();
@@ -84,7 +83,7 @@ namespace OpenSim.Region.ClientStack
84 Pack.Header.Sequence = Sequence; 83 Pack.Header.Sequence = Sequence;
85 } 84 }
86 85
87 if (Pack.Header.Reliable) //DIRTY HACK 86 if (Pack.Header.Reliable) //DIRTY HACK
88 { 87 {
89 lock (NeedAck) 88 lock (NeedAck)
90 { 89 {
@@ -148,19 +147,21 @@ namespace OpenSim.Region.ClientStack
148 if (Pack.Header.Zerocoded) 147 if (Pack.Header.Zerocoded)
149 { 148 {
150 int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); 149 int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
151 m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode);//userEP); 150 m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode); //userEP);
152 } 151 }
153 else 152 else
154 { 153 {
155 m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); //userEP); 154 m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode);
155 //userEP);
156 } 156 }
157 } 157 }
158 catch (Exception) 158 catch (Exception)
159 { 159 {
160 MainLog.Instance.Warn("client", "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + userEP.ToString() + " - killing thread"); 160 MainLog.Instance.Warn("client",
161 this.KillThread(); 161 "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " +
162 userEP.ToString() + " - killing thread");
163 KillThread();
162 } 164 }
163
164 } 165 }
165 166
166 public virtual void InPacket(Packet NewPack) 167 public virtual void InPacket(Packet NewPack)
@@ -180,7 +181,7 @@ namespace OpenSim.Region.ClientStack
180 // Handle PacketAck packets 181 // Handle PacketAck packets
181 if (NewPack.Type == PacketType.PacketAck) 182 if (NewPack.Type == PacketType.PacketAck)
182 { 183 {
183 PacketAckPacket ackPacket = (PacketAckPacket)NewPack; 184 PacketAckPacket ackPacket = (PacketAckPacket) NewPack;
184 185
185 lock (NeedAck) 186 lock (NeedAck)
186 { 187 {
@@ -193,7 +194,7 @@ namespace OpenSim.Region.ClientStack
193 else if ((NewPack.Type == PacketType.StartPingCheck)) 194 else if ((NewPack.Type == PacketType.StartPingCheck))
194 { 195 {
195 //reply to pingcheck 196 //reply to pingcheck
196 StartPingCheckPacket startPing = (StartPingCheckPacket)NewPack; 197 StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack;
197 CompletePingCheckPacket endPing = new CompletePingCheckPacket(); 198 CompletePingCheckPacket endPing = new CompletePingCheckPacket();
198 endPing.PingID.PingID = startPing.PingID.PingID; 199 endPing.PingID.PingID = startPing.PingID.PingID;
199 OutPacket(endPing); 200 OutPacket(endPing);
@@ -203,9 +204,8 @@ namespace OpenSim.Region.ClientStack
203 QueItem item = new QueItem(); 204 QueItem item = new QueItem();
204 item.Packet = NewPack; 205 item.Packet = NewPack;
205 item.Incoming = true; 206 item.Incoming = true;
206 this.PacketQueue.Enqueue(item); 207 PacketQueue.Enqueue(item);
207 } 208 }
208
209 } 209 }
210 210
211 public virtual void OutPacket(Packet NewPack) 211 public virtual void OutPacket(Packet NewPack)
@@ -213,7 +213,7 @@ namespace OpenSim.Region.ClientStack
213 QueItem item = new QueItem(); 213 QueItem item = new QueItem();
214 item.Packet = NewPack; 214 item.Packet = NewPack;
215 item.Incoming = false; 215 item.Incoming = false;
216 this.PacketQueue.Enqueue(item); 216 PacketQueue.Enqueue(item);
217 } 217 }
218 218
219 # region Low Level Packet Methods 219 # region Low Level Packet Methods
@@ -229,7 +229,6 @@ namespace OpenSim.Region.ClientStack
229 ack_it.Header.Reliable = false; 229 ack_it.Header.Reliable = false;
230 230
231 OutPacket(ack_it); 231 OutPacket(ack_it);
232
233 } 232 }
234 /* 233 /*
235 if (Pack.Header.Reliable) 234 if (Pack.Header.Reliable)
@@ -252,8 +251,8 @@ namespace OpenSim.Region.ClientStack
252 { 251 {
253 if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent)) 252 if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent))
254 { 253 {
255 MainLog.Instance.Verbose( "Resending " + packet.Type.ToString() + " packet, " + 254 MainLog.Instance.Verbose("Resending " + packet.Type.ToString() + " packet, " +
256 (now - packet.TickCount) + "ms have passed"); 255 (now - packet.TickCount) + "ms have passed");
257 256
258 packet.Header.Resent = true; 257 packet.Header.Resent = true;
259 OutPacket(packet); 258 OutPacket(packet);
@@ -271,7 +270,7 @@ namespace OpenSim.Region.ClientStack
271 if (PendingAcks.Count > 250) 270 if (PendingAcks.Count > 250)
272 { 271 {
273 // FIXME: Handle the odd case where we have too many pending ACKs queued up 272 // FIXME: Handle the odd case where we have too many pending ACKs queued up
274 MainLog.Instance.Verbose( "Too many ACKs queued up!"); 273 MainLog.Instance.Verbose("Too many ACKs queued up!");
275 return; 274 return;
276 } 275 }
277 276
@@ -302,6 +301,7 @@ namespace OpenSim.Region.ClientStack
302 SendAcks(); 301 SendAcks();
303 ResendUnacked(); 302 ResendUnacked();
304 } 303 }
304
305 #endregion 305 #endregion
306 306
307 #region Nested Classes 307 #region Nested Classes
@@ -315,6 +315,7 @@ namespace OpenSim.Region.ClientStack
315 public Packet Packet; 315 public Packet Packet;
316 public bool Incoming; 316 public bool Incoming;
317 } 317 }
318
318 #endregion 319 #endregion
319 } 320 }
320} 321} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
index 13e8b43..dd2562c 100644
--- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
+++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
@@ -31,8 +31,6 @@ using System.Text;
31using libsecondlife; 31using libsecondlife;
32using libsecondlife.Packets; 32using libsecondlife.Packets;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Region.Environment.Scenes;
36 34
37namespace OpenSim.Region.ClientStack 35namespace OpenSim.Region.ClientStack
38{ 36{
@@ -63,7 +61,7 @@ namespace OpenSim.Region.ClientStack
63 { 61 {
64 ack_pack(Pack); 62 ack_pack(Pack);
65 63
66 if (this.ProcessPacketMethod(Pack)) 64 if (ProcessPacketMethod(Pack))
67 { 65 {
68 //there is a handler registered that handled this packet type 66 //there is a handler registered that handled this packet type
69 return; 67 return;
@@ -74,16 +72,17 @@ namespace OpenSim.Region.ClientStack
74 72
75 switch (Pack.Type) 73 switch (Pack.Type)
76 { 74 {
77 #region Scene/Avatar 75 #region Scene/Avatar
76
78 case PacketType.AvatarPropertiesRequest: 77 case PacketType.AvatarPropertiesRequest:
79 AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; 78 AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket) Pack;
80 if (OnRequestAvatarProperties != null) 79 if (OnRequestAvatarProperties != null)
81 { 80 {
82 OnRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID); 81 OnRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID);
83 } 82 }
84 break; 83 break;
85 case PacketType.ChatFromViewer: 84 case PacketType.ChatFromViewer:
86 ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack; 85 ChatFromViewerPacket inchatpack = (ChatFromViewerPacket) Pack;
87 if (Util.FieldToString(inchatpack.ChatData.Message) == "") 86 if (Util.FieldToString(inchatpack.ChatData.Message) == "")
88 { 87 {
89 //empty message so don't bother with it 88 //empty message so don't bother with it
@@ -103,30 +102,32 @@ namespace OpenSim.Region.ClientStack
103 args.Channel = channel; 102 args.Channel = channel;
104 args.From = fromName; 103 args.From = fromName;
105 args.Message = Util.FieldToString(message); 104 args.Message = Util.FieldToString(message);
106 args.Type = (ChatTypeEnum)type; 105 args.Type = (ChatTypeEnum) type;
107 args.Position = fromPos; 106 args.Position = fromPos;
108 107
109 args.Scene = Scene; 108 args.Scene = Scene;
110 args.Sender = this; 109 args.Sender = this;
111 110
112 this.OnChatFromViewer(this, args); 111 OnChatFromViewer(this, args);
113 } 112 }
114 break; 113 break;
115 case PacketType.ImprovedInstantMessage: 114 case PacketType.ImprovedInstantMessage:
116 ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack; 115 ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket) Pack;
117 string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName); 116 string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
118 string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message); 117 string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message);
119 if (OnInstantMessage != null) 118 if (OnInstantMessage != null)
120 { 119 {
121 this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID, msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID, 120 OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID,
122 msgpack.MessageBlock.Timestamp, IMfromName, IMmessage, msgpack.MessageBlock.Dialog); 121 msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID,
122 msgpack.MessageBlock.Timestamp, IMfromName, IMmessage,
123 msgpack.MessageBlock.Dialog);
123 } 124 }
124 break; 125 break;
125 case PacketType.RezObject: 126 case PacketType.RezObject:
126 RezObjectPacket rezPacket = (RezObjectPacket)Pack; 127 RezObjectPacket rezPacket = (RezObjectPacket) Pack;
127 if (OnRezObject != null) 128 if (OnRezObject != null)
128 { 129 {
129 this.OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd); 130 OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd);
130 } 131 }
131 break; 132 break;
132 case PacketType.DeRezObject: 133 case PacketType.DeRezObject:
@@ -136,13 +137,15 @@ namespace OpenSim.Region.ClientStack
136 } 137 }
137 break; 138 break;
138 case PacketType.ModifyLand: 139 case PacketType.ModifyLand:
139 ModifyLandPacket modify = (ModifyLandPacket)Pack; 140 ModifyLandPacket modify = (ModifyLandPacket) Pack;
140 if (modify.ParcelData.Length > 0) 141 if (modify.ParcelData.Length > 0)
141 { 142 {
142 if (OnModifyTerrain != null) 143 if (OnModifyTerrain != null)
143 { 144 {
144 OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, modify.ModifyBlock.BrushSize, 145 OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds,
145 modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West, this); 146 modify.ModifyBlock.BrushSize,
147 modify.ModifyBlock.Action, modify.ParcelData[0].North,
148 modify.ParcelData[0].West, this);
146 } 149 }
147 } 150 }
148 break; 151 break;
@@ -164,7 +167,7 @@ namespace OpenSim.Region.ClientStack
164 break; 167 break;
165 case PacketType.AgentSetAppearance: 168 case PacketType.AgentSetAppearance:
166 //OpenSim.Framework.Console.MainLog.Instance.Verbose("set appear", Pack.ToString()); 169 //OpenSim.Framework.Console.MainLog.Instance.Verbose("set appear", Pack.ToString());
167 AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack; 170 AgentSetAppearancePacket appear = (AgentSetAppearancePacket) Pack;
168 if (OnSetAppearance != null) 171 if (OnSetAppearance != null)
169 { 172 {
170 OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); 173 OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam);
@@ -179,17 +182,16 @@ namespace OpenSim.Region.ClientStack
179 case PacketType.AgentUpdate: 182 case PacketType.AgentUpdate:
180 if (OnAgentUpdate != null) 183 if (OnAgentUpdate != null)
181 { 184 {
182 AgentUpdatePacket agenUpdate = (AgentUpdatePacket)Pack; 185 AgentUpdatePacket agenUpdate = (AgentUpdatePacket) Pack;
183 OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation); 186 OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation);
184 } 187 }
185 break; 188 break;
186 case PacketType.AgentAnimation: 189 case PacketType.AgentAnimation:
187 AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; 190 AgentAnimationPacket AgentAni = (AgentAnimationPacket) Pack;
188 for (int i = 0; i < AgentAni.AnimationList.Length; i++) 191 for (int i = 0; i < AgentAni.AnimationList.Length; i++)
189 { 192 {
190 if (AgentAni.AnimationList[i].StartAnim) 193 if (AgentAni.AnimationList[i].StartAnim)
191 { 194 {
192
193 if (OnStartAnim != null) 195 if (OnStartAnim != null)
194 { 196 {
195 OnStartAnim(this, AgentAni.AnimationList[i].AnimID, 1); 197 OnStartAnim(this, AgentAni.AnimationList[i].AnimID, 1);
@@ -198,27 +200,29 @@ namespace OpenSim.Region.ClientStack
198 } 200 }
199 break; 201 break;
200 case PacketType.AgentRequestSit: 202 case PacketType.AgentRequestSit:
201 AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack; 203 AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket) Pack;
202 SendSitResponse(agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); 204 SendSitResponse(agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset);
203 if (OnAgentRequestSit != null) 205 if (OnAgentRequestSit != null)
204 { 206 {
205 OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID, agentRequestSit.TargetObject.TargetID); 207 OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID,
208 agentRequestSit.TargetObject.TargetID);
206 } 209 }
207 break; 210 break;
208 case PacketType.AgentSit: 211 case PacketType.AgentSit:
209 if (OnAgentSit != null) 212 if (OnAgentSit != null)
210 { 213 {
211 AgentSitPacket agentSit = (AgentSitPacket)Pack; 214 AgentSitPacket agentSit = (AgentSitPacket) Pack;
212 OnAgentSit(this, agentSit.AgentData.AgentID); 215 OnAgentSit(this, agentSit.AgentData.AgentID);
213 } 216 }
214 break; 217 break;
215 218
216 #endregion 219 #endregion
220
221 #region Objects/m_sceneObjects
217 222
218 #region Objects/m_sceneObjects
219 case PacketType.ObjectLink: 223 case PacketType.ObjectLink:
220 // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); 224 // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
221 ObjectLinkPacket link = (ObjectLinkPacket)Pack; 225 ObjectLinkPacket link = (ObjectLinkPacket) Pack;
222 uint parentprimid = 0; 226 uint parentprimid = 0;
223 List<uint> childrenprims = new List<uint>(); 227 List<uint> childrenprims = new List<uint>();
224 if (link.ObjectData.Length > 1) 228 if (link.ObjectData.Length > 1)
@@ -238,13 +242,13 @@ namespace OpenSim.Region.ClientStack
238 case PacketType.ObjectAdd: 242 case PacketType.ObjectAdd:
239 if (OnAddPrim != null) 243 if (OnAddPrim != null)
240 { 244 {
241 ObjectAddPacket addPacket = (ObjectAddPacket)Pack; 245 ObjectAddPacket addPacket = (ObjectAddPacket) Pack;
242 PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); 246 PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
243 OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape); 247 OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, shape);
244 } 248 }
245 break; 249 break;
246 case PacketType.ObjectShape: 250 case PacketType.ObjectShape:
247 ObjectShapePacket shapePacket = (ObjectShapePacket)Pack; 251 ObjectShapePacket shapePacket = (ObjectShapePacket) Pack;
248 for (int i = 0; i < shapePacket.ObjectData.Length; i++) 252 for (int i = 0; i < shapePacket.ObjectData.Length; i++)
249 { 253 {
250 if (OnUpdatePrimShape != null) 254 if (OnUpdatePrimShape != null)
@@ -254,26 +258,28 @@ namespace OpenSim.Region.ClientStack
254 } 258 }
255 break; 259 break;
256 case PacketType.ObjectExtraParams: 260 case PacketType.ObjectExtraParams:
257 ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack; 261 ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket) Pack;
258 if (OnUpdateExtraParams != null) 262 if (OnUpdateExtraParams != null)
259 { 263 {
260 OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType, extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData); 264 OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType,
265 extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData);
261 } 266 }
262 break; 267 break;
263 case PacketType.ObjectDuplicate: 268 case PacketType.ObjectDuplicate:
264 ObjectDuplicatePacket dupe = (ObjectDuplicatePacket)Pack; 269 ObjectDuplicatePacket dupe = (ObjectDuplicatePacket) Pack;
265 for (int i = 0; i < dupe.ObjectData.Length; i++) 270 for (int i = 0; i < dupe.ObjectData.Length; i++)
266 { 271 {
267 if (OnObjectDuplicate != null) 272 if (OnObjectDuplicate != null)
268 { 273 {
269 OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, dupe.SharedData.DuplicateFlags); 274 OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset,
275 dupe.SharedData.DuplicateFlags);
270 } 276 }
271 } 277 }
272 278
273 break; 279 break;
274 280
275 case PacketType.ObjectSelect: 281 case PacketType.ObjectSelect:
276 ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; 282 ObjectSelectPacket incomingselect = (ObjectSelectPacket) Pack;
277 for (int i = 0; i < incomingselect.ObjectData.Length; i++) 283 for (int i = 0; i < incomingselect.ObjectData.Length; i++)
278 { 284 {
279 if (OnObjectSelect != null) 285 if (OnObjectSelect != null)
@@ -283,7 +289,7 @@ namespace OpenSim.Region.ClientStack
283 } 289 }
284 break; 290 break;
285 case PacketType.ObjectDeselect: 291 case PacketType.ObjectDeselect:
286 ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket)Pack; 292 ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket) Pack;
287 for (int i = 0; i < incomingdeselect.ObjectData.Length; i++) 293 for (int i = 0; i < incomingdeselect.ObjectData.Length; i++)
288 { 294 {
289 if (OnObjectDeselect != null) 295 if (OnObjectDeselect != null)
@@ -293,55 +299,58 @@ namespace OpenSim.Region.ClientStack
293 } 299 }
294 break; 300 break;
295 case PacketType.ObjectFlagUpdate: 301 case PacketType.ObjectFlagUpdate:
296 ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack; 302 ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket) Pack;
297 if (OnUpdatePrimFlags != null) 303 if (OnUpdatePrimFlags != null)
298 { 304 {
299 OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this); 305 OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this);
300 } 306 }
301 break; 307 break;
302 case PacketType.ObjectImage: 308 case PacketType.ObjectImage:
303 ObjectImagePacket imagePack = (ObjectImagePacket)Pack; 309 ObjectImagePacket imagePack = (ObjectImagePacket) Pack;
304 for (int i = 0; i < imagePack.ObjectData.Length; i++) 310 for (int i = 0; i < imagePack.ObjectData.Length; i++)
305 { 311 {
306 if (OnUpdatePrimTexture != null) 312 if (OnUpdatePrimTexture != null)
307 { 313 {
308 OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, imagePack.ObjectData[i].TextureEntry, this); 314 OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
315 imagePack.ObjectData[i].TextureEntry, this);
309 } 316 }
310 } 317 }
311 break; 318 break;
312 case PacketType.ObjectGrab: 319 case PacketType.ObjectGrab:
313 ObjectGrabPacket grab = (ObjectGrabPacket)Pack; 320 ObjectGrabPacket grab = (ObjectGrabPacket) Pack;
314 if (OnGrabObject != null) 321 if (OnGrabObject != null)
315 { 322 {
316 OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); 323 OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this);
317 } 324 }
318 break; 325 break;
319 case PacketType.ObjectGrabUpdate: 326 case PacketType.ObjectGrabUpdate:
320 ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket)Pack; 327 ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket) Pack;
321 if (OnGrabUpdate != null) 328 if (OnGrabUpdate != null)
322 { 329 {
323 OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial, grabUpdate.ObjectData.GrabPosition, this); 330 OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial,
331 grabUpdate.ObjectData.GrabPosition, this);
324 } 332 }
325 break; 333 break;
326 case PacketType.ObjectDeGrab: 334 case PacketType.ObjectDeGrab:
327 ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket)Pack; 335 ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket) Pack;
328 if (OnDeGrabObject != null) 336 if (OnDeGrabObject != null)
329 { 337 {
330 OnDeGrabObject(deGrab.ObjectData.LocalID, this); 338 OnDeGrabObject(deGrab.ObjectData.LocalID, this);
331 } 339 }
332 break; 340 break;
333 case PacketType.ObjectDescription: 341 case PacketType.ObjectDescription:
334 ObjectDescriptionPacket objDes = (ObjectDescriptionPacket)Pack; 342 ObjectDescriptionPacket objDes = (ObjectDescriptionPacket) Pack;
335 for (int i = 0; i < objDes.ObjectData.Length; i++) 343 for (int i = 0; i < objDes.ObjectData.Length; i++)
336 { 344 {
337 if (OnObjectDescription != null) 345 if (OnObjectDescription != null)
338 { 346 {
339 OnObjectDescription(objDes.ObjectData[i].LocalID, enc.GetString(objDes.ObjectData[i].Description)); 347 OnObjectDescription(objDes.ObjectData[i].LocalID,
348 enc.GetString(objDes.ObjectData[i].Description));
340 } 349 }
341 } 350 }
342 break; 351 break;
343 case PacketType.ObjectName: 352 case PacketType.ObjectName:
344 ObjectNamePacket objName = (ObjectNamePacket)Pack; 353 ObjectNamePacket objName = (ObjectNamePacket) Pack;
345 for (int i = 0; i < objName.ObjectData.Length; i++) 354 for (int i = 0; i < objName.ObjectData.Length; i++)
346 { 355 {
347 if (OnObjectName != null) 356 if (OnObjectName != null)
@@ -353,15 +362,16 @@ namespace OpenSim.Region.ClientStack
353 case PacketType.ObjectPermissions: 362 case PacketType.ObjectPermissions:
354 //Console.WriteLine("permissions set " + Pack.ToString()); 363 //Console.WriteLine("permissions set " + Pack.ToString());
355 break; 364 break;
356 #endregion
357 365
358 #region Inventory/Asset/Other related packets 366 #endregion
367
368 #region Inventory/Asset/Other related packets
369
359 case PacketType.RequestImage: 370 case PacketType.RequestImage:
360 RequestImagePacket imageRequest = (RequestImagePacket)Pack; 371 RequestImagePacket imageRequest = (RequestImagePacket) Pack;
361 //Console.WriteLine("image request: " + Pack.ToString()); 372 //Console.WriteLine("image request: " + Pack.ToString());
362 for (int i = 0; i < imageRequest.RequestImage.Length; i++) 373 for (int i = 0; i < imageRequest.RequestImage.Length; i++)
363 { 374 {
364
365 // still working on the Texture download module so for now using old method 375 // still working on the Texture download module so for now using old method
366 // TextureRequestArgs args = new TextureRequestArgs(); 376 // TextureRequestArgs args = new TextureRequestArgs();
367 // args.RequestedAssetID = imageRequest.RequestImage[i].Image; 377 // args.RequestedAssetID = imageRequest.RequestImage[i].Image;
@@ -373,86 +383,104 @@ namespace OpenSim.Region.ClientStack
373 // OnRequestTexture(this, args); 383 // OnRequestTexture(this, args);
374 // } 384 // }
375 385
376 m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet, imageRequest.RequestImage[i].DiscardLevel); 386 m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image,
387 imageRequest.RequestImage[i].Packet,
388 imageRequest.RequestImage[i].DiscardLevel);
377 } 389 }
378 break; 390 break;
379 case PacketType.TransferRequest: 391 case PacketType.TransferRequest:
380 //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request"); 392 //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
381 TransferRequestPacket transfer = (TransferRequestPacket)Pack; 393 TransferRequestPacket transfer = (TransferRequestPacket) Pack;
382 m_assetCache.AddAssetRequest(this, transfer); 394 m_assetCache.AddAssetRequest(this, transfer);
383 break; 395 break;
384 case PacketType.AssetUploadRequest: 396 case PacketType.AssetUploadRequest:
385 AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; 397 AssetUploadRequestPacket request = (AssetUploadRequestPacket) Pack;
386 // Console.WriteLine("upload request " + Pack.ToString()); 398 // Console.WriteLine("upload request " + Pack.ToString());
387 // Console.WriteLine("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionID).ToStringHyphenated()); 399 // Console.WriteLine("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionID).ToStringHyphenated());
388 if (OnAssetUploadRequest != null) 400 if (OnAssetUploadRequest != null)
389 { 401 {
390 OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(this.SecureSessionID), request.AssetBlock.TransactionID, request.AssetBlock.Type, request.AssetBlock.AssetData, request.AssetBlock.StoreLocal); 402 OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(SecureSessionID),
403 request.AssetBlock.TransactionID, request.AssetBlock.Type,
404 request.AssetBlock.AssetData, request.AssetBlock.StoreLocal);
391 } 405 }
392 break; 406 break;
393 case PacketType.RequestXfer: 407 case PacketType.RequestXfer:
394 RequestXferPacket xferReq = (RequestXferPacket)Pack; 408 RequestXferPacket xferReq = (RequestXferPacket) Pack;
395 if (OnRequestXfer != null) 409 if (OnRequestXfer != null)
396 { 410 {
397 OnRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename)); 411 OnRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename));
398 } 412 }
399 break; 413 break;
400 case PacketType.SendXferPacket: 414 case PacketType.SendXferPacket:
401 SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack; 415 SendXferPacketPacket xferRec = (SendXferPacketPacket) Pack;
402 if (OnXferReceive != null) 416 if (OnXferReceive != null)
403 { 417 {
404 OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data); 418 OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
405 } 419 }
406 break; 420 break;
407 case PacketType.ConfirmXferPacket: 421 case PacketType.ConfirmXferPacket:
408 ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack; 422 ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket) Pack;
409 if (OnConfirmXfer != null) 423 if (OnConfirmXfer != null)
410 { 424 {
411 OnConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet); 425 OnConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet);
412 } 426 }
413 break; 427 break;
414 case PacketType.CreateInventoryFolder: 428 case PacketType.CreateInventoryFolder:
415 if (this.OnCreateNewInventoryFolder != null) 429 if (OnCreateNewInventoryFolder != null)
416 { 430 {
417 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack; 431 CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket) Pack;
418 this.OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID); 432 OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID,
433 (ushort) invFolder.FolderData.Type,
434 Util.FieldToString(invFolder.FolderData.Name),
435 invFolder.FolderData.ParentID);
419 } 436 }
420 break; 437 break;
421 case PacketType.CreateInventoryItem: 438 case PacketType.CreateInventoryItem:
422 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; 439 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket) Pack;
423 if (this.OnCreateNewInventoryItem != null) 440 if (OnCreateNewInventoryItem != null)
424 { 441 {
425 this.OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, createItem.InventoryBlock.FolderID, createItem.InventoryBlock.CallbackID, 442 OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID,
426 Util.FieldToString(createItem.InventoryBlock.Description), Util.FieldToString(createItem.InventoryBlock.Name), createItem.InventoryBlock.InvType, 443 createItem.InventoryBlock.FolderID,
427 createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask); 444 createItem.InventoryBlock.CallbackID,
445 Util.FieldToString(createItem.InventoryBlock.Description),
446 Util.FieldToString(createItem.InventoryBlock.Name),
447 createItem.InventoryBlock.InvType,
448 createItem.InventoryBlock.Type,
449 createItem.InventoryBlock.WearableType,
450 createItem.InventoryBlock.NextOwnerMask);
428 } 451 }
429 break; 452 break;
430 case PacketType.FetchInventory: 453 case PacketType.FetchInventory:
431 if (this.OnFetchInventory != null) 454 if (OnFetchInventory != null)
432 { 455 {
433 FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack; 456 FetchInventoryPacket FetchInventory = (FetchInventoryPacket) Pack;
434 for (int i = 0; i < FetchInventory.InventoryData.Length; i++) 457 for (int i = 0; i < FetchInventory.InventoryData.Length; i++)
435 { 458 {
436 this.OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID, FetchInventory.InventoryData[i].OwnerID); 459 OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID,
460 FetchInventory.InventoryData[i].OwnerID);
437 } 461 }
438 } 462 }
439 break; 463 break;
440 case PacketType.FetchInventoryDescendents: 464 case PacketType.FetchInventoryDescendents:
441 if (this.OnFetchInventoryDescendents != null) 465 if (OnFetchInventoryDescendents != null)
442 { 466 {
443 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack; 467 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket) Pack;
444 this.OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, Fetch.InventoryData.SortOrder); 468 OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID,
469 Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems,
470 Fetch.InventoryData.SortOrder);
445 } 471 }
446 break; 472 break;
447 case PacketType.UpdateInventoryItem: 473 case PacketType.UpdateInventoryItem:
448 UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack; 474 UpdateInventoryItemPacket update = (UpdateInventoryItemPacket) Pack;
449 if (OnUpdateInventoryItem != null) 475 if (OnUpdateInventoryItem != null)
450 { 476 {
451 for (int i = 0; i < update.InventoryData.Length; i++) 477 for (int i = 0; i < update.InventoryData.Length; i++)
452 { 478 {
453 if (update.InventoryData[i].TransactionID != LLUUID.Zero) 479 if (update.InventoryData[i].TransactionID != LLUUID.Zero)
454 { 480 {
455 OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID, update.InventoryData[i].TransactionID.Combine(this.SecureSessionID), update.InventoryData[i].ItemID); 481 OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID,
482 update.InventoryData[i].TransactionID.Combine(SecureSessionID),
483 update.InventoryData[i].ItemID);
456 } 484 }
457 } 485 }
458 } 486 }
@@ -488,25 +516,26 @@ namespace OpenSim.Region.ClientStack
488 }*/ 516 }*/
489 break; 517 break;
490 case PacketType.RequestTaskInventory: 518 case PacketType.RequestTaskInventory:
491 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack; 519 RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket) Pack;
492 if (this.OnRequestTaskInventory != null) 520 if (OnRequestTaskInventory != null)
493 { 521 {
494 this.OnRequestTaskInventory(this, requesttask.InventoryData.LocalID); 522 OnRequestTaskInventory(this, requesttask.InventoryData.LocalID);
495 } 523 }
496 break; 524 break;
497 case PacketType.UpdateTaskInventory: 525 case PacketType.UpdateTaskInventory:
498 //Console.WriteLine(Pack.ToString()); 526 //Console.WriteLine(Pack.ToString());
499 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack; 527 UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket) Pack;
500 if (OnUpdateTaskInventory != null) 528 if (OnUpdateTaskInventory != null)
501 { 529 {
502 if (updatetask.UpdateData.Key == 0) 530 if (updatetask.UpdateData.Key == 0)
503 { 531 {
504 OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID, updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID); 532 OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID,
533 updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID);
505 } 534 }
506 } 535 }
507 break; 536 break;
508 case PacketType.RemoveTaskInventory: 537 case PacketType.RemoveTaskInventory:
509 RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket)Pack; 538 RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket) Pack;
510 if (OnRemoveTaskItem != null) 539 if (OnRemoveTaskItem != null)
511 { 540 {
512 OnRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID); 541 OnRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID);
@@ -517,38 +546,39 @@ namespace OpenSim.Region.ClientStack
517 break; 546 break;
518 case PacketType.RezScript: 547 case PacketType.RezScript:
519 //Console.WriteLine(Pack.ToString()); 548 //Console.WriteLine(Pack.ToString());
520 RezScriptPacket rezScript = (RezScriptPacket)Pack; 549 RezScriptPacket rezScript = (RezScriptPacket) Pack;
521 if (OnRezScript != null) 550 if (OnRezScript != null)
522 { 551 {
523 OnRezScript(this, rezScript.InventoryBlock.ItemID, rezScript.UpdateBlock.ObjectLocalID); 552 OnRezScript(this, rezScript.InventoryBlock.ItemID, rezScript.UpdateBlock.ObjectLocalID);
524 } 553 }
525 break; 554 break;
526 case PacketType.MapLayerRequest: 555 case PacketType.MapLayerRequest:
527 this.RequestMapLayer(); 556 RequestMapLayer();
528 break; 557 break;
529 case PacketType.MapBlockRequest: 558 case PacketType.MapBlockRequest:
530 MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack; 559 MapBlockRequestPacket MapRequest = (MapBlockRequestPacket) Pack;
531 if (OnRequestMapBlocks != null) 560 if (OnRequestMapBlocks != null)
532 { 561 {
533 OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); 562 OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY,
563 MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
534 } 564 }
535 break; 565 break;
536 case PacketType.TeleportLandmarkRequest: 566 case PacketType.TeleportLandmarkRequest:
537 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack; 567 TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket) Pack;
538 568
539 TeleportStartPacket tpStart = new TeleportStartPacket(); 569 TeleportStartPacket tpStart = new TeleportStartPacket();
540 tpStart.Info.TeleportFlags = 8; // tp via lm 570 tpStart.Info.TeleportFlags = 8; // tp via lm
541 this.OutPacket(tpStart); 571 OutPacket(tpStart);
542 572
543 TeleportProgressPacket tpProgress = new TeleportProgressPacket(); 573 TeleportProgressPacket tpProgress = new TeleportProgressPacket();
544 tpProgress.Info.Message = (new ASCIIEncoding()).GetBytes("sending_landmark"); 574 tpProgress.Info.Message = (new ASCIIEncoding()).GetBytes("sending_landmark");
545 tpProgress.Info.TeleportFlags = 8; 575 tpProgress.Info.TeleportFlags = 8;
546 tpProgress.AgentData.AgentID = tpReq.Info.AgentID; 576 tpProgress.AgentData.AgentID = tpReq.Info.AgentID;
547 this.OutPacket(tpProgress); 577 OutPacket(tpProgress);
548 578
549 // Fetch landmark 579 // Fetch landmark
550 LLUUID lmid = tpReq.Info.LandmarkID; 580 LLUUID lmid = tpReq.Info.LandmarkID;
551 AssetBase lma = this.m_assetCache.GetAsset(lmid); 581 AssetBase lma = m_assetCache.GetAsset(lmid);
552 if (lma != null) 582 if (lma != null)
553 { 583 {
554 AssetLandmark lm = new AssetLandmark(lma); 584 AssetLandmark lm = new AssetLandmark(lma);
@@ -558,7 +588,7 @@ namespace OpenSim.Region.ClientStack
558 TeleportLocalPacket tpLocal = new TeleportLocalPacket(); 588 TeleportLocalPacket tpLocal = new TeleportLocalPacket();
559 589
560 tpLocal.Info.AgentID = tpReq.Info.AgentID; 590 tpLocal.Info.AgentID = tpReq.Info.AgentID;
561 tpLocal.Info.TeleportFlags = 8; // Teleport via landmark 591 tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
562 tpLocal.Info.LocationID = 2; 592 tpLocal.Info.LocationID = 2;
563 tpLocal.Info.Position = lm.Position; 593 tpLocal.Info.Position = lm.Position;
564 OutPacket(tpLocal); 594 OutPacket(tpLocal);
@@ -582,12 +612,13 @@ namespace OpenSim.Region.ClientStack
582 } 612 }
583 break; 613 break;
584 case PacketType.TeleportLocationRequest: 614 case PacketType.TeleportLocationRequest:
585 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; 615 TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket) Pack;
586 // Console.WriteLine(tpLocReq.ToString()); 616 // Console.WriteLine(tpLocReq.ToString());
587 617
588 if (OnTeleportLocationRequest != null) 618 if (OnTeleportLocationRequest != null)
589 { 619 {
590 OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, tpLocReq.Info.LookAt, 16); 620 OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position,
621 tpLocReq.Info.LookAt, 16);
591 } 622 }
592 else 623 else
593 { 624 {
@@ -598,76 +629,94 @@ namespace OpenSim.Region.ClientStack
598 OutPacket(tpCancel); 629 OutPacket(tpCancel);
599 } 630 }
600 break; 631 break;
601 #endregion 632
633 #endregion
602 634
603 case PacketType.MoneyBalanceRequest: 635 case PacketType.MoneyBalanceRequest:
604 SendMoneyBalance(LLUUID.Zero, true, new byte[0], MoneyBalance); 636 SendMoneyBalance(LLUUID.Zero, true, new byte[0], MoneyBalance);
605 break; 637 break;
606 case PacketType.UUIDNameRequest: 638 case PacketType.UUIDNameRequest:
607 UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; 639 UUIDNameRequestPacket incoming = (UUIDNameRequestPacket) Pack;
608 foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock) 640 foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
609 { 641 {
610 OnNameFromUUIDRequest(UUIDBlock.ID, this); 642 OnNameFromUUIDRequest(UUIDBlock.ID, this);
611 } 643 }
612 break; 644 break;
613 #region Parcel related packets 645
646 #region Parcel related packets
647
614 case PacketType.ParcelPropertiesRequest: 648 case PacketType.ParcelPropertiesRequest:
615 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack; 649 ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket) Pack;
616 if (OnParcelPropertiesRequest != null) 650 if (OnParcelPropertiesRequest != null)
617 { 651 {
618 OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this); 652 OnParcelPropertiesRequest((int) Math.Round(propertiesRequest.ParcelData.West),
653 (int) Math.Round(propertiesRequest.ParcelData.South),
654 (int) Math.Round(propertiesRequest.ParcelData.East),
655 (int) Math.Round(propertiesRequest.ParcelData.North),
656 propertiesRequest.ParcelData.SequenceID,
657 propertiesRequest.ParcelData.SnapSelection, this);
619 } 658 }
620 break; 659 break;
621 case PacketType.ParcelDivide: 660 case PacketType.ParcelDivide:
622 ParcelDividePacket landDivide = (ParcelDividePacket)Pack; 661 ParcelDividePacket landDivide = (ParcelDividePacket) Pack;
623 if (OnParcelDivideRequest != null) 662 if (OnParcelDivideRequest != null)
624 { 663 {
625 OnParcelDivideRequest((int)Math.Round(landDivide.ParcelData.West), (int)Math.Round(landDivide.ParcelData.South), (int)Math.Round(landDivide.ParcelData.East), (int)Math.Round(landDivide.ParcelData.North), this); 664 OnParcelDivideRequest((int) Math.Round(landDivide.ParcelData.West),
665 (int) Math.Round(landDivide.ParcelData.South),
666 (int) Math.Round(landDivide.ParcelData.East),
667 (int) Math.Round(landDivide.ParcelData.North), this);
626 } 668 }
627 break; 669 break;
628 case PacketType.ParcelJoin: 670 case PacketType.ParcelJoin:
629 ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack; 671 ParcelJoinPacket landJoin = (ParcelJoinPacket) Pack;
630 if (OnParcelJoinRequest != null) 672 if (OnParcelJoinRequest != null)
631 { 673 {
632 OnParcelJoinRequest((int)Math.Round(landJoin.ParcelData.West), (int)Math.Round(landJoin.ParcelData.South), (int)Math.Round(landJoin.ParcelData.East), (int)Math.Round(landJoin.ParcelData.North), this); 674 OnParcelJoinRequest((int) Math.Round(landJoin.ParcelData.West),
675 (int) Math.Round(landJoin.ParcelData.South),
676 (int) Math.Round(landJoin.ParcelData.East),
677 (int) Math.Round(landJoin.ParcelData.North), this);
633 } 678 }
634 break; 679 break;
635 case PacketType.ParcelPropertiesUpdate: 680 case PacketType.ParcelPropertiesUpdate:
636 ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack; 681 ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket) Pack;
637 if (OnParcelPropertiesUpdateRequest != null) 682 if (OnParcelPropertiesUpdateRequest != null)
638 { 683 {
639 OnParcelPropertiesUpdateRequest(updatePacket, this); 684 OnParcelPropertiesUpdateRequest(updatePacket, this);
640
641 } 685 }
642 break; 686 break;
643 case PacketType.ParcelSelectObjects: 687 case PacketType.ParcelSelectObjects:
644 ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack; 688 ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket) Pack;
645 if (OnParcelSelectObjects != null) 689 if (OnParcelSelectObjects != null)
646 { 690 {
647 OnParcelSelectObjects(selectPacket.ParcelData.LocalID, Convert.ToInt32(selectPacket.ParcelData.ReturnType), this); 691 OnParcelSelectObjects(selectPacket.ParcelData.LocalID,
692 Convert.ToInt32(selectPacket.ParcelData.ReturnType), this);
648 } 693 }
649 break; 694 break;
650 695
651 case PacketType.ParcelObjectOwnersRequest: 696 case PacketType.ParcelObjectOwnersRequest:
652 ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack; 697 ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket) Pack;
653 if (OnParcelObjectOwnerRequest != null) 698 if (OnParcelObjectOwnerRequest != null)
654 { 699 {
655 OnParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this); 700 OnParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this);
656 } 701 }
657 break; 702 break;
658 #endregion
659 703
660 #region Estate Packets 704 #endregion
705
706 #region Estate Packets
707
661 case PacketType.EstateOwnerMessage: 708 case PacketType.EstateOwnerMessage:
662 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; 709 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket) Pack;
663 if (OnEstateOwnerMessage != null) 710 if (OnEstateOwnerMessage != null)
664 { 711 {
665 OnEstateOwnerMessage(messagePacket, this); 712 OnEstateOwnerMessage(messagePacket, this);
666 } 713 }
667 break; 714 break;
668 #endregion
669 715
670 #region unimplemented handlers 716 #endregion
717
718 #region unimplemented handlers
719
671 case PacketType.AgentIsNowWearing: 720 case PacketType.AgentIsNowWearing:
672 // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; 721 // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
673 //Console.WriteLine(Pack.ToString()); 722 //Console.WriteLine(Pack.ToString());
@@ -675,7 +724,8 @@ namespace OpenSim.Region.ClientStack
675 case PacketType.ObjectScale: 724 case PacketType.ObjectScale:
676 //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); 725 //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
677 break; 726 break;
678 #endregion 727
728 #endregion
679 } 729 }
680 } 730 }
681 } 731 }
@@ -721,4 +771,4 @@ namespace OpenSim.Region.ClientStack
721 OutPacket(logReply); 771 OutPacket(logReply);
722 } 772 }
723 } 773 }
724} 774} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs
index 6d49e34..55f50a4 100644
--- a/OpenSim/Region/ClientStack/ClientView.cs
+++ b/OpenSim/Region/ClientStack/ClientView.cs
@@ -36,7 +36,7 @@ using libsecondlife.Packets;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Communications.Cache; 37using OpenSim.Framework.Communications.Cache;
38using OpenSim.Framework.Console; 38using OpenSim.Framework.Console;
39using Timer = System.Timers.Timer; 39using Timer=System.Timers.Timer;
40 40
41namespace OpenSim.Region.ClientStack 41namespace OpenSim.Region.ClientStack
42{ 42{
@@ -50,8 +50,11 @@ namespace OpenSim.Region.ClientStack
50 { 50 {
51 public static TerrainManager TerrainManager; 51 public static TerrainManager TerrainManager;
52 52
53 protected static Dictionary<PacketType, PacketMethod> PacketHandlers = new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients 53 protected static Dictionary<PacketType, PacketMethod> PacketHandlers =
54 protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); //local handlers for this instance 54 new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients
55
56 protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>();
57 //local handlers for this instance
55 58
56 private LLUUID m_sessionId; 59 private LLUUID m_sessionId;
57 public LLUUID SecureSessionID = LLUUID.Zero; 60 public LLUUID SecureSessionID = LLUUID.Zero;
@@ -84,7 +87,9 @@ namespace OpenSim.Region.ClientStack
84 private int probesWithNoIngressPackets = 0; 87 private int probesWithNoIngressPackets = 0;
85 private int lastPacketsReceived = 0; 88 private int lastPacketsReceived = 0;
86 89
87 public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions) 90 public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager,
91 IScene scene, AssetCache assetCache, PacketServer packServer,
92 AgentCircuitManager authenSessions)
88 { 93 {
89 m_moneyBalance = 1000; 94 m_moneyBalance = 1000;
90 95
@@ -96,11 +101,11 @@ namespace OpenSim.Region.ClientStack
96 // m_inventoryCache = inventoryCache; 101 // m_inventoryCache = inventoryCache;
97 m_authenticateSessionsHandler = authenSessions; 102 m_authenticateSessionsHandler = authenSessions;
98 103
99 MainLog.Instance.Verbose("CLIENT","Started up new client thread to handle incoming request"); 104 MainLog.Instance.Verbose("CLIENT", "Started up new client thread to handle incoming request");
100 cirpack = initialcirpack; 105 cirpack = initialcirpack;
101 userEP = remoteEP; 106 userEP = remoteEP;
102 107
103 this.startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code); 108 startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code);
104 109
105 PacketQueue = new BlockingQueue<QueItem>(); 110 PacketQueue = new BlockingQueue<QueItem>();
106 111
@@ -109,7 +114,7 @@ namespace OpenSim.Region.ClientStack
109 AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed); 114 AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed);
110 AckTimer.Start(); 115 AckTimer.Start();
111 116
112 this.RegisterLocalPacketHandlers(); 117 RegisterLocalPacketHandlers();
113 118
114 ClientThread = new Thread(new ThreadStart(AuthUser)); 119 ClientThread = new Thread(new ThreadStart(AuthUser));
115 ClientThread.IsBackground = true; 120 ClientThread.IsBackground = true;
@@ -121,7 +126,7 @@ namespace OpenSim.Region.ClientStack
121 get { return m_sessionId; } 126 get { return m_sessionId; }
122 } 127 }
123 128
124 public void SetDebug(int newDebug) 129 public void SetDebug(int newDebug)
125 { 130 {
126 debug = newDebug; 131 debug = newDebug;
127 } 132 }
@@ -132,14 +137,15 @@ namespace OpenSim.Region.ClientStack
132 { 137 {
133 clientPingTimer.Stop(); 138 clientPingTimer.Stop();
134 139
135 m_scene.RemoveClient(this.AgentId); 140 m_scene.RemoveClient(AgentId);
136 141
137 this.ClientThread.Abort(); 142 ClientThread.Abort();
138 } 143 }
139 144
140 #endregion 145 #endregion
141 146
142 # region Packet Handling 147 # region Packet Handling
148
143 public static bool AddPacketHandler(PacketType packetType, PacketMethod handler) 149 public static bool AddPacketHandler(PacketType packetType, PacketMethod handler)
144 { 150 {
145 bool result = false; 151 bool result = false;
@@ -195,23 +201,27 @@ namespace OpenSim.Region.ClientStack
195 201
196 protected void DebugPacket(string direction, Packet packet) 202 protected void DebugPacket(string direction, Packet packet)
197 { 203 {
198 if (debug > 0) { 204 if (debug > 0)
205 {
199 string info; 206 string info;
200 if (debug < 255 && packet.Type == PacketType.AgentUpdate) 207 if (debug < 255 && packet.Type == PacketType.AgentUpdate)
201 return; 208 return;
202 if (debug < 254 && packet.Type == PacketType.ViewerEffect) 209 if (debug < 254 && packet.Type == PacketType.ViewerEffect)
203 return; 210 return;
204 if (debug < 253 && ( 211 if (debug < 253 && (
205 packet.Type == PacketType.CompletePingCheck || 212 packet.Type == PacketType.CompletePingCheck ||
206 packet.Type == PacketType.StartPingCheck 213 packet.Type == PacketType.StartPingCheck
207 ) ) 214 ))
208 return; 215 return;
209 if (debug < 252 && packet.Type == PacketType.PacketAck) 216 if (debug < 252 && packet.Type == PacketType.PacketAck)
210 return; 217 return;
211 218
212 if (debug > 1) { 219 if (debug > 1)
220 {
213 info = packet.ToString(); 221 info = packet.ToString();
214 } else { 222 }
223 else
224 {
215 info = packet.Type.ToString(); 225 info = packet.Type.ToString();
216 } 226 }
217 Console.WriteLine(m_circuitCode + ":" + direction + ": " + info); 227 Console.WriteLine(m_circuitCode + ":" + direction + ": " + info);
@@ -242,6 +252,7 @@ namespace OpenSim.Region.ClientStack
242 } 252 }
243 } 253 }
244 } 254 }
255
245 # endregion 256 # endregion
246 257
247 protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) 258 protected void CheckClientConnectivity(object sender, ElapsedEventArgs e)
@@ -251,7 +262,7 @@ namespace OpenSim.Region.ClientStack
251 probesWithNoIngressPackets++; 262 probesWithNoIngressPackets++;
252 if (probesWithNoIngressPackets > 30) 263 if (probesWithNoIngressPackets > 30)
253 { 264 {
254 if( OnConnectionClosed != null ) 265 if (OnConnectionClosed != null)
255 { 266 {
256 OnConnectionClosed(this); 267 OnConnectionClosed(this);
257 } 268 }
@@ -278,14 +289,16 @@ namespace OpenSim.Region.ClientStack
278 clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity); 289 clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity);
279 clientPingTimer.Enabled = true; 290 clientPingTimer.Enabled = true;
280 291
281 MainLog.Instance.Verbose("CLIENT","Adding viewer agent to scene"); 292 MainLog.Instance.Verbose("CLIENT", "Adding viewer agent to scene");
282 this.m_scene.AddNewClient(this, true); 293 m_scene.AddNewClient(this, true);
283 } 294 }
284 295
285 protected virtual void AuthUser() 296 protected virtual void AuthUser()
286 { 297 {
287 // AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.m_circuitCode.m_sessionId, cirpack.m_circuitCode.ID, cirpack.m_circuitCode.Code); 298 // AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.m_circuitCode.m_sessionId, cirpack.m_circuitCode.ID, cirpack.m_circuitCode.Code);
288 AuthenticateResponse sessionInfo = this.m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code); 299 AuthenticateResponse sessionInfo =
300 m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID,
301 cirpack.CircuitCode.Code);
289 if (!sessionInfo.Authorised) 302 if (!sessionInfo.Authorised)
290 { 303 {
291 //session/circuit not authorised 304 //session/circuit not authorised
@@ -297,27 +310,26 @@ namespace OpenSim.Region.ClientStack
297 MainLog.Instance.Notice("CLIENT", "Got authenticated connection from " + userEP.ToString()); 310 MainLog.Instance.Notice("CLIENT", "Got authenticated connection from " + userEP.ToString());
298 //session is authorised 311 //session is authorised
299 m_agentId = cirpack.CircuitCode.ID; 312 m_agentId = cirpack.CircuitCode.ID;
300 this.m_sessionId = cirpack.CircuitCode.SessionID; 313 m_sessionId = cirpack.CircuitCode.SessionID;
301 this.m_circuitCode = cirpack.CircuitCode.Code; 314 m_circuitCode = cirpack.CircuitCode.Code;
302 this.firstName = sessionInfo.LoginInfo.First; 315 firstName = sessionInfo.LoginInfo.First;
303 this.lastName = sessionInfo.LoginInfo.Last; 316 lastName = sessionInfo.LoginInfo.Last;
304 317
305 if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero) 318 if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero)
306 { 319 {
307 this.SecureSessionID = sessionInfo.LoginInfo.SecureSession; 320 SecureSessionID = sessionInfo.LoginInfo.SecureSession;
308 } 321 }
309 InitNewClient(); 322 InitNewClient();
310 323
311 ClientLoop(); 324 ClientLoop();
312 } 325 }
313 } 326 }
314 # endregion
315 327
328 # endregion
316 329
317 protected void KillThread() 330 protected void KillThread()
318 { 331 {
319 this.ClientThread.Abort(); 332 ClientThread.Abort();
320 } 333 }
321
322 } 334 }
323} 335} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/PacketServer.cs b/OpenSim/Region/ClientStack/PacketServer.cs
index 1b64602..f75536a 100644
--- a/OpenSim/Region/ClientStack/PacketServer.cs
+++ b/OpenSim/Region/ClientStack/PacketServer.cs
@@ -25,15 +25,11 @@
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28using System.Collections.Generic;
29using System.Net; 28using System.Net;
30using System.Net.Sockets; 29using System.Net.Sockets;
31using libsecondlife.Packets; 30using libsecondlife.Packets;
32using OpenSim.Framework; 31using OpenSim.Framework;
33using OpenSim.Framework.Communications.Cache; 32using OpenSim.Framework.Communications.Cache;
34using OpenSim.Framework;
35using OpenSim.Framework.Interfaces;
36using libsecondlife;
37 33
38namespace OpenSim.Region.ClientStack 34namespace OpenSim.Region.ClientStack
39{ 35{
@@ -56,10 +52,7 @@ namespace OpenSim.Region.ClientStack
56 52
57 public IScene LocalScene 53 public IScene LocalScene
58 { 54 {
59 set 55 set { m_scene = value; }
60 {
61 this.m_scene = value;
62 }
63 } 56 }
64 57
65 /// <summary> 58 /// <summary>
@@ -72,17 +65,21 @@ namespace OpenSim.Region.ClientStack
72 m_scene.ClientManager.InPacket(circuitCode, packet); 65 m_scene.ClientManager.InPacket(circuitCode, packet);
73 } 66 }
74 67
75 protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions) 68 protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack,
69 ClientManager clientManager, IScene scene, AssetCache assetCache,
70 PacketServer packServer, AgentCircuitManager authenSessions)
76 { 71 {
77 return new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions ); 72 return
73 new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions);
78 } 74 }
79 75
80 public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, AgentCircuitManager authenticateSessionsClass) 76 public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache,
77 AgentCircuitManager authenticateSessionsClass)
81 { 78 {
82 IClientAPI newuser; 79 IClientAPI newuser;
83 80
84 if (m_scene.ClientManager.TryGetClient(useCircuit.CircuitCode.Code, out newuser)) 81 if (m_scene.ClientManager.TryGetClient(useCircuit.CircuitCode.Code, out newuser))
85 { 82 {
86 return false; 83 return false;
87 } 84 }
88 else 85 else
@@ -104,7 +101,7 @@ namespace OpenSim.Region.ClientStack
104 { 101 {
105 client.SendLogoutPacket(); 102 client.SendLogoutPacket();
106 103
107 CloseClient( client ); 104 CloseClient(client);
108 } 105 }
109 106
110 107
@@ -117,7 +114,7 @@ namespace OpenSim.Region.ClientStack
117 /// <param name="circuitcode"></param> 114 /// <param name="circuitcode"></param>
118 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) 115 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
119 { 116 {
120 this.m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode); 117 m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode);
121 } 118 }
122 119
123 /// <summary> 120 /// <summary>
@@ -126,13 +123,13 @@ namespace OpenSim.Region.ClientStack
126 /// <param name="circuitcode"></param> 123 /// <param name="circuitcode"></param>
127 public virtual void CloseCircuit(uint circuitcode) 124 public virtual void CloseCircuit(uint circuitcode)
128 { 125 {
129 m_networkHandler.RemoveClientCircuit( circuitcode ); 126 m_networkHandler.RemoveClientCircuit(circuitcode);
130 m_scene.ClientManager.CloseAllAgents(circuitcode); 127 m_scene.ClientManager.CloseAllAgents(circuitcode);
131 } 128 }
132 129
133 public virtual void CloseClient( IClientAPI client ) 130 public virtual void CloseClient(IClientAPI client)
134 { 131 {
135 CloseCircuit( client.CircuitCode ); 132 CloseCircuit(client.CircuitCode);
136 } 133 }
137 } 134 }
138} 135} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
index 657af54..7551bff 100644
--- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs
+++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
@@ -28,17 +28,15 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Net; 30using System.Net;
31using libsecondlife;
31using OpenSim.Framework; 32using OpenSim.Framework;
33using OpenSim.Framework.Communications;
32using OpenSim.Framework.Communications.Cache; 34using OpenSim.Framework.Communications.Cache;
33using OpenSim.Framework.Console; 35using OpenSim.Framework.Console;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Servers; 36using OpenSim.Framework.Servers;
36using OpenSim.Framework;
37using OpenSim.Region.Physics.Manager;
38using OpenSim.Region.Environment; 37using OpenSim.Region.Environment;
39using libsecondlife;
40using OpenSim.Region.Environment.Scenes; 38using OpenSim.Region.Environment.Scenes;
41using OpenSim.Framework.Communications; 39using OpenSim.Region.Physics.Manager;
42 40
43namespace OpenSim.Region.ClientStack 41namespace OpenSim.Region.ClientStack
44{ 42{
@@ -67,9 +65,8 @@ namespace OpenSim.Region.ClientStack
67 m_startuptime = DateTime.Now; 65 m_startuptime = DateTime.Now;
68 } 66 }
69 67
70 virtual public void StartUp() 68 public virtual void StartUp()
71 { 69 {
72
73 ClientView.TerrainManager = new TerrainManager(new SecondLife()); 70 ClientView.TerrainManager = new TerrainManager(new SecondLife());
74 71
75 Initialize(); 72 Initialize();
@@ -116,7 +113,10 @@ namespace OpenSim.Region.ClientStack
116 scene.PhysScene.SetTerrain(scene.Terrain.GetHeights1D()); 113 scene.PhysScene.SetTerrain(scene.Terrain.GetHeights1D());
117 114
118 //Master Avatar Setup 115 //Master Avatar Setup
119 UserProfileData masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName, scene.RegionInfo.MasterAvatarSandboxPassword); 116 UserProfileData masterAvatar =
117 m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName,
118 scene.RegionInfo.MasterAvatarLastName,
119 scene.RegionInfo.MasterAvatarSandboxPassword);
120 if (masterAvatar != null) 120 if (masterAvatar != null)
121 { 121 {
122 m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]"); 122 m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]");
@@ -126,7 +126,7 @@ namespace OpenSim.Region.ClientStack
126 else 126 else
127 { 127 {
128 m_log.Verbose("PARCEL", "No master avatar found, using null."); 128 m_log.Verbose("PARCEL", "No master avatar found, using null.");
129 scene.RegionInfo.MasterAvatarAssignedUUID = libsecondlife.LLUUID.Zero; 129 scene.RegionInfo.MasterAvatarAssignedUUID = LLUUID.Zero;
130 //TODO: Load parcels from storageManager 130 //TODO: Load parcels from storageManager
131 } 131 }
132 132
@@ -138,8 +138,7 @@ namespace OpenSim.Region.ClientStack
138 return scene; 138 return scene;
139 } 139 }
140 140
141 protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager); 141 protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
142 142 AgentCircuitManager circuitManager);
143
144 } 143 }
145} 144} \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs
index 584b80c..e5965cb 100644
--- a/OpenSim/Region/ClientStack/UDPServer.cs
+++ b/OpenSim/Region/ClientStack/UDPServer.cs
@@ -32,13 +32,10 @@ using System.Net.Sockets;
32using libsecondlife.Packets; 32using libsecondlife.Packets;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Communications.Cache; 34using OpenSim.Framework.Communications.Cache;
35using OpenSim.Framework;
36using OpenSim.Framework.Console; 35using OpenSim.Framework.Console;
37using OpenSim.Framework.Interfaces;
38 36
39namespace OpenSim.Region.ClientStack 37namespace OpenSim.Region.ClientStack
40{ 38{
41
42 public class UDPServer : ClientStackNetworkHandler 39 public class UDPServer : ClientStackNetworkHandler
43 { 40 {
44 protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>(); 41 protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
@@ -59,22 +56,16 @@ namespace OpenSim.Region.ClientStack
59 56
60 public PacketServer PacketServer 57 public PacketServer PacketServer
61 { 58 {
62 get 59 get { return m_packetServer; }
63 { 60 set { m_packetServer = value; }
64 return m_packetServer;
65 }
66 set
67 {
68 m_packetServer = value;
69 }
70 } 61 }
71 62
72 public IScene LocalScene 63 public IScene LocalScene
73 { 64 {
74 set 65 set
75 { 66 {
76 this.m_localScene = value; 67 m_localScene = value;
77 this.m_packetServer.LocalScene = this.m_localScene; 68 m_packetServer.LocalScene = m_localScene;
78 } 69 }
79 } 70 }
80 71
@@ -85,10 +76,10 @@ namespace OpenSim.Region.ClientStack
85 public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass) 76 public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass)
86 { 77 {
87 listenPort = port; 78 listenPort = port;
88 this.m_assetCache = assetCache; 79 m_assetCache = assetCache;
89 this.m_log = console; 80 m_log = console;
90 this.m_authenticateSessionsClass = authenticateClass; 81 m_authenticateSessionsClass = authenticateClass;
91 this.CreatePacketServer(); 82 CreatePacketServer();
92 } 83 }
93 84
94 protected virtual void CreatePacketServer() 85 protected virtual void CreatePacketServer()
@@ -99,7 +90,7 @@ namespace OpenSim.Region.ClientStack
99 protected virtual void OnReceivedData(IAsyncResult result) 90 protected virtual void OnReceivedData(IAsyncResult result)
100 { 91 {
101 ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); 92 ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
102 epSender = (EndPoint)ipeSender; 93 epSender = (EndPoint) ipeSender;
103 Packet packet = null; 94 Packet packet = null;
104 95
105 int numBytes; 96 int numBytes;
@@ -108,7 +99,7 @@ namespace OpenSim.Region.ClientStack
108 { 99 {
109 numBytes = Server.EndReceiveFrom(result, ref epSender); 100 numBytes = Server.EndReceiveFrom(result, ref epSender);
110 } 101 }
111 catch (System.Net.Sockets.SocketException e) 102 catch (SocketException e)
112 { 103 {
113 // TODO : Actually only handle those states that we have control over, re-throw everything else, 104 // TODO : Actually only handle those states that we have control over, re-throw everything else,
114 // TODO: implement cases as we encounter them. 105 // TODO: implement cases as we encounter them.
@@ -134,7 +125,7 @@ namespace OpenSim.Region.ClientStack
134 if (clientCircuits.TryGetValue(epSender, out circuit)) 125 if (clientCircuits.TryGetValue(epSender, out circuit))
135 { 126 {
136 //if so then send packet to the packetserver 127 //if so then send packet to the packetserver
137 this.m_packetServer.InPacket(circuit, packet); 128 m_packetServer.InPacket(circuit, packet);
138 } 129 }
139 else if (packet.Type == PacketType.UseCircuitCode) 130 else if (packet.Type == PacketType.UseCircuitCode)
140 { 131 {
@@ -142,7 +133,8 @@ namespace OpenSim.Region.ClientStack
142 AddNewClient(packet); 133 AddNewClient(packet);
143 } 134 }
144 else 135 else
145 { // invalid client 136 {
137 // invalid client
146 m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString()); 138 m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString());
147 } 139 }
148 140
@@ -160,10 +152,10 @@ namespace OpenSim.Region.ClientStack
160 152
161 protected virtual void AddNewClient(Packet packet) 153 protected virtual void AddNewClient(Packet packet)
162 { 154 {
163 UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; 155 UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet;
164 this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); 156 clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
165 157
166 this.PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass); 158 PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass);
167 } 159 }
168 160
169 public void ServerListener() 161 public void ServerListener()
@@ -177,24 +169,24 @@ namespace OpenSim.Region.ClientStack
177 m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen"); 169 m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen");
178 170
179 ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); 171 ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
180 epSender = (EndPoint)ipeSender; 172 epSender = (EndPoint) ipeSender;
181 ReceivedData = new AsyncCallback(this.OnReceivedData); 173 ReceivedData = new AsyncCallback(OnReceivedData);
182 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); 174 Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
183 175
184 m_log.Status("SERVER", "Listening..."); 176 m_log.Status("SERVER", "Listening...");
185
186 } 177 }
187 178
188 public virtual void RegisterPacketServer(PacketServer server) 179 public virtual void RegisterPacketServer(PacketServer server)
189 { 180 {
190 this.m_packetServer = server; 181 m_packetServer = server;
191 } 182 }
192 183
193 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)//EndPoint packetSender) 184 public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
185 //EndPoint packetSender)
194 { 186 {
195 // find the endpoint for this circuit 187 // find the endpoint for this circuit
196 EndPoint sendto = null; 188 EndPoint sendto = null;
197 foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) 189 foreach (KeyValuePair<EndPoint, uint> p in clientCircuits)
198 { 190 {
199 if (p.Value == circuitcode) 191 if (p.Value == circuitcode)
200 { 192 {
@@ -205,22 +197,20 @@ namespace OpenSim.Region.ClientStack
205 if (sendto != null) 197 if (sendto != null)
206 { 198 {
207 //we found the endpoint so send the packet to it 199 //we found the endpoint so send the packet to it
208 this.Server.SendTo(buffer, size, flags, sendto); 200 Server.SendTo(buffer, size, flags, sendto);
209 } 201 }
210 } 202 }
211 203
212 public virtual void RemoveClientCircuit(uint circuitcode) 204 public virtual void RemoveClientCircuit(uint circuitcode)
213 { 205 {
214 foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) 206 foreach (KeyValuePair<EndPoint, uint> p in clientCircuits)
215 { 207 {
216 if (p.Value == circuitcode) 208 if (p.Value == circuitcode)
217 { 209 {
218 this.clientCircuits.Remove(p.Key); 210 clientCircuits.Remove(p.Key);
219 break; 211 break;
220 } 212 }
221 } 213 }
222 } 214 }
223
224
225 } 215 }
226} \ No newline at end of file 216} \ No newline at end of file