aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/ClientView.API.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/ClientView.API.cs')
-rw-r--r--OpenSim/Region/ClientStack/ClientView.API.cs122
1 files changed, 99 insertions, 23 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs
index 225e906..d5b6b52 100644
--- a/OpenSim/Region/ClientStack/ClientView.API.cs
+++ b/OpenSim/Region/ClientStack/ClientView.API.cs
@@ -35,6 +35,7 @@ using libsecondlife.Packets;
35using OpenSim.Framework.Console; 35using OpenSim.Framework.Console;
36using OpenSim.Framework.Interfaces; 36using OpenSim.Framework.Interfaces;
37using OpenSim.Framework.Types; 37using OpenSim.Framework.Types;
38using OpenSim.Framework.Data;
38 39
39namespace OpenSim.Region.ClientStack 40namespace OpenSim.Region.ClientStack
40{ 41{
@@ -76,7 +77,7 @@ namespace OpenSim.Region.ClientStack
76 public event GenericCall6 OnRemoveAvatar; 77 public event GenericCall6 OnRemoveAvatar;
77 public event RequestMapBlocks OnRequestMapBlocks; 78 public event RequestMapBlocks OnRequestMapBlocks;
78 public event TeleportLocationRequest OnTeleportLocationRequest; 79 public event TeleportLocationRequest OnTeleportLocationRequest;
79 80
80 public event UUIDNameRequest OnNameFromUUIDRequest; 81 public event UUIDNameRequest OnNameFromUUIDRequest;
81 82
82 public event ParcelPropertiesRequest OnParcelPropertiesRequest; 83 public event ParcelPropertiesRequest OnParcelPropertiesRequest;
@@ -188,7 +189,7 @@ namespace OpenSim.Region.ClientStack
188 mov.Data.RegionHandle = regInfo.RegionHandle; 189 mov.Data.RegionHandle = regInfo.RegionHandle;
189 mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this 190 mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this
190 191
191 if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) 192 if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0))
192 { 193 {
193 mov.Data.Position = this.startpos; 194 mov.Data.Position = this.startpos;
194 } 195 }
@@ -325,11 +326,11 @@ namespace OpenSim.Region.ClientStack
325 /// <param name="neighbourHandle"></param> 326 /// <param name="neighbourHandle"></param>
326 /// <param name="neighbourIP"></param> 327 /// <param name="neighbourIP"></param>
327 /// <param name="neighbourPort"></param> 328 /// <param name="neighbourPort"></param>
328 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint ) 329 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint)
329 { 330 {
330 IPAddress neighbourIP = neighbourEndPoint.Address; 331 IPAddress neighbourIP = neighbourEndPoint.Address;
331 ushort neighbourPort = (ushort) neighbourEndPoint.Port; 332 ushort neighbourPort = (ushort)neighbourEndPoint.Port;
332 333
333 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); 334 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket();
334 enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); 335 enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock();
335 enablesimpacket.SimulatorInfo.Handle = neighbourHandle; 336 enablesimpacket.SimulatorInfo.Handle = neighbourHandle;
@@ -405,7 +406,7 @@ namespace OpenSim.Region.ClientStack
405 mapReply.Data[i].Name = _enc.GetBytes(mapBlocks[i].Name); 406 mapReply.Data[i].Name = _enc.GetBytes(mapBlocks[i].Name);
406 mapReply.Data[i].RegionFlags = mapBlocks[i].RegionFlags; 407 mapReply.Data[i].RegionFlags = mapBlocks[i].RegionFlags;
407 mapReply.Data[i].Access = mapBlocks[i].Access; 408 mapReply.Data[i].Access = mapBlocks[i].Access;
408 mapReply.Data[i].Agents = mapBlocks[i].Agents; 409 mapReply.Data[i].Agents = mapBlocks[i].Agents;
409 } 410 }
410 this.OutPacket(mapReply); 411 this.OutPacket(mapReply);
411 } 412 }
@@ -421,7 +422,7 @@ namespace OpenSim.Region.ClientStack
421 OutPacket(tpLocal); 422 OutPacket(tpLocal);
422 } 423 }
423 424
424 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags) 425 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags)
425 { 426 {
426 TeleportFinishPacket teleport = new TeleportFinishPacket(); 427 TeleportFinishPacket teleport = new TeleportFinishPacket();
427 teleport.Info.AgentID = this.AgentID; 428 teleport.Info.AgentID = this.AgentID;
@@ -439,7 +440,7 @@ namespace OpenSim.Region.ClientStack
439 teleport.Info.SimIP = ip; 440 teleport.Info.SimIP = ip;
440 teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; 441 teleport.Info.SimPort = (ushort)newRegionEndPoint.Port;
441 teleport.Info.LocationID = 4; 442 teleport.Info.LocationID = 4;
442 teleport.Info.TeleportFlags = 1 << 4; 443 teleport.Info.TeleportFlags = 1 << 4;
443 OutPacket(teleport); 444 OutPacket(teleport);
444 } 445 }
445 446
@@ -492,6 +493,81 @@ namespace OpenSim.Region.ClientStack
492 OutPacket(kill); 493 OutPacket(kill);
493 } 494 }
494 495
496 public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items)
497 {
498 Encoding enc = Encoding.ASCII;
499 uint FULL_MASK_PERMISSIONS = 2147483647;
500 InventoryDescendentsPacket descend = new InventoryDescendentsPacket();
501 descend.AgentData.AgentID = this.AgentId;
502 descend.AgentData.OwnerID = ownerID;
503 descend.AgentData.FolderID = folderID;
504 descend.AgentData.Descendents = items.Count;
505 descend.AgentData.Version = 0;
506 descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count];
507 int i = 0;
508 foreach (InventoryItemBase item in items)
509 {
510 descend.ItemData[i] = new InventoryDescendentsPacket.ItemDataBlock();
511 descend.ItemData[i].ItemID = item.inventoryID;
512 descend.ItemData[i].AssetID = item.assetID;
513 descend.ItemData[i].CreatorID = item.creatorsID;
514 descend.ItemData[i].BaseMask = FULL_MASK_PERMISSIONS;
515 descend.ItemData[i].CreationDate = 1000;
516 descend.ItemData[i].Description = enc.GetBytes(item.inventoryDescription+ "\0");
517 descend.ItemData[i].EveryoneMask = FULL_MASK_PERMISSIONS;
518 descend.ItemData[i].Flags = 1;
519 descend.ItemData[i].FolderID = item.parentFolderID;
520 descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
521 descend.ItemData[i].GroupMask = FULL_MASK_PERMISSIONS;
522 descend.ItemData[i].InvType = (sbyte)item.type;
523 descend.ItemData[i].Name = enc.GetBytes(item.inventoryName+ "\0");
524 descend.ItemData[i].NextOwnerMask = FULL_MASK_PERMISSIONS;
525 descend.ItemData[i].OwnerID = item.avatarID;
526 descend.ItemData[i].OwnerMask = FULL_MASK_PERMISSIONS;
527 descend.ItemData[i].SalePrice = 0;
528 descend.ItemData[i].SaleType = 0;
529 descend.ItemData[i].Type = (sbyte)item.type;
530 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);
531
532 i++;
533 }
534
535 this.OutPacket(descend);
536
537 }
538
539 public void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item)
540 {
541 Encoding enc = Encoding.ASCII;
542 uint FULL_MASK_PERMISSIONS = 2147483647;
543 FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket();
544 inventoryReply.AgentData.AgentID = this.AgentId;
545 inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1];
546 inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock();
547 inventoryReply.InventoryData[0].ItemID = item.inventoryID;
548 inventoryReply.InventoryData[0].AssetID = item.assetID;
549 inventoryReply.InventoryData[0].CreatorID = item.creatorsID;
550 inventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
551 inventoryReply.InventoryData[0].CreationDate = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
552 inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0");
553 inventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
554 inventoryReply.InventoryData[0].Flags = 0;
555 inventoryReply.InventoryData[0].FolderID = item.parentFolderID;
556 inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
557 inventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
558 inventoryReply.InventoryData[0].InvType = (sbyte)item.type;
559 inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0");
560 inventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
561 inventoryReply.InventoryData[0].OwnerID = item.avatarID;
562 inventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
563 inventoryReply.InventoryData[0].SalePrice = 0;
564 inventoryReply.InventoryData[0].SaleType = 0;
565 inventoryReply.InventoryData[0].Type = (sbyte)item.type;
566 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);
567
568 this.OutPacket(inventoryReply);
569 }
570
495 571
496 #region Appearance/ Wearables Methods 572 #region Appearance/ Wearables Methods
497 573
@@ -545,20 +621,20 @@ namespace OpenSim.Region.ClientStack
545 OutPacket(avp); 621 OutPacket(avp);
546 } 622 }
547 623
548 public void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId) 624 public void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId)
549 { 625 {
550 AvatarAnimationPacket ani = new AvatarAnimationPacket(); 626 AvatarAnimationPacket ani = new AvatarAnimationPacket();
551 ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1]; 627 ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1];
552 ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock(); 628 ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock();
553 ani.AnimationSourceList[0].ObjectID = sourceAgentId; 629 ani.AnimationSourceList[0].ObjectID = sourceAgentId;
554 ani.Sender = new AvatarAnimationPacket.SenderBlock(); 630 ani.Sender = new AvatarAnimationPacket.SenderBlock();
555 ani.Sender.ID = sourceAgentId; 631 ani.Sender.ID = sourceAgentId;
556 ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1]; 632 ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1];
557 ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); 633 ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock();
558 ani.AnimationList[0].AnimID = animID; 634 ani.AnimationList[0].AnimID = animID;
559 ani.AnimationList[0].AnimSequenceID = seq; 635 ani.AnimationList[0].AnimSequenceID = seq;
560 this.OutPacket(ani); 636 this.OutPacket(ani);
561 } 637 }
562 638
563 #endregion 639 #endregion
564 640
@@ -674,7 +750,7 @@ namespace OpenSim.Region.ClientStack
674 /// </summary> 750 /// </summary>
675 /// <param name="primData"></param> 751 /// <param name="primData"></param>
676 /// <param name="pos"></param> 752 /// <param name="pos"></param>
677 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID , uint flags) 753 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags)
678 { 754 {
679 ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); 755 ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
680 outPacket.RegionData.RegionHandle = regionHandle; 756 outPacket.RegionData.RegionHandle = regionHandle;