From 937a2e6dcae6c4369ee6952a2697ae31aaba4903 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 22 Feb 2009 08:48:55 +0000 Subject: * Adds initial support for the MXP Virtual Worlds protocol (http://www.bubblecloud.org) * Handled via the MXPModule.cs located in OpenSim.Client.MXP namespace. * Also implements MXPClientView and MXPPacketServer for IClientAPI compatibility. * No changes were required to Core to implement this - the thing is self contained in OpenSim.Client.MXP.dll. * Includes reference implementation of MXP as MXP.dll - this is under the Apache 2.0 license. * Requires OpenSim.ini setting to enable. "[MXP] \n Enabled=true \n Port=1253" * May break. Highly untested. --- OpenSim/Client/MXP/MXPModule.cs | 87 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 OpenSim/Client/MXP/MXPModule.cs (limited to 'OpenSim/Client/MXP/MXPModule.cs') diff --git a/OpenSim/Client/MXP/MXPModule.cs b/OpenSim/Client/MXP/MXPModule.cs new file mode 100644 index 0000000..345e4fb --- /dev/null +++ b/OpenSim/Client/MXP/MXPModule.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Timers; +using MXP; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Client.MXP.PacketHandler; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Client.MXP +{ + public class MXPModule : IRegionModule + { + private int mxp_Port = 1253; + private double mxp_BubbleRadius = 181.01933598375616624661615669884; // Radius of a sphere big enough to encapsulate a 256x256 square + + private readonly Timer ticker = new Timer(100); + + private int ticks; + private bool shutdown = false; + + private IConfigSource config; + + private readonly Dictionary m_scenes = new Dictionary(); + + private MXPPacketServer server; + + + public void Initialise(Scene scene, IConfigSource source) + { + m_scenes.Add(scene.RegionInfo.RegionID, scene); + config = source; + } + + public void PostInitialise() + { + if (config.Configs["MXP"] != null) + { + IConfig con = config.Configs["MXP"]; + + if(!con.GetBoolean("Enabled",false)) + return; + + mxp_Port = con.GetInt("Port", mxp_Port); + + + server = new MXPPacketServer("http://null", mxp_Port, m_scenes); + + ticker.AutoReset = false; + ticker.Elapsed += ticker_Elapsed; + + ticker.Start(); + } + } + + void ticker_Elapsed(object sender, ElapsedEventArgs e) + { + server.Process(); + + if (!shutdown) + ticker.Start(); + + if(++ticks % 100 == 0) + { + server.PrintDebugInformation(); + } + } + + public void Close() + { + shutdown = true; + ticker.Stop(); + } + + public string Name + { + get { return "MXP ClientStack Module"; } + } + + public bool IsSharedModule + { + get { return true; } + } + } +} -- cgit v1.1