aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorBlueWall2012-01-20 23:50:37 -0500
committerBlueWall2012-01-20 23:50:37 -0500
commitb6f3de5028ab9a288f60b020a0dffda079dc550d (patch)
tree57505b2486d98bfd379a9ce0ada9c32f0ddedf6c /OpenSim/Region
parentAdd "image queues clear <first-name> <last-name>" console command (diff)
downloadopensim-SC-b6f3de5028ab9a288f60b020a0dffda079dc550d.zip
opensim-SC-b6f3de5028ab9a288f60b020a0dffda079dc550d.tar.gz
opensim-SC-b6f3de5028ab9a288f60b020a0dffda079dc550d.tar.bz2
opensim-SC-b6f3de5028ab9a288f60b020a0dffda079dc550d.tar.xz
Telehub Support:
Support for viewer side of telehub management. Can manupulate Telehubs and SpawnPoints from the viewer estate managemnt tools. This is a work in progress and does not yet persist or affect teleport routing.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs39
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs65
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/TelehubManager.cs130
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs6
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs5
5 files changed, 241 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 4ba441e..a94fb20 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -219,6 +219,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
219 public event BakeTerrain OnBakeTerrain; 219 public event BakeTerrain OnBakeTerrain;
220 public event RequestTerrain OnUploadTerrain; 220 public event RequestTerrain OnUploadTerrain;
221 public event EstateChangeInfo OnEstateChangeInfo; 221 public event EstateChangeInfo OnEstateChangeInfo;
222 public event EstateManageTelehub OnEstateManageTelehub;
222 public event EstateRestartSimRequest OnEstateRestartSimRequest; 223 public event EstateRestartSimRequest OnEstateRestartSimRequest;
223 public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest; 224 public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest;
224 public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest; 225 public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest;
@@ -4482,6 +4483,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4482 OutPacket(packet, ThrottleOutPacketType.Task); 4483 OutPacket(packet, ThrottleOutPacketType.Task);
4483 } 4484 }
4484 4485
4486 public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint)
4487 {
4488 TelehubInfoPacket packet = (TelehubInfoPacket)PacketPool.Instance.GetPacket(PacketType.TelehubInfo);
4489 packet.TelehubBlock.ObjectID = ObjectID;
4490 packet.TelehubBlock.ObjectName = Utils.StringToBytes(ObjectName);
4491 packet.TelehubBlock.TelehubPos = ObjectPos;
4492 packet.TelehubBlock.TelehubRot = ObjectRot;
4493
4494 packet.SpawnPointBlock = new TelehubInfoPacket.SpawnPointBlockBlock[SpawnPoint.Count];
4495 for (int n = 0; n < SpawnPoint.Count; n++)
4496 {
4497 packet.SpawnPointBlock[n] = new TelehubInfoPacket.SpawnPointBlockBlock{SpawnPointPos = SpawnPoint[n]};
4498 }
4499
4500 OutPacket(packet, ThrottleOutPacketType.Task);
4501 }
4502
4485 #endregion 4503 #endregion
4486 4504
4487 #region Land Data Sending Methods 4505 #region Land Data Sending Methods
@@ -8920,7 +8938,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8920 private bool HandleEstateOwnerMessage(IClientAPI sender, Packet Pack) 8938 private bool HandleEstateOwnerMessage(IClientAPI sender, Packet Pack)
8921 { 8939 {
8922 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; 8940 EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
8923 //m_log.Debug(messagePacket.ToString()); 8941 // m_log.InfoFormat("[LLCLIENTVIEW]: Packet: {0}", Utils.BytesToString(messagePacket.MethodData.Method));
8924 GodLandStatRequest handlerLandStatRequest; 8942 GodLandStatRequest handlerLandStatRequest;
8925 8943
8926 #region Packet Session and User Check 8944 #region Packet Session and User Check
@@ -9219,6 +9237,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9219 } 9237 }
9220 return true; 9238 return true;
9221 9239
9240 case "telehub":
9241 if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
9242 {
9243 UUID invoice = messagePacket.MethodData.Invoice;
9244 UUID SenderID = messagePacket.AgentData.AgentID;
9245 UInt32 param1 = Convert.ToUInt32(Utils.BytesToString(messagePacket.ParamList[1].Parameter));
9246
9247 string command = (string)Utils.BytesToString(messagePacket.ParamList[0].Parameter);
9248
9249 EstateManageTelehub handlerEstateManageTelehub = OnEstateManageTelehub;
9250 if (handlerEstateManageTelehub != null)
9251 {
9252 handlerEstateManageTelehub(this, invoice, SenderID, command, param1);
9253 }
9254 }
9255 return true;
9256
9222 default: 9257 default:
9223 m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket); 9258 m_log.Error("EstateOwnerMessage: Unknown method requested\n" + messagePacket);
9224 return true; 9259 return true;
@@ -9230,8 +9265,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
9230 //lsrp.RequestData.ReportType; // 1 = colliders, 0 = scripts 9265 //lsrp.RequestData.ReportType; // 1 = colliders, 0 = scripts
9231 //lsrp.RequestData.RequestFlags; 9266 //lsrp.RequestData.RequestFlags;
9232 //lsrp.RequestData.Filter; 9267 //lsrp.RequestData.Filter;
9233
9234// return true;
9235 } 9268 }
9236 9269
9237 private bool HandleRequestRegionInfo(IClientAPI sender, Packet Pack) 9270 private bool HandleRequestRegionInfo(IClientAPI sender, Packet Pack)
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 58d9455..0d4df6c 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -53,6 +53,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
53 protected EstateManagementCommands m_commands; 53 protected EstateManagementCommands m_commands;
54 54
55 private EstateTerrainXferHandler TerrainUploader; 55 private EstateTerrainXferHandler TerrainUploader;
56 private TelehubManager m_Telehub;
56 57
57 public event ChangeDelegate OnRegionInfoChange; 58 public event ChangeDelegate OnRegionInfoChange;
58 public event ChangeDelegate OnEstateInfoChange; 59 public event ChangeDelegate OnEstateInfoChange;
@@ -599,6 +600,65 @@ namespace OpenSim.Region.CoreModules.World.Estate
599 } 600 }
600 } 601 }
601 602
603 private void handleOnEstateManageTelehub (IClientAPI client, UUID invoice, UUID senderID, string cmd, uint param1)
604 {
605 uint ObjectLocalID;
606 SceneObjectPart part;
607 // UUID EstateID = Scene.RegionInfo.EstateSettings.EstateID;
608 TelehubManager.Telehub telehub;
609
610 switch (cmd)
611 {
612 case "info ui":
613 // Send info:
614 if (m_Telehub.HasTelehub)
615 {
616 telehub = m_Telehub.TelehubVals();
617 client.SendTelehubInfo(telehub.ObjectID, telehub.ObjectName, telehub.ObjectPosition,
618 telehub.ObjectRotation, telehub.SpawnPoint);
619 }
620 else
621 {
622 return;
623 }
624 break;
625
626 case "connect":
627 // Add the Telehub
628 part = Scene.GetSceneObjectPart((uint)param1);
629 telehub = m_Telehub.Connect(part);
630 client.SendTelehubInfo(telehub.ObjectID, telehub.ObjectName, telehub.ObjectPosition,
631 telehub.ObjectRotation, telehub.SpawnPoint);
632 break;
633
634 case "delete":
635 // Disconnect Telehub
636 part = Scene.GetSceneObjectPart((uint)param1);
637 telehub = m_Telehub.DisConnect(part);
638 client.SendTelehubInfo(telehub.ObjectID, telehub.ObjectName, telehub.ObjectPosition,
639 telehub.ObjectRotation, telehub.SpawnPoint);
640 break;
641
642 case "spawnpoint add":
643 // Add SpawnPoint to the Telehub
644 part = Scene.GetSceneObjectPart((uint)param1);
645 telehub = m_Telehub.AddSpawnPoint(part.AbsolutePosition);
646 client.SendTelehubInfo(telehub.ObjectID, telehub.ObjectName, telehub.ObjectPosition,
647 telehub.ObjectRotation, telehub.SpawnPoint);
648 break;
649
650 case "spawnpoint remove":
651 // Remove SpawnPoint from Telehub
652 telehub = m_Telehub.RemoveSpawnPoint((int)param1);
653 client.SendTelehubInfo(telehub.ObjectID, telehub.ObjectName, telehub.ObjectPosition,
654 telehub.ObjectRotation, telehub.SpawnPoint);
655 break;
656
657 default:
658 break;
659 }
660 }
661
602 private void SendSimulatorBlueBoxMessage( 662 private void SendSimulatorBlueBoxMessage(
603 IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message) 663 IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message)
604 { 664 {
@@ -1055,7 +1115,9 @@ namespace OpenSim.Region.CoreModules.World.Estate
1055 Scene.RegisterModuleInterface<IEstateModule>(this); 1115 Scene.RegisterModuleInterface<IEstateModule>(this);
1056 Scene.EventManager.OnNewClient += EventManager_OnNewClient; 1116 Scene.EventManager.OnNewClient += EventManager_OnNewClient;
1057 Scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; 1117 Scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight;
1058 1118
1119 m_Telehub = new TelehubManager(scene);
1120
1059 m_commands = new EstateManagementCommands(this); 1121 m_commands = new EstateManagementCommands(this);
1060 m_commands.Initialise(); 1122 m_commands.Initialise();
1061 } 1123 }
@@ -1109,6 +1171,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
1109 client.OnEstateRestartSimRequest += handleEstateRestartSimRequest; 1171 client.OnEstateRestartSimRequest += handleEstateRestartSimRequest;
1110 client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest; 1172 client.OnEstateChangeCovenantRequest += handleChangeEstateCovenantRequest;
1111 client.OnEstateChangeInfo += handleEstateChangeInfo; 1173 client.OnEstateChangeInfo += handleEstateChangeInfo;
1174 client.OnEstateManageTelehub += handleOnEstateManageTelehub;
1112 client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest; 1175 client.OnUpdateEstateAccessDeltaRequest += handleEstateAccessDeltaRequest;
1113 client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage; 1176 client.OnSimulatorBlueBoxMessageRequest += SendSimulatorBlueBoxMessage;
1114 client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage; 1177 client.OnEstateBlueBoxMessageRequest += SendEstateBlueBoxMessage;
diff --git a/OpenSim/Region/CoreModules/World/Estate/TelehubManager.cs b/OpenSim/Region/CoreModules/World/Estate/TelehubManager.cs
new file mode 100644
index 0000000..c99c9ba
--- /dev/null
+++ b/OpenSim/Region/CoreModules/World/Estate/TelehubManager.cs
@@ -0,0 +1,130 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using OpenMetaverse;
30using System.Collections.Generic;
31using OpenSim.Framework;
32using OpenSim.Region.Framework.Scenes;
33
34namespace OpenSim.Region.CoreModules.World.Estate
35{
36 public class TelehubManager
37 {
38 public struct Telehub
39 {
40 public UUID ObjectID;
41 public string ObjectName;
42 public Vector3 ObjectPosition;
43 public Quaternion ObjectRotation;
44 public List<Vector3> SpawnPoint;
45 };
46
47 private UUID ObjectID;
48 private string ObjectName;
49 private Vector3 ObjectPosition;
50 Quaternion ObjectRotation;
51 List<Vector3> SpawnPoint = new List<Vector3>();
52 UUID EstateID;
53 bool m_HasTelehub = false;
54 Scene m_Scene;
55 // This will get an option...
56 Vector3 InitialSpawnPoint = new Vector3(0.0f,0.0f,-3.0f);
57
58 public bool HasTelehub
59 {
60 get { return m_HasTelehub; }
61 }
62
63 public TelehubManager(Scene scene)
64 {
65 m_Scene = scene;
66 }
67
68 // Fill our Telehub struct with values
69 public Telehub TelehubVals()
70 {
71 Telehub telehub = new Telehub();
72
73 telehub.ObjectID = ObjectID;
74 telehub.ObjectName = ObjectName;
75 telehub.ObjectPosition = ObjectPosition;
76 telehub.ObjectRotation = ObjectRotation;
77 telehub.SpawnPoint = SpawnPoint;
78 return telehub;
79 }
80
81 // Connect the Telehub
82 public Telehub Connect(SceneObjectPart part)
83 {
84 ObjectID = part.UUID;
85 ObjectName = part.Name;
86 ObjectPosition = part.AbsolutePosition;
87 ObjectRotation = part.GetWorldRotation();
88 // Clear this for now
89 SpawnPoint.Clear();
90 SpawnPoint.Add(InitialSpawnPoint);
91 m_HasTelehub = true;
92
93 return TelehubVals();
94 }
95
96 // Disconnect the Telehub
97 public Telehub DisConnect(SceneObjectPart part)
98 {
99 ObjectID = UUID.Zero;
100 ObjectName = String.Empty;
101 ObjectPosition = Vector3.Zero;
102 ObjectRotation = Quaternion.Identity;
103 SpawnPoint.Clear();
104 m_HasTelehub = false;
105
106 return TelehubVals();
107 }
108
109 // Add a SpawnPoint to the Telehub
110 public Telehub AddSpawnPoint(Vector3 point)
111 {
112 float dist = (float) Util.GetDistanceTo(ObjectPosition, point);
113
114 Vector3 nvec = Util.GetNormalizedVector(point - ObjectPosition);
115
116 Vector3 spoint = nvec * dist;
117
118 SpawnPoint.Add(spoint);
119 return TelehubVals();
120 }
121
122 // Remove a SpawnPoint from the Telehub
123 public Telehub RemoveSpawnPoint(int spawnpoint)
124 {
125 SpawnPoint.RemoveAt(spawnpoint);
126
127 return TelehubVals();
128 }
129 }
130} \ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 32de85f..bbf3729 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -658,6 +658,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
658 public event ModifyTerrain OnModifyTerrain; 658 public event ModifyTerrain OnModifyTerrain;
659 public event BakeTerrain OnBakeTerrain; 659 public event BakeTerrain OnBakeTerrain;
660 public event EstateChangeInfo OnEstateChangeInfo; 660 public event EstateChangeInfo OnEstateChangeInfo;
661 public event EstateManageTelehub OnEstateManageTelehub;
661 public event SetAppearance OnSetAppearance; 662 public event SetAppearance OnSetAppearance;
662 public event AvatarNowWearing OnAvatarNowWearing; 663 public event AvatarNowWearing OnAvatarNowWearing;
663 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv; 664 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
@@ -1530,6 +1531,11 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1530 1531
1531 } 1532 }
1532 1533
1534 public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint)
1535 {
1536
1537 }
1538
1533 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags) 1539 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
1534 { 1540 {
1535 1541
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index 5f4f937..6a6c4c3 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -32,6 +32,7 @@ using OpenMetaverse;
32using OpenMetaverse.Packets; 32using OpenMetaverse.Packets;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Region.Framework.Scenes; 34using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.CoreModules.World.Estate;
35 36
36namespace OpenSim.Region.OptionalModules.World.NPC 37namespace OpenSim.Region.OptionalModules.World.NPC
37{ 38{
@@ -334,6 +335,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
334 public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest; 335 public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
335 public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest; 336 public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest;
336 public event EstateChangeInfo OnEstateChangeInfo; 337 public event EstateChangeInfo OnEstateChangeInfo;
338 public event EstateManageTelehub OnEstateManageTelehub;
337 public event ScriptReset OnScriptReset; 339 public event ScriptReset OnScriptReset;
338 public event GetScriptRunning OnGetScriptRunning; 340 public event GetScriptRunning OnGetScriptRunning;
339 public event SetScriptRunning OnSetScriptRunning; 341 public event SetScriptRunning OnSetScriptRunning;
@@ -923,6 +925,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC
923 public void SendEstateCovenantInformation(UUID covenant) 925 public void SendEstateCovenantInformation(UUID covenant)
924 { 926 {
925 } 927 }
928 public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint)
929 {
930 }
926 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) 931 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner)
927 { 932 {
928 } 933 }