From 5b80e3fc18bdb21a689c1806480714dbfff4200e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 19:26:54 +0100 Subject: convert attachments module from old region module style to new --- .../Avatar/Attachments/AttachmentsModule.cs | 44 ++++++++++++---------- 1 file changed, 25 insertions(+), 19 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index ff3036a..1187e91 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -29,6 +29,7 @@ using System; using System.Collections.Generic; using System.Reflection; using log4net; +using Mono.Addins; using Nini.Config; using OpenMetaverse; using OpenMetaverse.Packets; @@ -39,38 +40,43 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.Avatar.Attachments { - public class AttachmentsModule : IAttachmentsModule, IRegionModule + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsModule")] + public class AttachmentsModule : IAttachmentsModule, INonSharedRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected Scene m_scene = null; + + public string Name { get { return "Attachments Module"; } } + public Type ReplaceableInterface { get { return null; } } - public void Initialise(Scene scene, IConfigSource source) + public void Initialise(IConfigSource source) {} + + public void AddRegion(Scene scene) { - scene.RegisterModuleInterface(this); m_scene = scene; + m_scene.RegisterModuleInterface(this); } - - public void PostInitialise() - { - } - - public void Close() - { - } - - public string Name + + public void RemoveRegion(Scene scene) { - get { return "Attachments Module"; } + m_scene.UnregisterModuleInterface(this); } - - public bool IsSharedModule + + public void RegionLoaded(Scene scene) {} + + public void Close() { - get { return false; } + RemoveRegion(m_scene); } - // Called by client - // + /// + /// Called by client + /// + /// + /// + /// + /// public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent) { m_log.Debug("[ATTACHMENTS MODULE]: Invoking AttachObject"); -- cgit v1.1 From 315b065bce345d3466dfa4bd0edbc2b184ce504a Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 19:58:29 +0100 Subject: Remove unused LLFileTransfer --- .../Region/ClientStack/LindenUDP/LLFileTransfer.cs | 367 --------------------- 1 file changed, 367 deletions(-) delete mode 100644 OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs deleted file mode 100644 index 10e5a95..0000000 --- a/OpenSim/Region/ClientStack/LindenUDP/LLFileTransfer.cs +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Region.ClientStack.LindenUDP -{ - /// - /// A work in progress, to contain the SL specific file transfer code that is currently in various region modules - /// This file currently contains multiple classes that need to be split out into their own files. - /// - public class LLFileTransfer : IClientFileTransfer - { - protected IClientAPI m_clientAPI; - - /// Dictionary of handlers for uploading files from client - /// TODO: Need to add cleanup code to remove handlers that have completed their upload - protected Dictionary m_uploadHandlers; - protected object m_uploadHandlersLock = new object(); - - - /// - /// Dictionary of files ready to be sent to clients - /// - protected static Dictionary m_files; - - /// - /// Dictionary of Download Transfers in progess - /// - protected Dictionary m_downloadHandlers = new Dictionary(); - - - public LLFileTransfer(IClientAPI clientAPI) - { - m_uploadHandlers = new Dictionary(); - m_clientAPI = clientAPI; - - m_clientAPI.OnXferReceive += XferReceive; - m_clientAPI.OnAbortXfer += AbortXferUploadHandler; - } - - public void Close() - { - if (m_clientAPI != null) - { - m_clientAPI.OnXferReceive -= XferReceive; - m_clientAPI.OnAbortXfer -= AbortXferUploadHandler; - m_clientAPI = null; - } - } - - #region Upload Handling - - public bool RequestUpload(string clientFileName, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - if ((String.IsNullOrEmpty(clientFileName)) || (uploadCompleteCallback == null)) - { - return false; - } - - XferUploadHandler uploader = new XferUploadHandler(m_clientAPI, clientFileName); - - return StartUpload(uploader, uploadCompleteCallback, abortCallback); - } - - public bool RequestUpload(UUID fileID, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - if ((fileID == UUID.Zero) || (uploadCompleteCallback == null)) - { - return false; - } - - XferUploadHandler uploader = new XferUploadHandler(m_clientAPI, fileID); - - return StartUpload(uploader, uploadCompleteCallback, abortCallback); - } - - private bool StartUpload(XferUploadHandler uploader, UploadComplete uploadCompleteCallback, UploadAborted abortCallback) - { - uploader.UploadDone += uploadCompleteCallback; - uploader.UploadDone += RemoveXferUploadHandler; - - if (abortCallback != null) - { - uploader.UploadAborted += abortCallback; - } - - lock (m_uploadHandlersLock) - { - if (!m_uploadHandlers.ContainsKey(uploader.XferID)) - { - m_uploadHandlers.Add(uploader.XferID, uploader); - uploader.RequestStartXfer(m_clientAPI); - return true; - } - else - { - // something went wrong with the xferID allocation - uploader.UploadDone -= uploadCompleteCallback; - uploader.UploadDone -= RemoveXferUploadHandler; - if (abortCallback != null) - { - uploader.UploadAborted -= abortCallback; - } - return false; - } - } - } - - protected void AbortXferUploadHandler(IClientAPI remoteClient, ulong xferID) - { - lock (m_uploadHandlersLock) - { - if (m_uploadHandlers.ContainsKey(xferID)) - { - m_uploadHandlers[xferID].AbortUpload(remoteClient); - m_uploadHandlers.Remove(xferID); - } - } - } - - protected void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) - { - lock (m_uploadHandlersLock) - { - if (m_uploadHandlers.ContainsKey(xferID)) - { - m_uploadHandlers[xferID].XferReceive(remoteClient, xferID, packetID, data); - } - } - } - - protected void RemoveXferUploadHandler(string filename, UUID fileID, ulong transferID, byte[] fileData, IClientAPI remoteClient) - { - - } - #endregion - - } - - public class XferUploadHandler - { - private AssetBase m_asset; - - public event UploadComplete UploadDone; - public event UploadAborted UploadAborted; - - private sbyte type = 0; - - public ulong mXferID; - private UploadComplete handlerUploadDone; - private UploadAborted handlerAbort; - - private bool m_complete = false; - - public bool UploadComplete - { - get { return m_complete; } - } - - public XferUploadHandler(IClientAPI pRemoteClient, string pClientFilename) - { - Initialise(UUID.Zero, pClientFilename); - } - - public XferUploadHandler(IClientAPI pRemoteClient, UUID fileID) - { - Initialise(fileID, String.Empty); - } - - private void Initialise(UUID fileID, string fileName) - { - m_asset = new AssetBase(fileID, fileName, type, UUID.Zero.ToString()); - m_asset.Data = new byte[0]; - m_asset.Description = "empty"; - m_asset.Local = true; - m_asset.Temporary = true; - mXferID = Util.GetNextXferID(); - } - - public ulong XferID - { - get { return mXferID; } - } - - public void RequestStartXfer(IClientAPI pRemoteClient) - { - m_asset.Metadata.CreatorID = pRemoteClient.AgentId.ToString(); - - if (!String.IsNullOrEmpty(m_asset.Name)) - { - pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, Utils.StringToBytes(m_asset.Name)); - } - else - { - pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, new byte[0]); - } - } - - /// - /// Process transfer data received from the client. - /// - /// - /// - /// - public void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data) - { - if (mXferID == xferID) - { - if (m_asset.Data.Length > 1) - { - byte[] destinationArray = new byte[m_asset.Data.Length + data.Length]; - Array.Copy(m_asset.Data, 0, destinationArray, 0, m_asset.Data.Length); - Array.Copy(data, 0, destinationArray, m_asset.Data.Length, data.Length); - m_asset.Data = destinationArray; - } - else - { - byte[] buffer2 = new byte[data.Length - 4]; - Array.Copy(data, 4, buffer2, 0, data.Length - 4); - m_asset.Data = buffer2; - } - - remoteClient.SendConfirmXfer(xferID, packetID); - - if ((packetID & 0x80000000) != 0) - { - SendCompleteMessage(remoteClient); - - } - } - } - - protected void SendCompleteMessage(IClientAPI remoteClient) - { - m_complete = true; - handlerUploadDone = UploadDone; - if (handlerUploadDone != null) - { - handlerUploadDone(m_asset.Name, m_asset.FullID, mXferID, m_asset.Data, remoteClient); - } - } - - public void AbortUpload(IClientAPI remoteClient) - { - handlerAbort = UploadAborted; - if (handlerAbort != null) - { - handlerAbort(m_asset.Name, m_asset.FullID, mXferID, remoteClient); - } - } - } - - public class XferDownloadHandler - { - public IClientAPI Client; - private bool complete; - public byte[] Data = new byte[0]; - public int DataPointer = 0; - public string FileName = String.Empty; - public uint Packet = 0; - public uint Serial = 1; - public ulong XferID = 0; - - public XferDownloadHandler(string fileName, byte[] data, ulong xferID, IClientAPI client) - { - FileName = fileName; - Data = data; - XferID = xferID; - Client = client; - } - - public XferDownloadHandler() - { - } - - /// - /// Start a transfer - /// - /// True if the transfer is complete, false if not - public bool StartSend() - { - if (Data.Length < 1000) - { - // for now (testing) we only support files under 1000 bytes - byte[] transferData = new byte[Data.Length + 4]; - Array.Copy(Utils.IntToBytes(Data.Length), 0, transferData, 0, 4); - Array.Copy(Data, 0, transferData, 4, Data.Length); - Client.SendXferPacket(XferID, 0 + 0x80000000, transferData); - - complete = true; - } - else - { - byte[] transferData = new byte[1000 + 4]; - Array.Copy(Utils.IntToBytes(Data.Length), 0, transferData, 0, 4); - Array.Copy(Data, 0, transferData, 4, 1000); - Client.SendXferPacket(XferID, 0, transferData); - Packet++; - DataPointer = 1000; - } - - return complete; - } - - /// - /// Respond to an ack packet from the client - /// - /// - /// True if the transfer is complete, false otherwise - public bool AckPacket(uint packet) - { - if (!complete) - { - if ((Data.Length - DataPointer) > 1000) - { - byte[] transferData = new byte[1000]; - Array.Copy(Data, DataPointer, transferData, 0, 1000); - Client.SendXferPacket(XferID, Packet, transferData); - Packet++; - DataPointer += 1000; - } - else - { - byte[] transferData = new byte[Data.Length - DataPointer]; - Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer); - uint endPacket = Packet |= (uint)0x80000000; - Client.SendXferPacket(XferID, endPacket, transferData); - Packet++; - DataPointer += (Data.Length - DataPointer); - - complete = true; - } - } - - return complete; - } - } - -} -- cgit v1.1 From c6bc1d28ecce5d2f7da57c396e0b964b3a750719 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 20:34:14 +0100 Subject: move ChannelDigger from its own project into the main terrain module with the rest of the effects --- .../World/Terrain/DefaultEffects/ChannelDigger.cs | 107 --------------------- .../World/Terrain/Effects/ChannelDigger.cs | 107 +++++++++++++++++++++ 2 files changed, 107 insertions(+), 107 deletions(-) delete mode 100644 OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs create mode 100644 OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs b/OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs deleted file mode 100644 index e23be59..0000000 --- a/OpenSim/Region/CoreModules/World/Terrain/DefaultEffects/ChannelDigger.cs +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using OpenSim.Region.CoreModules.World.Terrain; -using OpenSim.Region.CoreModules.World.Terrain.FloodBrushes; -using OpenSim.Region.Framework.Interfaces; - -namespace OpenSim.Region.Modules.Terrain.Extensions.DefaultEffects.Effects -{ - public class ChannelDigger : ITerrainEffect - { - private readonly int num_h = 4; - private readonly int num_w = 4; - - private readonly ITerrainFloodEffect raiseFunction = new RaiseArea(); - private readonly ITerrainFloodEffect smoothFunction = new SmoothArea(); - - #region ITerrainEffect Members - - public void RunEffect(ITerrainChannel map) - { - FillMap(map, 15); - BuildTiles(map, 7); - SmoothMap(map, 3); - } - - #endregion - - private void SmoothMap(ITerrainChannel map, int rounds) - { - Boolean[,] bitmap = new bool[map.Width,map.Height]; - for (int x = 0; x < map.Width; x++) - { - for (int y = 0; y < map.Height; y++) - { - bitmap[x, y] = true; - } - } - - for (int i = 0; i < rounds; i++) - { - smoothFunction.FloodEffect(map, bitmap, 1.0); - } - } - - private void FillMap(ITerrainChannel map, double val) - { - for (int x = 0; x < map.Width; x++) - for (int y = 0; y < map.Height; y++) - map[x, y] = val; - } - - private void BuildTiles(ITerrainChannel map, double height) - { - int channelWidth = (int) Math.Floor((map.Width / num_w) * 0.8); - int channelHeight = (int) Math.Floor((map.Height / num_h) * 0.8); - int channelXOffset = (map.Width / num_w) - channelWidth; - int channelYOffset = (map.Height / num_h) - channelHeight; - - for (int x = 0; x < num_w; x++) - { - for (int y = 0; y < num_h; y++) - { - int xoff = ((channelXOffset + channelWidth) * x) + (channelXOffset / 2); - int yoff = ((channelYOffset + channelHeight) * y) + (channelYOffset / 2); - - Boolean[,] bitmap = new bool[map.Width,map.Height]; - - for (int dx = 0; dx < channelWidth; dx++) - { - for (int dy = 0; dy < channelHeight; dy++) - { - bitmap[dx + xoff, dy + yoff] = true; - } - } - - raiseFunction.FloodEffect(map, bitmap, height); - } - } - } - } -} diff --git a/OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs b/OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs new file mode 100644 index 0000000..36917e9 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Terrain/Effects/ChannelDigger.cs @@ -0,0 +1,107 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenSim.Region.CoreModules.World.Terrain; +using OpenSim.Region.CoreModules.World.Terrain.FloodBrushes; +using OpenSim.Region.Framework.Interfaces; + +namespace OpenSim.Region.CoreModules.World.Terrain.Effects +{ + public class ChannelDigger : ITerrainEffect + { + private readonly int num_h = 4; + private readonly int num_w = 4; + + private readonly ITerrainFloodEffect raiseFunction = new RaiseArea(); + private readonly ITerrainFloodEffect smoothFunction = new SmoothArea(); + + #region ITerrainEffect Members + + public void RunEffect(ITerrainChannel map) + { + FillMap(map, 15); + BuildTiles(map, 7); + SmoothMap(map, 3); + } + + #endregion + + private void SmoothMap(ITerrainChannel map, int rounds) + { + Boolean[,] bitmap = new bool[map.Width,map.Height]; + for (int x = 0; x < map.Width; x++) + { + for (int y = 0; y < map.Height; y++) + { + bitmap[x, y] = true; + } + } + + for (int i = 0; i < rounds; i++) + { + smoothFunction.FloodEffect(map, bitmap, 1.0); + } + } + + private void FillMap(ITerrainChannel map, double val) + { + for (int x = 0; x < map.Width; x++) + for (int y = 0; y < map.Height; y++) + map[x, y] = val; + } + + private void BuildTiles(ITerrainChannel map, double height) + { + int channelWidth = (int) Math.Floor((map.Width / num_w) * 0.8); + int channelHeight = (int) Math.Floor((map.Height / num_h) * 0.8); + int channelXOffset = (map.Width / num_w) - channelWidth; + int channelYOffset = (map.Height / num_h) - channelHeight; + + for (int x = 0; x < num_w; x++) + { + for (int y = 0; y < num_h; y++) + { + int xoff = ((channelXOffset + channelWidth) * x) + (channelXOffset / 2); + int yoff = ((channelYOffset + channelHeight) * y) + (channelYOffset / 2); + + Boolean[,] bitmap = new bool[map.Width,map.Height]; + + for (int dx = 0; dx < channelWidth; dx++) + { + for (int dy = 0; dy < channelHeight; dy++) + { + bitmap[dx + xoff, dy + yoff] = true; + } + } + + raiseFunction.FloodEffect(map, bitmap, height); + } + } + } + } +} -- cgit v1.1 From f37ec933ae342a044558a89cbfc829ed8e95e6fa Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 20:54:02 +0100 Subject: store terrain module trying to load plugins if plugin path does not exist --- OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index 1e7ea7b..2c5e444 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs @@ -68,7 +68,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain #endregion private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + private readonly Commander m_commander = new Commander("terrain"); private readonly Dictionary m_floodeffects = @@ -381,8 +381,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain private void LoadPlugins() { m_plugineffects = new Dictionary(); + string plugineffectsPath = "Terrain"; + // Load the files in the Terrain/ dir - string[] files = Directory.GetFiles("Terrain"); + if (!Directory.Exists(plugineffectsPath)) + return; + + string[] files = Directory.GetFiles(plugineffectsPath); foreach (string file in files) { m_log.Info("Loading effects in " + file); -- cgit v1.1 From 4d83b2d8a6a69f263d57ce3753138b227daa19a4 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 21:06:45 +0100 Subject: remove unused BasicQuadTreeNode --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 5 - .../Framework/Scenes/Types/BasicQuadTreeNode.cs | 269 --------------------- 2 files changed, 274 deletions(-) delete mode 100644 OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 40332a6..f47450f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -78,8 +78,6 @@ namespace OpenSim.Region.Framework.Scenes // protected internal Dictionary Entities = new Dictionary(); protected internal Dictionary RestorePresences = new Dictionary(); - protected internal BasicQuadTreeNode QuadTree; - protected RegionInfo m_regInfo; protected Scene m_parentScene; protected Dictionary m_updateList = new Dictionary(); @@ -107,9 +105,6 @@ namespace OpenSim.Region.Framework.Scenes { m_parentScene = parent; m_regInfo = regInfo; - QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, (short)Constants.RegionSize, (short)Constants.RegionSize); - QuadTree.Subdivide(); - QuadTree.Subdivide(); } public PhysicsScene PhysicsScene diff --git a/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs b/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs deleted file mode 100644 index 38a9203..0000000 --- a/OpenSim/Region/Framework/Scenes/Types/BasicQuadTreeNode.cs +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using OpenSim.Region.Framework.Scenes; - -namespace OpenSim.Region.Framework.Scenes.Types -{ - public class BasicQuadTreeNode - { - private List m_objects = new List(); - private BasicQuadTreeNode[] m_childNodes = null; - private BasicQuadTreeNode m_parent = null; - - private short m_leftX; - private short m_leftY; - private short m_width; - private short m_height; - //private int m_quadNumber; - private string m_quadID; - - public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, - short height) - { - m_parent = parent; - m_quadID = quadID; - m_leftX = leftX; - m_leftY = leftY; - m_width = width; - m_height = height; - // m_log.Debug("creating quadtree node " + m_quadID); - } - - public void AddObject(SceneObjectGroup obj) - { - if (m_childNodes == null) - { - if (!m_objects.Contains(obj)) - { - m_objects.Add(obj); - } - } - else - { - if (obj.AbsolutePosition.X < (m_leftX + (m_width/2))) - { - if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) - { - m_childNodes[0].AddObject(obj); - } - else - { - m_childNodes[2].AddObject(obj); - } - } - else - { - if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) - { - m_childNodes[1].AddObject(obj); - } - else - { - m_childNodes[3].AddObject(obj); - } - } - } - } - - public void Subdivide() - { - if (m_childNodes == null) - { - m_childNodes = new BasicQuadTreeNode[4]; - m_childNodes[0] = - new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short) (m_width/2), - (short) (m_height/2)); - m_childNodes[1] = - new BasicQuadTreeNode(this, m_quadID + "2/", (short) (m_leftX + (m_width/2)), m_leftY, - (short) (m_width/2), (short) (m_height/2)); - m_childNodes[2] = - new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short) (m_leftY + (m_height/2)), - (short) (m_width/2), (short) (m_height/2)); - m_childNodes[3] = - new BasicQuadTreeNode(this, m_quadID + "4/", (short) (m_leftX + (m_width/2)), - (short) (m_height + (m_height/2)), (short) (m_width/2), (short) (m_height/2)); - } - else - { - for (int i = 0; i < m_childNodes.Length; i++) - { - m_childNodes[i].Subdivide(); - } - } - } - - public List GetObjectsFrom(float x, float y) - { - if (m_childNodes == null) - { - return new List(m_objects); - } - else - { - if (x < m_leftX + (m_width/2)) - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[0].GetObjectsFrom(x, y); - } - else - { - return m_childNodes[2].GetObjectsFrom(x, y); - } - } - else - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[1].GetObjectsFrom(x, y); - } - else - { - return m_childNodes[3].GetObjectsFrom(x, y); - } - } - } - } - - public List GetObjectsFrom(string nodeName) - { - if (nodeName == m_quadID) - { - return new List(m_objects); - } - else if (m_childNodes != null) - { - for (int i = 0; i < 4; i++) - { - List retVal; - retVal = m_childNodes[i].GetObjectsFrom(nodeName); - if (retVal != null) - { - return retVal; - } - } - } - return null; - } - - public string GetNodeID(float x, float y) - { - if (m_childNodes == null) - { - return m_quadID; - } - else - { - if (x < m_leftX + (m_width/2)) - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[0].GetNodeID(x, y); - } - else - { - return m_childNodes[2].GetNodeID(x, y); - } - } - else - { - if (y < m_leftY + (m_height/2)) - { - return m_childNodes[1].GetNodeID(x, y); - } - else - { - return m_childNodes[3].GetNodeID(x, y); - } - } - } - } - - public void Update() - { - if (m_childNodes != null) - { - for (int i = 0; i < 4; i++) - { - m_childNodes[i].Update(); - } - } - else - { - List outBounds = new List(); - foreach (SceneObjectGroup group in m_objects) - { - if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && - ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) - { - //still in bounds - } - else - { - outBounds.Add(group); - } - } - - foreach (SceneObjectGroup removee in outBounds) - { - m_objects.Remove(removee); - if (m_parent != null) - { - m_parent.PassUp(removee); - } - } - outBounds.Clear(); - } - } - - public void PassUp(SceneObjectGroup group) - { - if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && - ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) - { - AddObject(group); - } - else - { - if (m_parent != null) - { - m_parent.PassUp(group); - } - } - } - - public string[] GetNeighbours(string nodeName) - { - string[] retVal = new string[1]; - retVal[0] = String.Empty; - return retVal; - } - } -} -- cgit v1.1 From 424b4b2b8663f0f6780d2d3a2656e5b298418711 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 21:41:44 +0100 Subject: move attachment subscription events into AttachmentsModule from scene. restored to some heavy casting in order to preserve RegionCombinerModule semantics, pending better events. --- .../Avatar/Attachments/AttachmentsModule.cs | 23 +++++++++++++- OpenSim/Region/Framework/Scenes/Scene.cs | 36 ++-------------------- .../RegionCombinerIndividualEventForwarder.cs | 7 +++-- 3 files changed, 28 insertions(+), 38 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 1187e91..d895bb1 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -56,11 +56,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { m_scene = scene; m_scene.RegisterModuleInterface(this); + m_scene.EventManager.OnNewClient += SubscribeToClientEvents; + // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI } public void RemoveRegion(Scene scene) { m_scene.UnregisterModuleInterface(this); + m_scene.EventManager.OnNewClient -= SubscribeToClientEvents; } public void RegionLoaded(Scene scene) {} @@ -69,7 +72,25 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { RemoveRegion(m_scene); } - + + public void SubscribeToClientEvents(IClientAPI client) + { + client.OnRezSingleAttachmentFromInv += RezSingleAttachmentFromInventory; + client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachmentsFromInventory; + client.OnObjectAttach += AttachObject; + client.OnObjectDetach += DetachObject; + client.OnDetachAttachmentIntoInv += ShowDetachInUserInventory; + } + + public void UnsubscribeFromClientEvents(IClientAPI client) + { + client.OnRezSingleAttachmentFromInv -= RezSingleAttachmentFromInventory; + client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachmentsFromInventory; + client.OnObjectAttach -= AttachObject; + client.OnObjectDetach -= DetachObject; + client.OnDetachAttachmentIntoInv -= ShowDetachInUserInventory; + } + /// /// Called by client /// diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9141d44..088d210 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2783,17 +2783,12 @@ namespace OpenSim.Region.Framework.Scenes SubscribeToClientPrimEvents(client); SubscribeToClientPrimRezEvents(client); SubscribeToClientInventoryEvents(client); - SubscribeToClientAttachmentEvents(client); SubscribeToClientTeleportEvents(client); SubscribeToClientScriptEvents(client); SubscribeToClientParcelEvents(client); SubscribeToClientGridEvents(client); SubscribeToClientGodEvents(client); - SubscribeToClientNetworkEvents(client); - - - // EventManager.TriggerOnNewClient(client); } public virtual void SubscribeToClientTerrainEvents(IClientAPI client) @@ -2874,18 +2869,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnMoveTaskItem += ClientMoveTaskInventoryItem; } - public virtual void SubscribeToClientAttachmentEvents(IClientAPI client) - { - if (AttachmentsModule != null) - { - client.OnRezSingleAttachmentFromInv += AttachmentsModule.RezSingleAttachmentFromInventory; - client.OnRezMultipleAttachmentsFromInv += AttachmentsModule.RezMultipleAttachmentsFromInventory; - client.OnObjectAttach += AttachmentsModule.AttachObject; - client.OnObjectDetach += AttachmentsModule.DetachObject; - client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory; - } - } - public virtual void SubscribeToClientTeleportEvents(IClientAPI client) { client.OnTeleportLocationRequest += RequestTeleportLocation; @@ -2934,16 +2917,15 @@ namespace OpenSim.Region.Framework.Scenes } /// - /// Register for events from the client + /// Unsubscribe the client from events. /// - /// The IClientAPI of the connected client + /// The IClientAPI of the client public virtual void UnSubscribeToClientEvents(IClientAPI client) { UnSubscribeToClientTerrainEvents(client); UnSubscribeToClientPrimEvents(client); UnSubscribeToClientPrimRezEvents(client); UnSubscribeToClientInventoryEvents(client); - UnSubscribeToClientAttachmentEvents(client); UnSubscribeToClientTeleportEvents(client); UnSubscribeToClientScriptEvents(client); UnSubscribeToClientParcelEvents(client); @@ -2951,8 +2933,6 @@ namespace OpenSim.Region.Framework.Scenes UnSubscribeToClientGodEvents(client); UnSubscribeToClientNetworkEvents(client); - - // EventManager.TriggerOnNewClient(client); } public virtual void UnSubscribeToClientTerrainEvents(IClientAPI client) @@ -3029,18 +3009,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnMoveTaskItem -= ClientMoveTaskInventoryItem; } - public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client) - { - if (AttachmentsModule != null) - { - client.OnRezSingleAttachmentFromInv -= AttachmentsModule.RezSingleAttachmentFromInventory; - client.OnRezMultipleAttachmentsFromInv -= AttachmentsModule.RezMultipleAttachmentsFromInventory; - client.OnObjectAttach -= AttachmentsModule.AttachObject; - client.OnObjectDetach -= AttachmentsModule.DetachObject; - client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory; - } - } - public virtual void UnSubscribeToClientTeleportEvents(IClientAPI client) { client.OnTeleportLocationRequest -= RequestTeleportLocation; diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs index 9d41c9c..62410e2 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs @@ -28,11 +28,12 @@ using System; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Region.CoreModules.Avatar.Attachments; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.RegionCombinerModule { - public class RegionCombinerIndividualEventForwarder + public class RegionCombinerIndividualEventForwarder { private Scene m_rootScene; private Scene m_virtScene; @@ -48,7 +49,7 @@ namespace OpenSim.Region.RegionCombinerModule m_virtScene.UnSubscribeToClientPrimEvents(client); m_virtScene.UnSubscribeToClientPrimRezEvents(client); m_virtScene.UnSubscribeToClientInventoryEvents(client); - m_virtScene.UnSubscribeToClientAttachmentEvents(client); + ((AttachmentsModule)m_virtScene.AttachmentsModule).UnsubscribeFromClientEvents(client); //m_virtScene.UnSubscribeToClientTeleportEvents(client); m_virtScene.UnSubscribeToClientScriptEvents(client); m_virtScene.UnSubscribeToClientGodEvents(client); @@ -58,7 +59,7 @@ namespace OpenSim.Region.RegionCombinerModule client.OnAddPrim += LocalAddNewPrim; client.OnRezObject += LocalRezObject; m_rootScene.SubscribeToClientInventoryEvents(client); - m_rootScene.SubscribeToClientAttachmentEvents(client); + ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); //m_rootScene.SubscribeToClientTeleportEvents(client); m_rootScene.SubscribeToClientScriptEvents(client); m_rootScene.SubscribeToClientGodEvents(client); -- cgit v1.1 From 63f3a16b72b5abde70872292cdaf3ebb8523a7e7 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 21:44:50 +0100 Subject: remove empty, unused and uncalled UnsubscribeToClientEvents() --- OpenSim/Region/Framework/Scenes/Scene.cs | 4 ---- 1 file changed, 4 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 088d210..61817f2 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2912,10 +2912,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnViewerEffect += ProcessViewerEffect; } - protected virtual void UnsubscribeToClientEvents(IClientAPI client) - { - } - /// /// Unsubscribe the client from events. /// -- cgit v1.1 From f84dbafb0c1de99c8211c3f9b96182a845d4d7b4 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 30 Jul 2010 21:58:24 +0100 Subject: remove gods event subscription to gods module from scene --- .../Region/CoreModules/Avatar/Gods/GodsModule.cs | 13 +++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 25 ++++------------------ .../RegionCombinerIndividualEventForwarder.cs | 19 ++++++++++++---- 3 files changed, 32 insertions(+), 25 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs index 50171a3..4b30b0d 100644 --- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs @@ -47,6 +47,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods m_scene = scene; m_dialogModule = m_scene.RequestModuleInterface(); m_scene.RegisterModuleInterface(this); + m_scene.EventManager.OnNewClient += SubscribeToClientEvents; } public void PostInitialise() {} @@ -54,6 +55,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods public string Name { get { return "Gods Module"; } } public bool IsSharedModule { get { return false; } } + public void SubscribeToClientEvents(IClientAPI client) + { + client.OnGodKickUser += KickUser; + client.OnRequestGodlikePowers += RequestGodlikePowers; + } + + public void UnsubscribeFromClientEvents(IClientAPI client) + { + client.OnGodKickUser -= KickUser; + client.OnRequestGodlikePowers -= RequestGodlikePowers; + } + public void RequestGodlikePowers( UUID agentID, UUID sessionID, UUID token, bool godLike, IClientAPI controllingClient) { diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 61817f2..83489e8 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2787,7 +2787,6 @@ namespace OpenSim.Region.Framework.Scenes SubscribeToClientScriptEvents(client); SubscribeToClientParcelEvents(client); SubscribeToClientGridEvents(client); - SubscribeToClientGodEvents(client); SubscribeToClientNetworkEvents(client); } @@ -2798,8 +2797,7 @@ namespace OpenSim.Region.Framework.Scenes } public virtual void SubscribeToClientPrimEvents(IClientAPI client) - { - + { client.OnUpdatePrimGroupPosition += m_sceneGraph.UpdatePrimPosition; client.OnUpdatePrimSinglePosition += m_sceneGraph.UpdatePrimSinglePosition; client.OnUpdatePrimGroupRotation += m_sceneGraph.UpdatePrimRotation; @@ -2898,14 +2896,7 @@ namespace OpenSim.Region.Framework.Scenes client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnRegionHandleRequest += RegionHandleRequest; } - - public virtual void SubscribeToClientGodEvents(IClientAPI client) - { - IGodsModule godsModule = RequestModuleInterface(); - client.OnGodKickUser += godsModule.KickUser; - client.OnRequestGodlikePowers += godsModule.RequestGodlikePowers; - } - + public virtual void SubscribeToClientNetworkEvents(IClientAPI client) { client.OnNetworkStatsUpdate += StatsReporter.AddPacketsStats; @@ -2915,6 +2906,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// Unsubscribe the client from events. /// + /// FIXME: Not called anywhere! /// The IClientAPI of the client public virtual void UnSubscribeToClientEvents(IClientAPI client) { @@ -2926,8 +2918,6 @@ namespace OpenSim.Region.Framework.Scenes UnSubscribeToClientScriptEvents(client); UnSubscribeToClientParcelEvents(client); UnSubscribeToClientGridEvents(client); - UnSubscribeToClientGodEvents(client); - UnSubscribeToClientNetworkEvents(client); } @@ -3036,13 +3026,6 @@ namespace OpenSim.Region.Framework.Scenes client.OnRegionHandleRequest -= RegionHandleRequest; } - public virtual void UnSubscribeToClientGodEvents(IClientAPI client) - { - IGodsModule godsModule = RequestModuleInterface(); - client.OnGodKickUser -= godsModule.KickUser; - client.OnRequestGodlikePowers -= godsModule.RequestGodlikePowers; - } - public virtual void UnSubscribeToClientNetworkEvents(IClientAPI client) { client.OnNetworkStatsUpdate -= StatsReporter.AddPacketsStats; @@ -5256,4 +5239,4 @@ namespace OpenSim.Region.Framework.Scenes return offsets.ToArray(); } } -} +} \ No newline at end of file diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs index 62410e2..a0d6197 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerIndividualEventForwarder.cs @@ -29,6 +29,8 @@ using System; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.CoreModules.Avatar.Attachments; +using OpenSim.Region.CoreModules.Avatar.Gods; +using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.RegionCombinerModule @@ -47,22 +49,31 @@ namespace OpenSim.Region.RegionCombinerModule public void ClientConnect(IClientAPI client) { m_virtScene.UnSubscribeToClientPrimEvents(client); - m_virtScene.UnSubscribeToClientPrimRezEvents(client); + m_virtScene.UnSubscribeToClientPrimRezEvents(client); m_virtScene.UnSubscribeToClientInventoryEvents(client); ((AttachmentsModule)m_virtScene.AttachmentsModule).UnsubscribeFromClientEvents(client); //m_virtScene.UnSubscribeToClientTeleportEvents(client); m_virtScene.UnSubscribeToClientScriptEvents(client); - m_virtScene.UnSubscribeToClientGodEvents(client); + + IGodsModule virtGodsModule = m_virtScene.RequestModuleInterface(); + if (virtGodsModule != null) + ((GodsModule)virtGodsModule).UnsubscribeFromClientEvents(client); + m_virtScene.UnSubscribeToClientNetworkEvents(client); m_rootScene.SubscribeToClientPrimEvents(client); client.OnAddPrim += LocalAddNewPrim; client.OnRezObject += LocalRezObject; + m_rootScene.SubscribeToClientInventoryEvents(client); - ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); + ((AttachmentsModule)m_rootScene.AttachmentsModule).SubscribeToClientEvents(client); //m_rootScene.SubscribeToClientTeleportEvents(client); m_rootScene.SubscribeToClientScriptEvents(client); - m_rootScene.SubscribeToClientGodEvents(client); + + IGodsModule rootGodsModule = m_virtScene.RequestModuleInterface(); + if (rootGodsModule != null) + ((GodsModule)rootGodsModule).UnsubscribeFromClientEvents(client); + m_rootScene.SubscribeToClientNetworkEvents(client); } -- cgit v1.1