From e07548d703798bfd661c1ab89cc3b48c936d0a77 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Thu, 4 Mar 2010 20:08:25 +0000
Subject: move linden notecard parsing from LSL_Api.cs to SLUtil so that region
modules can use it
---
OpenSim/Region/Application/ConfigurationLoader.cs | 19 +++--
OpenSim/Region/Framework/Scenes/EventManager.cs | 30 ++++----
.../Framework/Scenes/SceneObjectPartInventory.cs | 1 -
.../Shared/Api/Implementation/LSL_Api.cs | 83 +---------------------
4 files changed, 25 insertions(+), 108 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Application/ConfigurationLoader.cs b/OpenSim/Region/Application/ConfigurationLoader.cs
index 655c5ca..8f19417 100644
--- a/OpenSim/Region/Application/ConfigurationLoader.cs
+++ b/OpenSim/Region/Application/ConfigurationLoader.cs
@@ -164,12 +164,12 @@ namespace OpenSim
m_config.Source = new IniConfigSource();
m_config.Source.Merge(DefaultConfig());
- m_log.Info("[CONFIG] Reading configuration settings");
+ m_log.Info("[CONFIG]: Reading configuration settings");
if (sources.Count == 0)
{
- m_log.FatalFormat("[CONFIG] Could not load any configuration");
- m_log.FatalFormat("[CONFIG] Did you copy the OpenSim.ini.example file to OpenSim.ini?");
+ m_log.FatalFormat("[CONFIG]: Could not load any configuration");
+ m_log.FatalFormat("[CONFIG]: Did you copy the OpenSim.ini.example file to OpenSim.ini?");
Environment.Exit(1);
}
@@ -182,8 +182,8 @@ namespace OpenSim
if (!iniFileExists)
{
- m_log.FatalFormat("[CONFIG] Could not load any configuration");
- m_log.FatalFormat("[CONFIG] Configuration exists, but there was an error loading it!");
+ m_log.FatalFormat("[CONFIG]: Could not load any configuration");
+ m_log.FatalFormat("[CONFIG]: Configuration exists, but there was an error loading it!");
Environment.Exit(1);
}
@@ -257,20 +257,17 @@ namespace OpenSim
if (!IsUri(iniPath))
{
- m_log.InfoFormat("[CONFIG] Reading configuration file {0}",
- Path.GetFullPath(iniPath));
+ m_log.InfoFormat("[CONFIG]: Reading configuration file {0}", Path.GetFullPath(iniPath));
m_config.Source.Merge(new IniConfigSource(iniPath));
success = true;
}
else
{
- m_log.InfoFormat("[CONFIG] {0} is a http:// URI, fetching ...",
- iniPath);
+ m_log.InfoFormat("[CONFIG]: {0} is a http:// URI, fetching ...", iniPath);
// The ini file path is a http URI
// Try to read it
- //
try
{
XmlReader r = XmlReader.Create(iniPath);
@@ -281,7 +278,7 @@ namespace OpenSim
}
catch (Exception e)
{
- m_log.FatalFormat("[CONFIG] Exception reading config from URI {0}\n" + e.ToString(), iniPath);
+ m_log.FatalFormat("[CONFIG]: Exception reading config from URI {0}\n" + e.ToString(), iniPath);
Environment.Exit(1);
}
}
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index ac04462..f0d346f 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -110,21 +110,24 @@ namespace OpenSim.Region.Framework.Scenes
public event OnSetRootAgentSceneDelegate OnSetRootAgentScene;
///
- /// Called when an object is touched/grabbed.
+ /// Fired when an object is touched/grabbed.
///
/// The originalID is the local ID of the part that was actually touched. The localID itself is always that of
- /// the root part.
- public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
+ /// the root part.
public event ObjectGrabDelegate OnObjectGrab;
+ public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
public event ObjectGrabDelegate OnObjectGrabbing;
public event ObjectDeGrabDelegate OnObjectDeGrab;
public event ScriptResetDelegate OnScriptReset;
- public event OnPermissionErrorDelegate OnPermissionError;
+ public event OnPermissionErrorDelegate OnPermissionError;
- public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource);
+ ///
+ /// Fired when a new script is created.
+ ///
public event NewRezScript OnRezScript;
+ public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource);
public delegate void RemoveScript(uint localID, UUID itemID);
public event RemoveScript OnRemoveScript;
@@ -166,38 +169,35 @@ namespace OpenSim.Region.Framework.Scenes
public delegate void ClientClosed(UUID clientID, Scene scene);
- public event ClientClosed OnClientClosed;
-
- public delegate void ScriptChangedEvent(uint localID, uint change);
+ public event ClientClosed OnClientClosed;
+ ///
+ /// This is fired when a scene object property that a script might be interested in (such as color, scale or
+ /// inventory) changes. Only enough information is sent for the LSL changed event
+ /// (see http://lslwiki.net/lslwiki/wakka.php?wakka=changed)
+ ///
public event ScriptChangedEvent OnScriptChangedEvent;
+ public delegate void ScriptChangedEvent(uint localID, uint change);
public delegate void ScriptControlEvent(uint localID, UUID item, UUID avatarID, uint held, uint changed);
-
public event ScriptControlEvent OnScriptControlEvent;
public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos);
-
public event ScriptAtTargetEvent OnScriptAtTargetEvent;
public delegate void ScriptNotAtTargetEvent(uint localID);
-
public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
public delegate void ScriptAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion atrot);
-
public event ScriptAtRotTargetEvent OnScriptAtRotTargetEvent;
public delegate void ScriptNotAtRotTargetEvent(uint localID);
-
public event ScriptNotAtRotTargetEvent OnScriptNotAtRotTargetEvent;
public delegate void ScriptColliding(uint localID, ColliderArgs colliders);
-
public event ScriptColliding OnScriptColliderStart;
public event ScriptColliding OnScriptColliding;
public event ScriptColliding OnScriptCollidingEnd;
-
public event ScriptColliding OnScriptLandColliderStart;
public event ScriptColliding OnScriptLandColliding;
public event ScriptColliding OnScriptLandColliderEnd;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 04e3221..77bf6fe 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -637,7 +637,6 @@ namespace OpenSim.Region.Framework.Scenes
m_items[item.ItemID] = item;
m_inventorySerial++;
m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
-
HasInventoryChanged = true;
m_part.ParentGroup.HasGroupChanged = true;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index dc4249c..974f91b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -9705,90 +9705,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
Notecard nc = new Notecard();
nc.lastRef = DateTime.Now;
- nc.text = ParseText(text.Replace("\r", "").Split('\n'));
+ nc.text = SLUtil.ParseNotecardToList(text).ToArray();
m_Notecards[assetID] = nc;
}
}
- protected static string[] ParseText(string[] input)
- {
- int idx = 0;
- int level = 0;
- List output = new List();
- string[] words;
-
- while (idx < input.Length)
- {
- if (input[idx] == "{")
- {
- level++;
- idx++;
- continue;
- }
-
- if (input[idx]== "}")
- {
- level--;
- idx++;
- continue;
- }
-
- switch (level)
- {
- case 0:
- words = input[idx].Split(' '); // Linden text ver
- // Notecards are created *really* empty. Treat that as "no text" (just like after saving an empty notecard)
- if (words.Length < 3)
- return new String[0];
-
- int version = int.Parse(words[3]);
- if (version != 2)
- return new String[0];
- break;
- case 1:
- words = input[idx].Split(' ');
- if (words[0] == "LLEmbeddedItems")
- break;
- if (words[0] == "Text")
- {
- int len = int.Parse(words[2]);
- idx++;
-
- int count = -1;
-
- while (count < len)
- {
- // int l = input[idx].Length;
- string ln = input[idx];
-
- int need = len-count-1;
- if (ln.Length > need)
- ln = ln.Substring(0, need);
-
- output.Add(ln);
- count += ln.Length + 1;
- idx++;
- }
-
- return output.ToArray();
- }
- break;
- case 2:
- words = input[idx].Split(' '); // count
- if (words[0] == "count")
- {
- int c = int.Parse(words[1]);
- if (c > 0)
- return new String[0];
- break;
- }
- break;
- }
- idx++;
- }
- return output.ToArray();
- }
-
public static bool IsCached(UUID assetID)
{
lock (m_Notecards)
@@ -9844,4 +9765,4 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
}
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From e39fc95659a405a8500c9014d2ac31c5d85741d7 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 5 Mar 2010 00:54:46 +0000
Subject: Fix LocalPresenceServiceConnector test now that the hardcoded test
data has been removed from Data.Null.NullPresenceData Unfortunately, this
meant publicly exposing the underlying service for the connector. The other
solution would be to create alternative initializers for services and
connectors where objects could be given directly rather than loaded
indirectly through config. Unfortunately, this would require a lot of work in
this case but might be the better way forward.
---
OpenSim/Region/Application/ConfigurationLoader.cs | 14 ++------------
.../Presence/LocalPresenceServiceConnector.cs | 6 +++++-
.../Presence/Tests/PresenceConnectorsTests.cs | 13 +++++++++++++
.../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 1 -
4 files changed, 20 insertions(+), 14 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Application/ConfigurationLoader.cs b/OpenSim/Region/Application/ConfigurationLoader.cs
index 8f19417..4ca6595 100644
--- a/OpenSim/Region/Application/ConfigurationLoader.cs
+++ b/OpenSim/Region/Application/ConfigurationLoader.cs
@@ -42,6 +42,8 @@ namespace OpenSim
///
public class ConfigurationLoader
{
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
///
/// Various Config settings the region needs to start
/// Physics Engine, Mesh Engine, GridMode, PhysicsPrim allowed, Neighbor,
@@ -61,17 +63,6 @@ namespace OpenSim
protected NetworkServersInfo m_networkServersInfo;
///
- /// Console logger
- ///
- private static readonly ILog m_log =
- LogManager.GetLogger(
- MethodBase.GetCurrentMethod().DeclaringType);
-
- public ConfigurationLoader()
- {
- }
-
- ///
/// Loads the region configuration
///
/// Parameters passed into the process when started
@@ -188,7 +179,6 @@ namespace OpenSim
}
// Make sure command line options take precedence
- //
m_config.Source.Merge(argvSource);
ReadConfigSettings();
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
index d78daf9..c402a3f 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/LocalPresenceServiceConnector.cs
@@ -47,7 +47,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
private bool m_Enabled = false;
private PresenceDetector m_PresenceDetector;
- private IPresenceService m_PresenceService;
+
+ ///
+ /// Underlying presence service. Do not use directly.
+ ///
+ public IPresenceService m_PresenceService;
public LocalPresenceServicesConnector()
{
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
index ca42461..292ff8e 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/Tests/PresenceConnectorsTests.cs
@@ -59,6 +59,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
config.Configs["PresenceService"].Set("StorageProvider", "OpenSim.Data.Null.dll");
m_LocalConnector = new LocalPresenceServicesConnector(config);
+
+ // Let's stick in a test presence
+ m_LocalConnector.m_PresenceService.LoginAgent(UUID.Zero.ToString(), UUID.Zero, UUID.Zero);
}
///
@@ -68,6 +71,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
public void TestPresenceV0_1()
{
SetUp();
+
+ // Let's stick in a test presence
+ /*
+ PresenceData p = new PresenceData();
+ p.SessionID = UUID.Zero;
+ p.UserID = UUID.Zero.ToString();
+ p.Data = new Dictionary();
+ p.Data["Online"] = true.ToString();
+ m_presenceData.Add(UUID.Zero, p);
+ */
string user1 = UUID.Zero.ToString();
UUID session1 = UUID.Zero;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 974f91b..0134b03 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -52,7 +52,6 @@ using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
using OpenSim.Region.ScriptEngine.Interfaces;
using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces;
using OpenSim.Services.Interfaces;
-using OpenSim.Services.Interfaces;
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
using PrimType = OpenSim.Region.Framework.Scenes.PrimType;
--
cgit v1.1
From e906dd3d28a3cb4dfada36daccfd8900f0e844b5 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 5 Mar 2010 22:29:51 +0000
Subject: add initial UserGrid service classes as per diva's direction this
will initially store home location data instead of the presence service
compiles but not enough to actually test yet
---
.../UserGrid/LocalUserGridServiceConnector.cs | 139 +++++++++++++++++++++
1 file changed, 139 insertions(+)
create mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
new file mode 100644
index 0000000..f4309fe
--- /dev/null
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
@@ -0,0 +1,139 @@
+/*
+ * 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 System.Reflection;
+using log4net;
+using Nini.Config;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Server.Base;
+using OpenSim.Services.Interfaces;
+
+using OpenMetaverse;
+
+namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserGrid
+{
+ public class LocalUserGridServicesConnector : ISharedRegionModule, IUserGridService
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private IUserGridService m_service;
+
+ private bool m_Enabled = false;
+
+ public Type ReplaceableInterface
+ {
+ get { return null; }
+ }
+
+ public string Name
+ {
+ get { return "LocalUserGridServicesConnector"; }
+ }
+
+ public void Initialise(IConfigSource source)
+ {
+ IConfig moduleConfig = source.Configs["Modules"];
+ if (moduleConfig != null)
+ {
+ string name = moduleConfig.GetString("UserGridServices", "");
+ if (name == Name)
+ {
+ IConfig userConfig = source.Configs["UserGridService"];
+ if (userConfig == null)
+ {
+ m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: UserGridService missing from ini files");
+ return;
+ }
+
+ string serviceDll = userConfig.GetString("LocalServiceModule", String.Empty);
+
+ if (serviceDll == String.Empty)
+ {
+ m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: No LocalServiceModule named in section UserGridService");
+ return;
+ }
+
+ Object[] args = new Object[] { source };
+ m_service = ServerUtils.LoadPlugin(serviceDll, args);
+
+ if (m_service == null)
+ {
+ m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: Can't load UserGrid service");
+ return;
+ }
+ m_Enabled = true;
+ m_log.Info("[LOCAL USER GRID SERVICE CONNECTOR]: Local UserGrid connector enabled");
+ }
+ }
+ }
+
+ public void PostInitialise()
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void Close()
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+
+ scene.RegisterModuleInterface(m_service);
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public UserGridInfo GetUserGridInfo(string userID)
+ {
+ return m_service.GetUserGridInfo(userID);
+ }
+
+ public bool StoreUserGridInfo(UserGridInfo info)
+ {
+ return m_service.StoreUserGridInfo(info);
+ }
+ }
+}
\ No newline at end of file
--
cgit v1.1
From 60553e62a3f576b8bf6ab88a83b2d4550bd69d2b Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 5 Mar 2010 23:18:47 +0000
Subject: refactor: begin to move attachments code into a region module
---
.../Avatar/Attachments/AttachmentsModule.cs | 141 +++++++++++++++++++++
.../Framework/Interfaces/IAttachmentsModule.cs | 49 +++++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 15 ---
OpenSim/Region/Framework/Scenes/Scene.cs | 8 +-
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 86 +------------
.../Shared/Api/Implementation/LSL_Api.cs | 8 +-
6 files changed, 205 insertions(+), 102 deletions(-)
create mode 100644 OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
create mode 100644 OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
new file mode 100644
index 0000000..103a813
--- /dev/null
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -0,0 +1,141 @@
+/*
+ * 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.Reflection;
+using log4net;
+using Nini.Config;
+using OpenMetaverse;
+using OpenSim.Framework;
+using OpenSim.Region.Framework;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+
+namespace OpenSim.Region.CoreModules.Avatar.Attachments
+{
+ public class AttachmentsModule : IAttachmentsModule, IRegionModule
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ protected Scene m_scene = null;
+
+ public void Initialise(Scene scene, IConfigSource source)
+ {
+ scene.RegisterModuleInterface(this);
+ m_scene = scene;
+ }
+
+ public void PostInitialise()
+ {
+ }
+
+ public void Close()
+ {
+ }
+
+ public string Name
+ {
+ get { return "Attachments Module"; }
+ }
+
+ public bool IsSharedModule
+ {
+ get { return false; }
+ }
+
+ public bool AttachObject(
+ IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent)
+ {
+ SceneObjectGroup group = m_scene.GetGroupByPrim(objectLocalID);
+ if (group != null)
+ {
+ if (m_scene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId))
+ {
+ // If the attachment point isn't the same as the one previously used
+ // set it's offset position = 0 so that it appears on the attachment point
+ // and not in a weird location somewhere unknown.
+ if (AttachmentPt != 0 && AttachmentPt != (uint)group.GetAttachmentPoint())
+ {
+ attachPos = Vector3.Zero;
+ }
+
+ // AttachmentPt 0 means the client chose to 'wear' the attachment.
+ if (AttachmentPt == 0)
+ {
+ // Check object for stored attachment point
+ AttachmentPt = (uint)group.GetAttachmentPoint();
+ }
+
+ // if we still didn't find a suitable attachment point.......
+ if (AttachmentPt == 0)
+ {
+ // Stick it on left hand with Zero Offset from the attachment point.
+ AttachmentPt = (uint)AttachmentPoint.LeftHand;
+ attachPos = Vector3.Zero;
+ }
+
+ group.SetAttachmentPoint((byte)AttachmentPt);
+ group.AbsolutePosition = attachPos;
+
+ // Saves and gets itemID
+ UUID itemId;
+
+ if (group.GetFromItemID() == UUID.Zero)
+ {
+ m_scene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId, out itemId);
+ }
+ else
+ {
+ itemId = group.GetFromItemID();
+ }
+
+ m_scene.AttachObject(remoteClient, AttachmentPt, itemId, group);
+
+ group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent);
+
+ // In case it is later dropped again, don't let
+ // it get cleaned up
+ group.RootPart.RemFlag(PrimFlags.TemporaryOnRez);
+ group.HasGroupChanged = false;
+ }
+ else
+ {
+ remoteClient.SendAgentAlertMessage(
+ "You don't have sufficient permissions to attach this object", false);
+
+ return false;
+ }
+ }
+ else
+ {
+ m_log.DebugFormat("[SCENE GRAPH]: AttachObject found no such scene object {0}", objectLocalID);
+ return false;
+ }
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
new file mode 100644
index 0000000..c965bcf
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -0,0 +1,49 @@
+/*
+ * 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 OpenSim 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 OpenMetaverse;
+using OpenSim.Framework;
+
+namespace OpenSim.Region.Framework.Interfaces
+{
+ public interface IAttachmentsModule
+ {
+ ///
+ /// Attach an object to an avatar.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// true if the object was successfully attached, false otherwise
+ bool AttachObject(
+ IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent);
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 5f3cd8c..474fba9 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1903,21 +1903,6 @@ namespace OpenSim.Region.Framework.Scenes
}
///
- /// Attach an object.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- /// true if the object was successfully attached, false otherwise
- public bool AttachObject(IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent)
- {
- return m_sceneGraph.AttachObject(controllingClient, localID, attachPoint, rot, pos, silent);
- }
-
- ///
/// This registers the item as attached in a user's inventory
///
///
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index a880fe7..c83132f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -307,6 +307,7 @@ namespace OpenSim.Region.Framework.Scenes
protected IXMLRPC m_xmlrpcModule;
protected IWorldComm m_worldCommModule;
+ public IAttachmentsModule AttachmentsModule { get; set; }
protected IAvatarFactory m_AvatarFactory;
public IAvatarFactory AvatarFactory
{
@@ -1215,6 +1216,7 @@ namespace OpenSim.Region.Framework.Scenes
m_worldCommModule = RequestModuleInterface();
XferManager = RequestModuleInterface();
m_AvatarFactory = RequestModuleInterface();
+ AttachmentsModule = RequestModuleInterface();
m_serialiser = RequestModuleInterface();
m_dialogModule = RequestModuleInterface();
m_capsModule = RequestModuleInterface();
@@ -2405,9 +2407,11 @@ namespace OpenSim.Region.Framework.Scenes
//grp.SetFromAssetID(grp.RootPart.LastOwnerID);
m_log.DebugFormat(
"[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition);
+
+ if (AttachmentsModule != null)
+ AttachmentsModule.AttachObject(
+ sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false);
- AttachObject(
- sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false);
RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
grp.SendGroupFullUpdate();
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 22613e9..48744d7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -504,7 +504,7 @@ namespace OpenSim.Region.Framework.Scenes
return;
// Calls attach with a Zero position
- if (AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false))
+ if (m_parentScene.AttachmentsModule.AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false))
{
m_parentScene.SendAttachEvent(objectLocalID, part.ParentGroup.GetFromItemID(), remoteClient.AgentId);
@@ -547,8 +547,10 @@ namespace OpenSim.Region.Framework.Scenes
if (AttachmentPt != 0 && AttachmentPt != objatt.GetAttachmentPoint())
tainted = true;
- AttachObject(remoteClient, objatt.LocalId, AttachmentPt, Quaternion.Identity, objatt.AbsolutePosition, false);
+ m_parentScene.AttachmentsModule.AttachObject(
+ remoteClient, objatt.LocalId, AttachmentPt, Quaternion.Identity, objatt.AbsolutePosition, false);
//objatt.ScheduleGroupForFullUpdate();
+
if (tainted)
objatt.HasGroupChanged = true;
@@ -605,86 +607,6 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- ///
- /// Attach a scene object to an avatar.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- /// true if the attachment was successful, false otherwise
- protected internal bool AttachObject(
- IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent)
- {
- SceneObjectGroup group = GetGroupByPrim(objectLocalID);
- if (group != null)
- {
- if (m_parentScene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId))
- {
- // If the attachment point isn't the same as the one previously used
- // set it's offset position = 0 so that it appears on the attachment point
- // and not in a weird location somewhere unknown.
- if (AttachmentPt != 0 && AttachmentPt != (uint)group.GetAttachmentPoint())
- {
- attachPos = Vector3.Zero;
- }
-
- // AttachmentPt 0 means the client chose to 'wear' the attachment.
- if (AttachmentPt == 0)
- {
- // Check object for stored attachment point
- AttachmentPt = (uint)group.GetAttachmentPoint();
- }
-
- // if we still didn't find a suitable attachment point.......
- if (AttachmentPt == 0)
- {
- // Stick it on left hand with Zero Offset from the attachment point.
- AttachmentPt = (uint)AttachmentPoint.LeftHand;
- attachPos = Vector3.Zero;
- }
-
- group.SetAttachmentPoint((byte)AttachmentPt);
- group.AbsolutePosition = attachPos;
-
- // Saves and gets itemID
- UUID itemId;
-
- if (group.GetFromItemID() == UUID.Zero)
- {
- m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId, out itemId);
- }
- else
- {
- itemId = group.GetFromItemID();
- }
-
- m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group);
-
- group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent);
- // In case it is later dropped again, don't let
- // it get cleaned up
- //
- group.RootPart.RemFlag(PrimFlags.TemporaryOnRez);
- group.HasGroupChanged = false;
- }
- else
- {
- remoteClient.SendAgentAlertMessage("You don't have sufficient permissions to attach this object", false);
- return false;
- }
- }
- else
- {
- m_log.DebugFormat("[SCENE GRAPH]: AttachObject found no such scene object {0}", objectLocalID);
- return false;
- }
-
- return true;
- }
-
protected internal ScenePresence CreateAndAddChildScenePresence(IClientAPI client, AvatarAppearance appearance)
{
ScenePresence newAvatar = null;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 0134b03..0eee147 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2896,9 +2896,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
- m_ScriptEngine.World.AttachObject(presence.ControllingClient,
- grp.LocalId, (uint)attachment, Quaternion.Identity,
- Vector3.Zero, false);
+ IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
+ if (attachmentsModule != null)
+ attachmentsModule.AttachObject(
+ presence.ControllingClient, grp.LocalId,
+ (uint)attachment, Quaternion.Identity, Vector3.Zero, false);
}
}
--
cgit v1.1
From b72c2dc6e88fa2ea6bb97e0b32d0cdbb2ea78c4a Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 5 Mar 2010 23:29:24 +0000
Subject: refactor: move user inventory side of RezSingleAttachment to module
---
.../Avatar/Attachments/AttachmentsModule.cs | 30 ++++++++++++++++++++++
.../Framework/Interfaces/IAttachmentsModule.cs | 12 +++++++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 30 +---------------------
3 files changed, 43 insertions(+), 29 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 103a813..0ea1f63 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -137,5 +137,35 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
return true;
}
+
+ ///
+ /// Update the user inventory to reflect an attachment
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public UUID SetAttachmentInventoryStatus(
+ SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
+ {
+ m_log.DebugFormat(
+ "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
+ remoteClient.Name, att.Name, itemID);
+
+ if (!att.IsDeleted)
+ AttachmentPt = att.RootPart.AttachmentPoint;
+
+ ScenePresence presence;
+ if (m_scene.TryGetAvatar(remoteClient.AgentId, out presence))
+ {
+ InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
+ item = m_scene.InventoryService.GetItem(item);
+
+ presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
+ }
+
+ return att.UUID;
+ }
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index c965bcf..5e5df4b 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -28,6 +28,7 @@
using System;
using OpenMetaverse;
using OpenSim.Framework;
+using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Region.Framework.Interfaces
{
@@ -45,5 +46,16 @@ namespace OpenSim.Region.Framework.Interfaces
/// true if the object was successfully attached, false otherwise
bool AttachObject(
IClientAPI controllingClient, uint localID, uint attachPoint, Quaternion rot, Vector3 pos, bool silent);
+
+ ///
+ /// Update the user inventory to the attachment of an item
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ UUID SetAttachmentInventoryStatus(
+ SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 474fba9..6a5dc56 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1862,35 +1862,7 @@ namespace OpenSim.Region.Framework.Scenes
return UUID.Zero;
}
- return RezSingleAttachment(att, remoteClient, itemID, AttachmentPt);
- }
-
- ///
- /// Update the user inventory to reflect an attachment
- ///
- ///
- ///
- ///
- ///
- ///
- public UUID RezSingleAttachment(SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
- {
- m_log.DebugFormat(
- "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
- remoteClient.Name, att.Name, itemID);
-
- if (!att.IsDeleted)
- AttachmentPt = att.RootPart.AttachmentPoint;
-
- ScenePresence presence;
- if (TryGetAvatar(remoteClient.AgentId, out presence))
- {
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = InventoryService.GetItem(item);
-
- presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
- }
- return att.UUID;
+ return AttachmentsModule.SetAttachmentInventoryStatus(att, remoteClient, itemID, AttachmentPt);
}
public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
--
cgit v1.1
From 71797af540bfa1ccb1ccfe856b42350844531607 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 5 Mar 2010 23:35:49 +0000
Subject: refactor: move another AttachObject method
---
.../Avatar/Attachments/AttachmentsModule.cs | 47 +++++++++++++++++++++-
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 44 --------------------
2 files changed, 46 insertions(+), 45 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 0ea1f63..530a21c 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -112,7 +112,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
itemId = group.GetFromItemID();
}
- m_scene.AttachObject(remoteClient, AttachmentPt, itemId, group);
+ SetAttachmentInventoryStatus(remoteClient, AttachmentPt, itemId, group);
group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent);
@@ -167,5 +167,50 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
return att.UUID;
}
+
+ ///
+ /// Update the user inventory to reflect an attachment
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void SetAttachmentInventoryStatus(
+ IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att)
+ {
+// m_log.DebugFormat(
+// "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}",
+// att.Name, remoteClient.Name, AttachmentPt, itemID);
+
+ if (UUID.Zero == itemID)
+ {
+ m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID.");
+ return;
+ }
+
+ if (0 == AttachmentPt)
+ {
+ m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error attachment point.");
+ return;
+ }
+
+ if (null == att.RootPart)
+ {
+ m_log.Error("[SCENE INVENTORY]: Unable to save attachment for a prim without the rootpart!");
+ return;
+ }
+
+ ScenePresence presence;
+ if (m_scene.TryGetAvatar(remoteClient.AgentId, out presence))
+ {
+ // XXYY!!
+ InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
+ item = m_scene.InventoryService.GetItem(item);
+ presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */);
+
+ if (m_scene.AvatarFactory != null)
+ m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 6a5dc56..bd3b433 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1874,50 +1874,6 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- ///
- /// This registers the item as attached in a user's inventory
- ///
- ///
- ///
- ///
- ///
- public void AttachObject(IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att)
- {
-// m_log.DebugFormat(
-// "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}",
-// att.Name, remoteClient.Name, AttachmentPt, itemID);
-
- if (UUID.Zero == itemID)
- {
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID.");
- return;
- }
-
- if (0 == AttachmentPt)
- {
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error attachment point.");
- return;
- }
-
- if (null == att.RootPart)
- {
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment for a prim without the rootpart!");
- return;
- }
-
- ScenePresence presence;
- if (TryGetAvatar(remoteClient.AgentId, out presence))
- {
- // XXYY!!
- InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
- item = InventoryService.GetItem(item);
- presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */);
-
- if (m_AvatarFactory != null)
- m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
- }
- }
-
public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient)
{
SceneObjectPart part = GetSceneObjectPart(itemID);
--
cgit v1.1
From 395f343498bc429c0360201991147c6e089b0730 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 6 Mar 2010 00:07:47 +0000
Subject: refactor: Move DetachSingleAttachmentToInv to region module need to
rationalize method names later
---
.../Avatar/Attachments/AttachmentsModule.cs | 71 +++++++++++++++++-----
.../Framework/Interfaces/IAttachmentsModule.cs | 11 ++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 20 +-----
OpenSim/Region/Framework/Scenes/Scene.cs | 18 +++---
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 35 +----------
.../Shared/Api/Implementation/LSL_Api.cs | 5 +-
6 files changed, 82 insertions(+), 78 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 530a21c..d458364 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -25,6 +25,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+using System.Collections.Generic;
using System.Reflection;
using log4net;
using Nini.Config;
@@ -131,26 +132,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
}
else
{
- m_log.DebugFormat("[SCENE GRAPH]: AttachObject found no such scene object {0}", objectLocalID);
+ m_log.DebugFormat("[ATTACHMENTS MODULE]: AttachObject found no such scene object {0}", objectLocalID);
return false;
}
return true;
- }
-
- ///
- /// Update the user inventory to reflect an attachment
- ///
- ///
- ///
- ///
- ///
- ///
+ }
+
public UUID SetAttachmentInventoryStatus(
SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
{
m_log.DebugFormat(
- "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
+ "[ATTACHMENTS MODULEY]: Updating inventory of {0} to show attachment of {1} (item ID {2})",
remoteClient.Name, att.Name, itemID);
if (!att.IsDeleted)
@@ -184,19 +177,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
if (UUID.Zero == itemID)
{
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID.");
+ m_log.Error("[ATTACHMENTS MODULE]: Unable to save attachment. Error inventory item ID.");
return;
}
if (0 == AttachmentPt)
{
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error attachment point.");
+ m_log.Error("[ATTACHMENTS MODULE]: Unable to save attachment. Error attachment point.");
return;
}
if (null == att.RootPart)
{
- m_log.Error("[SCENE INVENTORY]: Unable to save attachment for a prim without the rootpart!");
+ m_log.Error("[ATTACHMENTS MODULE]: Unable to save attachment for a prim without the rootpart!");
return;
}
@@ -212,5 +205,53 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
}
}
+
+ public void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient)
+ {
+ ScenePresence presence;
+ if (m_scene.TryGetAvatar(remoteClient.AgentId, out presence))
+ {
+ presence.Appearance.DetachAttachment(itemID);
+
+ // Save avatar attachment information
+ if (m_scene.AvatarFactory != null)
+ {
+ m_log.Debug("[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", ItemID: " + itemID);
+ m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
+ }
+ }
+
+ DetachSingleAttachmentToInv(itemID, remoteClient);
+ }
+
+ // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards.
+ // To LocalId or UUID, *THAT* is the question. How now Brown UUID??
+ protected void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
+ {
+ if (itemID == UUID.Zero) // If this happened, someone made a mistake....
+ return;
+
+ // We can NOT use the dictionries here, as we are looking
+ // for an entity by the fromAssetID, which is NOT the prim UUID
+ List detachEntities = m_scene.GetEntities();
+ SceneObjectGroup group;
+
+ foreach (EntityBase entity in detachEntities)
+ {
+ if (entity is SceneObjectGroup)
+ {
+ group = (SceneObjectGroup)entity;
+ if (group.GetFromItemID() == itemID)
+ {
+ m_scene.EventManager.TriggerOnAttach(group.LocalId, itemID, UUID.Zero);
+ group.DetachToInventoryPrep();
+ m_log.Debug("[ATTACHMENTS MODULE]: Saving attachpoint: " + ((uint)group.GetAttachmentPoint()).ToString());
+ m_scene.UpdateKnownItem(remoteClient, group,group.GetFromItemID(), group.OwnerID);
+ m_scene.DeleteSceneObject(group, false);
+ return;
+ }
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 5e5df4b..367ff3d 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -57,5 +57,16 @@ namespace OpenSim.Region.Framework.Interfaces
///
UUID SetAttachmentInventoryStatus(
SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
+
+ ///
+ /// Update the user inventory to show a detach.
+ ///
+ ///
+ /// A
+ ///
+ ///
+ /// A
+ ///
+ void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index bd3b433..dad0efd 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1858,7 +1858,7 @@ namespace OpenSim.Region.Framework.Scenes
if (att == null)
{
- DetachSingleAttachmentToInv(itemID, remoteClient);
+ AttachmentsModule.ShowDetachInUserInventory(itemID, remoteClient);
return UUID.Zero;
}
@@ -1904,24 +1904,6 @@ namespace OpenSim.Region.Framework.Scenes
SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero);
}
- public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
- {
- ScenePresence presence;
- if (TryGetAvatar(remoteClient.AgentId, out presence))
- {
- presence.Appearance.DetachAttachment(itemID);
-
- // Save avatar attachment information
- if (m_AvatarFactory != null)
- {
- m_log.Info("[SCENE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", ItemID: " + itemID);
- m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
- }
- }
-
- m_sceneGraph.DetachSingleAttachmentToInv(itemID, remoteClient);
- }
-
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
{
EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID);
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index c83132f..7c0375e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2646,10 +2646,12 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void SubscribeToClientAttachmentEvents(IClientAPI client)
{
client.OnRezSingleAttachmentFromInv += RezSingleAttachment;
- client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachments;
- client.OnDetachAttachmentIntoInv += DetachSingleAttachmentToInv;
+ client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachments;
client.OnObjectAttach += m_sceneGraph.AttachObject;
client.OnObjectDetach += m_sceneGraph.DetachObject;
+
+ if (AttachmentsModule != null)
+ client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory;
}
public virtual void SubscribeToClientTeleportEvents(IClientAPI client)
@@ -2696,8 +2698,7 @@ namespace OpenSim.Region.Framework.Scenes
}
protected virtual void UnsubscribeToClientEvents(IClientAPI client)
- {
-
+ {
}
///
@@ -2719,7 +2720,6 @@ namespace OpenSim.Region.Framework.Scenes
UnSubscribeToClientNetworkEvents(client);
-
// EventManager.TriggerOnNewClient(client);
}
@@ -2799,12 +2799,14 @@ namespace OpenSim.Region.Framework.Scenes
}
public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client)
- {
- client.OnRezSingleAttachmentFromInv -= RezSingleAttachment;
+ {
client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachments;
- client.OnDetachAttachmentIntoInv -= DetachSingleAttachmentToInv;
+ client.OnRezSingleAttachmentFromInv -= RezSingleAttachment;
client.OnObjectAttach -= m_sceneGraph.AttachObject;
client.OnObjectDetach -= m_sceneGraph.DetachObject;
+
+ if (AttachmentsModule != null)
+ client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory;
}
public virtual void UnSubscribeToClientTeleportEvents(IClientAPI client)
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 48744d7..380722d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -452,7 +452,7 @@ namespace OpenSim.Region.Framework.Scenes
if (group != null)
{
//group.DetachToGround();
- m_parentScene.DetachSingleAttachmentToInv(group.GetFromItemID(), remoteClient);
+ m_parentScene.AttachmentsModule.ShowDetachInUserInventory(group.GetFromItemID(), remoteClient);
}
}
@@ -574,39 +574,6 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
- // What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards.
- // To LocalId or UUID, *THAT* is the question. How now Brown UUID??
- public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
- {
- if (itemID == UUID.Zero) // If this happened, someone made a mistake....
- return;
-
- // We can NOT use the dictionries here, as we are looking
- // for an entity by the fromAssetID, which is NOT the prim UUID
- //
- List detachEntities = GetEntities();
- SceneObjectGroup group;
-
- foreach (EntityBase entity in detachEntities)
- {
- if (entity is SceneObjectGroup)
- {
- group = (SceneObjectGroup)entity;
- if (group.GetFromItemID() == itemID)
- {
- m_parentScene.SendAttachEvent(group.LocalId, itemID, UUID.Zero);
- group.DetachToInventoryPrep();
- m_log.Debug("[DETACH]: Saving attachpoint: " +
- ((uint)group.GetAttachmentPoint()).ToString());
- m_parentScene.UpdateKnownItem(remoteClient, group,
- group.GetFromItemID(), group.OwnerID);
- m_parentScene.DeleteSceneObject(group, false);
- return;
- }
- }
- }
- }
-
protected internal ScenePresence CreateAndAddChildScenePresence(IClientAPI client, AvatarAppearance appearance)
{
ScenePresence newAvatar = null;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 0eee147..8217248 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2931,8 +2931,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
- m_ScriptEngine.World.DetachSingleAttachmentToInv(itemID,
- presence.ControllingClient);
+ IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
+ if (attachmentsModule != null)
+ attachmentsModule.ShowDetachInUserInventory(itemID, presence.ControllingClient);
}
}
--
cgit v1.1
From cde3c20ba3f4f506fc69d3db54171f88223219aa Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Fri, 5 Mar 2010 17:01:31 -0800
Subject: * Fixed an order of operations bug in CheckForSignificantMovement()
that was causing a flood of child updates to neighbors on login * Removed an
unnecessary call to the presence service
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 465e916..4256be9 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2675,6 +2675,9 @@ namespace OpenSim.Region.Framework.Scenes
if (Util.GetDistanceTo(AbsolutePosition, m_lastChildAgentUpdatePosition) >= Scene.ChildReprioritizationDistance ||
Util.GetDistanceTo(CameraPosition, m_lastChildAgentUpdateCamPosition) >= Scene.ChildReprioritizationDistance)
{
+ m_lastChildAgentUpdatePosition = AbsolutePosition;
+ m_lastChildAgentUpdateCamPosition = CameraPosition;
+
ChildAgentDataUpdate cadu = new ChildAgentDataUpdate();
cadu.ActiveGroupID = UUID.Zero.Guid;
cadu.AgentID = UUID.Guid;
@@ -2683,8 +2686,6 @@ namespace OpenSim.Region.Framework.Scenes
Vector3 tempCameraCenter = m_CameraCenter;
cadu.cameraPosition = tempCameraCenter;
cadu.drawdistance = m_DrawDistance;
- if (m_scene.Permissions.IsGod(new UUID(cadu.AgentID)))
- cadu.godlevel = m_godlevel;
cadu.GroupAccess = 0;
cadu.Position = AbsolutePosition;
cadu.regionHandle = m_rootRegionHandle;
@@ -2707,9 +2708,6 @@ namespace OpenSim.Region.Framework.Scenes
agentpos.CopyFrom(cadu);
m_scene.SendOutChildAgentUpdates(agentpos, this);
-
- m_lastChildAgentUpdatePosition = AbsolutePosition;
- m_lastChildAgentUpdateCamPosition = CameraPosition;
}
}
--
cgit v1.1
From 36afd0bfd1f80131a9f8dd72cc8b3eb71f060e02 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Fri, 5 Mar 2010 17:04:20 -0800
Subject: * Cache packed throttle data to avoid repeated allocations in
CheckForSignificantMovement() * Removed a lock on "return m_neighbours.Count"
in GetInaccurateNeighborCount(). Dictionary<>.Count by itself does not
benefit from locking
---
.../Region/ClientStack/LindenUDP/LLUDPClient.cs | 35 +++++++++++++++-------
OpenSim/Region/Framework/Scenes/Scene.cs | 5 +---
2 files changed, 25 insertions(+), 15 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
index 55d9c9c..6232c48 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs
@@ -144,6 +144,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// A reference to the LLUDPServer that is managing this client
private readonly LLUDPServer m_udpServer;
+ /// Caches packed throttle information
+ private byte[] m_packedThrottles;
+
private int m_defaultRTO = 3000;
private int m_maxRTO = 60000;
@@ -350,21 +353,31 @@ namespace OpenSim.Region.ClientStack.LindenUDP
bucket = m_throttleCategories[(int)ThrottleOutPacketType.Texture];
bucket.DripRate = texture;
bucket.MaxBurst = texture;
+
+ // Reset the packed throttles cached data
+ m_packedThrottles = null;
}
public byte[] GetThrottlesPacked()
{
- byte[] data = new byte[7 * 4];
- int i = 0;
-
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)(m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate) +
- m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate), 0, data, i, 4); i += 4;
- Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate), 0, data, i, 4); i += 4;
+ byte[] data = m_packedThrottles;
+
+ if (data == null)
+ {
+ data = new byte[7 * 4];
+ int i = 0;
+
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Resend].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Land].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Wind].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Cloud].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)(m_throttleCategories[(int)ThrottleOutPacketType.Task].DripRate) +
+ m_throttleCategories[(int)ThrottleOutPacketType.State].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Texture].DripRate), 0, data, i, 4); i += 4;
+ Buffer.BlockCopy(Utils.FloatToBytes((float)m_throttleCategories[(int)ThrottleOutPacketType.Asset].DripRate), 0, data, i, 4); i += 4;
+
+ m_packedThrottles = data;
+ }
return data;
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index a880fe7..8f9663c 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1132,10 +1132,7 @@ namespace OpenSim.Region.Framework.Scenes
public int GetInaccurateNeighborCount()
{
- lock (m_neighbours)
- {
- return m_neighbours.Count;
- }
+ return m_neighbours.Count;
}
// This is the method that shuts down the scene.
--
cgit v1.1
From 5171464ac199f958a9a8a11664958260a88e863d Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 5 Mar 2010 21:36:45 -0800
Subject: Justin, I must have been dyslexic when I wrote UserGridService as the
name for it. GridUserService makes more sense; it's the user of the grid,
"grid user". I changed it everywhere.
---
.../GridUser/LocalGridUserServiceConnector.cs | 139 +++++++++++++++++++++
.../UserGrid/LocalUserGridServiceConnector.cs | 139 ---------------------
2 files changed, 139 insertions(+), 139 deletions(-)
create mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/LocalGridUserServiceConnector.cs
delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/LocalGridUserServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/LocalGridUserServiceConnector.cs
new file mode 100644
index 0000000..d5fae23
--- /dev/null
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/GridUser/LocalGridUserServiceConnector.cs
@@ -0,0 +1,139 @@
+/*
+ * 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 System.Reflection;
+using log4net;
+using Nini.Config;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Server.Base;
+using OpenSim.Services.Interfaces;
+
+using OpenMetaverse;
+
+namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.GridUser
+{
+ public class LocalGridUserServicesConnector : ISharedRegionModule, IGridUserService
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private IGridUserService m_service;
+
+ private bool m_Enabled = false;
+
+ public Type ReplaceableInterface
+ {
+ get { return null; }
+ }
+
+ public string Name
+ {
+ get { return "LocalGridUserServicesConnector"; }
+ }
+
+ public void Initialise(IConfigSource source)
+ {
+ IConfig moduleConfig = source.Configs["Modules"];
+ if (moduleConfig != null)
+ {
+ string name = moduleConfig.GetString("GridUserServices", "");
+ if (name == Name)
+ {
+ IConfig userConfig = source.Configs["GridUserService"];
+ if (userConfig == null)
+ {
+ m_log.Error("[LOCAL GRID USER SERVICE CONNECTOR]: GridUserService missing from ini files");
+ return;
+ }
+
+ string serviceDll = userConfig.GetString("LocalServiceModule", String.Empty);
+
+ if (serviceDll == String.Empty)
+ {
+ m_log.Error("[LOCAL GRID USER SERVICE CONNECTOR]: No LocalServiceModule named in section GridUserService");
+ return;
+ }
+
+ Object[] args = new Object[] { source };
+ m_service = ServerUtils.LoadPlugin(serviceDll, args);
+
+ if (m_service == null)
+ {
+ m_log.Error("[LOCAL GRID USER SERVICE CONNECTOR]: Can't load GridUser service");
+ return;
+ }
+ m_Enabled = true;
+ m_log.Info("[LOCAL GRID USER SERVICE CONNECTOR]: Local GridUser connector enabled");
+ }
+ }
+ }
+
+ public void PostInitialise()
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void Close()
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+
+ scene.RegisterModuleInterface(m_service);
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+ }
+
+ public GridUserInfo GetGridUserInfo(string userID)
+ {
+ return m_service.GetGridUserInfo(userID);
+ }
+
+ public bool StoreGridUserInfo(GridUserInfo info)
+ {
+ return m_service.StoreGridUserInfo(info);
+ }
+ }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
deleted file mode 100644
index f4309fe..0000000
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserGrid/LocalUserGridServiceConnector.cs
+++ /dev/null
@@ -1,139 +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 System.Reflection;
-using log4net;
-using Nini.Config;
-using OpenSim.Region.Framework.Interfaces;
-using OpenSim.Region.Framework.Scenes;
-using OpenSim.Server.Base;
-using OpenSim.Services.Interfaces;
-
-using OpenMetaverse;
-
-namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserGrid
-{
- public class LocalUserGridServicesConnector : ISharedRegionModule, IUserGridService
- {
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- private IUserGridService m_service;
-
- private bool m_Enabled = false;
-
- public Type ReplaceableInterface
- {
- get { return null; }
- }
-
- public string Name
- {
- get { return "LocalUserGridServicesConnector"; }
- }
-
- public void Initialise(IConfigSource source)
- {
- IConfig moduleConfig = source.Configs["Modules"];
- if (moduleConfig != null)
- {
- string name = moduleConfig.GetString("UserGridServices", "");
- if (name == Name)
- {
- IConfig userConfig = source.Configs["UserGridService"];
- if (userConfig == null)
- {
- m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: UserGridService missing from ini files");
- return;
- }
-
- string serviceDll = userConfig.GetString("LocalServiceModule", String.Empty);
-
- if (serviceDll == String.Empty)
- {
- m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: No LocalServiceModule named in section UserGridService");
- return;
- }
-
- Object[] args = new Object[] { source };
- m_service = ServerUtils.LoadPlugin(serviceDll, args);
-
- if (m_service == null)
- {
- m_log.Error("[LOCAL USER GRID SERVICE CONNECTOR]: Can't load UserGrid service");
- return;
- }
- m_Enabled = true;
- m_log.Info("[LOCAL USER GRID SERVICE CONNECTOR]: Local UserGrid connector enabled");
- }
- }
- }
-
- public void PostInitialise()
- {
- if (!m_Enabled)
- return;
- }
-
- public void Close()
- {
- if (!m_Enabled)
- return;
- }
-
- public void AddRegion(Scene scene)
- {
- if (!m_Enabled)
- return;
-
- scene.RegisterModuleInterface(m_service);
- }
-
- public void RemoveRegion(Scene scene)
- {
- if (!m_Enabled)
- return;
- }
-
- public void RegionLoaded(Scene scene)
- {
- if (!m_Enabled)
- return;
- }
-
- public UserGridInfo GetUserGridInfo(string userID)
- {
- return m_service.GetUserGridInfo(userID);
- }
-
- public bool StoreUserGridInfo(UserGridInfo info)
- {
- return m_service.StoreUserGridInfo(info);
- }
- }
-}
\ No newline at end of file
--
cgit v1.1