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.
---
.../Presence/LocalPresenceServiceConnector.cs | 6 +++++-
.../Presence/Tests/PresenceConnectorsTests.cs | 13 +++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/CoreModules')
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;
--
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/CoreModules')
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 +++++++++++++++++++++
1 file changed, 141 insertions(+)
create mode 100644 OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
(limited to 'OpenSim/Region/CoreModules')
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
--
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 ++++++++++++++++++++++
1 file changed, 30 insertions(+)
(limited to 'OpenSim/Region/CoreModules')
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
--
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 +++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/CoreModules')
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
--
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 +++++++++++++++++-----
1 file changed, 56 insertions(+), 15 deletions(-)
(limited to 'OpenSim/Region/CoreModules')
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
--
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/CoreModules')
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