diff --git a/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs b/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs index 9767185f12..2b8c5caa7a 100644 --- a/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs +++ b/Common/OpenGrid.Framework.Communications/RegionServerCommsManager.cs @@ -31,7 +31,7 @@ namespace OpenGrid.Framework.Communications /// /// /// - public virtual IRegionCommsHost RegisterRegion(RegionInfo regionInfo) + public virtual RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) { return null; } diff --git a/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs b/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs index 32f4718945..57049fc673 100644 --- a/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs +++ b/Common/OpenGrid.Framework.Communications/TestLocalCommsManager.cs @@ -12,28 +12,30 @@ namespace OpenGrid.Framework.Communications public class TestLocalCommsManager : RegionServerCommsManager { protected Dictionary regions = new Dictionary(); + protected Dictionary regionHosts = new Dictionary(); public TestLocalCommsManager() { } - /// - /// - /// - /// - public override RegionInfo LoadRegionConfigFromGridServer(LLUUID regionID) - { - return null; - } - /// /// /// /// /// - public override IRegionCommsHost RegisterRegion(RegionInfo regionInfo) + public override RegionCommsHostBase RegisterRegion(RegionInfo regionInfo) { + if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle)) + { + this.regions.Add((uint)regionInfo.RegionHandle, regionInfo); + RegionCommsHostBase regionHost = new RegionCommsHostBase(); + this.regionHosts.Add((uint)regionInfo.RegionHandle, regionHost); + + return regionHost; + } + + //already in our list of regions so for now lets return null return null; } @@ -59,19 +61,30 @@ namespace OpenGrid.Framework.Communications /// /// /// + /// + /// /// - public override bool AvatarCrossingToRegion() + public bool AddNewSession(uint regionHandle, Login loginData) { - return false; - } + AgentCircuitData agent = new AgentCircuitData(); + agent.AgentID = loginData.Agent; + agent.firstname = loginData.First; + agent.lastname = loginData.Last; + agent.SessionID = loginData.Session; + agent.SecureSessionID = loginData.SecureSession; + agent.circuitcode = loginData.CircuitCode; + agent.BaseFolder = loginData.BaseFolder; + agent.InventoryFolder = loginData.InventoryFolder; + agent.startpos = new LLVector3(128, 128, 70); - /// - /// - /// - /// - public override IList RequestMapBlocks() - { - return null; + if (this.regionHosts.ContainsKey((uint)regionHandle)) + { + this.regionHosts[(uint)regionHandle].TriggerExpectUser(agent); + return true; + } + + // region not found + return false; } } } diff --git a/Common/OpenSim.Framework/IRegionCommsHost.cs b/Common/OpenSim.Framework/IRegionCommsHost.cs index 815bd8e81a..d115bb7438 100644 --- a/Common/OpenSim.Framework/IRegionCommsHost.cs +++ b/Common/OpenSim.Framework/IRegionCommsHost.cs @@ -6,7 +6,7 @@ using OpenSim.Framework.Types; namespace OpenSim.Framework { - public delegate void ExpectUserDelegate(); + public delegate void ExpectUserDelegate(AgentCircuitData agent); public delegate void UpdateNeighbours(List neighbours); public interface IRegionCommsHost diff --git a/Common/OpenSim.Framework/OpenSim.Framework.csproj b/Common/OpenSim.Framework/OpenSim.Framework.csproj index f83cb9dadd..be17a23220 100644 --- a/Common/OpenSim.Framework/OpenSim.Framework.csproj +++ b/Common/OpenSim.Framework/OpenSim.Framework.csproj @@ -107,6 +107,7 @@ Code + Code diff --git a/Common/OpenSim.Framework/RegionCommsHostBase.cs b/Common/OpenSim.Framework/RegionCommsHostBase.cs new file mode 100644 index 0000000000..782755e264 --- /dev/null +++ b/Common/OpenSim.Framework/RegionCommsHostBase.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework.Interfaces; +using OpenSim.Framework.Types; + +namespace OpenSim.Framework +{ + public class RegionCommsHostBase :IRegionCommsHost + { + public event ExpectUserDelegate OnExpectUser; + public event GenericCall2 OnExpectChildAgent; + public event GenericCall2 OnAvatarCrossingIntoRegion; + public event UpdateNeighbours OnNeighboursUpdate; + + /// + /// + /// + /// + /// + public virtual bool TriggerExpectUser(AgentCircuitData agent) + { + if(OnExpectUser != null) + { + OnExpectUser(agent); + return true; + } + + return false; + } + } +} diff --git a/OpenSim/OpenSim.RegionServer/ClientView.API.cs b/OpenSim/OpenSim.RegionServer/ClientView.API.cs index e7db495e1c..b7d87ed869 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.API.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.API.cs @@ -36,6 +36,9 @@ namespace OpenSim public event NewAvatar OnNewAvatar; public event GenericCall6 OnRemoveAvatar; + /// + /// + /// public LLVector3 StartPos { get @@ -48,6 +51,9 @@ namespace OpenSim } } + /// + /// + /// public LLUUID AgentId { get @@ -56,6 +62,9 @@ namespace OpenSim } } + /// + /// + /// public string FirstName { get @@ -65,6 +74,9 @@ namespace OpenSim } + /// + /// + /// public string LastName { get @@ -75,6 +87,10 @@ namespace OpenSim #region World/Avatar to Client + /// + /// + /// + /// public void MoveAgentIntoRegion(RegionInfo regInfo) { AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); @@ -88,6 +104,15 @@ namespace OpenSim OutPacket(mov); } + + /// + /// + /// + /// + /// + /// + /// + /// public void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) { System.Text.Encoding enc = System.Text.Encoding.ASCII; @@ -104,6 +129,10 @@ namespace OpenSim this.OutPacket(reply); } + /// + /// + /// + /// public void SendWearables(AvatarWearable[] wearables) { AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket(); @@ -125,6 +154,12 @@ namespace OpenSim this.OutPacket(aw); } + /// + /// + /// + /// + /// + /// public void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry) { AvatarAppearancePacket avp = new AvatarAppearancePacket(); @@ -200,6 +235,10 @@ namespace OpenSim } } + /// + /// + /// + /// public void SendRegionHandshake(RegionInfo regionInfo) { OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.VERBOSE, "Avatar.cs:SendRegionHandshake() - Creating empty RegionHandshake packet"); @@ -240,6 +279,15 @@ namespace OpenSim OutPacket(handshake); } + /// + /// + /// + /// + /// + /// + /// + /// + /// public void SendAvatarData(RegionInfo regionInfo, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos) { System.Text.Encoding _enc = System.Text.Encoding.ASCII; @@ -263,6 +311,10 @@ namespace OpenSim } + /// + /// + /// + /// protected void SetDefaultPacketValues(ref ObjectUpdatePacket.ObjectDataBlock objdata) { objdata.PSBlock = new byte[0]; @@ -291,6 +343,10 @@ namespace OpenSim objdata.ObjectData[64] = 189; } + /// + /// + /// + /// protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket() { libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);