From f45a69821b04fd743b7e79ab594484d055e06226 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Tue, 22 Dec 2009 21:00:46 -0800
Subject: Added Close() to Inventory/Archiver/InventoryArchiveReadRequest, so
that the stream can be closed.
---
.../Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index b778389..f299b0c 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -174,7 +174,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
return nodesLoaded;
}
-
+
+ public void Close()
+ {
+ if (m_loadStream != null)
+ m_loadStream.Close();
+ }
+
///
/// Replicate the inventory paths in the archive to the user's inventory as necessary.
///
--
cgit v1.1
From 9c294c566313c4d2a97d519b9efd08c7ca0f43db Mon Sep 17 00:00:00 2001
From: dr scofield (aka dirk husemann)
Date: Wed, 23 Dec 2009 18:33:54 +0100
Subject: - commented out unused method ConvertIHttpClientContextToOSHttp
---
OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 08f1bec..857c584 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -322,15 +322,15 @@ namespace OpenSim.Framework.Servers.HttpServer
HandleRequest(req, resp);
}
- public void ConvertIHttpClientContextToOSHttp(object stateinfo)
- {
- HttpServerContextObj objstate = (HttpServerContextObj)stateinfo;
+ // public void ConvertIHttpClientContextToOSHttp(object stateinfo)
+ // {
+ // HttpServerContextObj objstate = (HttpServerContextObj)stateinfo;
- OSHttpRequest request = objstate.oreq;
- OSHttpResponse resp = objstate.oresp;
+ // OSHttpRequest request = objstate.oreq;
+ // OSHttpResponse resp = objstate.oresp;
- HandleRequest(request,resp);
- }
+ // HandleRequest(request,resp);
+ // }
public virtual void HandleRequest(OSHttpRequest request, OSHttpResponse response)
{
--
cgit v1.1
From fddefff28479b6874235419dd5d26214afabb4f2 Mon Sep 17 00:00:00 2001
From: Charles Krinke
Date: Wed, 23 Dec 2009 10:34:11 -0800
Subject: Thank you kindly, Ziah for a patch that adds the channel to the class
ChatEventArgs and retrieves it's value along with the others from the
OSChatMessage in HandleChatPackage. With this the MRM Script can check if a
ChatEvent is coming in on a specifc Channel. The Second Part adds the Method
say(string msg , int channel) to send a chat message on the specified
channel. The idea behind this is to enable MRM's to communicate with regular
LSL or OSSL Scripts so that they may can act as a Backend to access a
Database or do business Logic for those Scripts.
Signed-off-by: Charles Krinke
---
.../OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs | 2 ++
.../OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs | 1 +
OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs | 9 +++++++++
OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs | 6 ++++--
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
index 19f7210..9d64667 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
@@ -179,6 +179,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
///
/// The message to send to the user
void Say(string msg);
+
+ void Say(string msg,int channel);
////
/// Grants access to the objects inventory
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs
index 3c14ed5..3b3b3d0 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs
@@ -41,6 +41,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
{
public string Text;
public IEntity Sender;
+ public int Channel;
}
public delegate void OnChatDelegate(IWorld sender, ChatEventArgs e);
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
index 143c454..9596d13 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
@@ -384,6 +384,15 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false);
}
+ public void Say(string msg,int channel)
+ {
+ if (!CanEdit())
+ return;
+
+ SceneObjectPart sop = GetSOP();
+ m_rootScene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Say,channel, sop.AbsolutePosition, sop.Name, sop.UUID, false);
+ }
+
#endregion
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
index 6fcb5d0..82020cb 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
@@ -148,7 +148,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
ChatEventArgs e = new ChatEventArgs();
e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId, m_security);
e.Text = chat.Message;
-
+ e.Channel = chat.Channel;
+
_OnChat(this, e);
return;
}
@@ -158,7 +159,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
ChatEventArgs e = new ChatEventArgs();
e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID, m_security);
e.Text = chat.Message;
-
+ e.Channel = chat.Channel;
+
_OnChat(this, e);
return;
}
--
cgit v1.1
From c27aa3749c093d87b7d3216e7045d9fab948b4e1 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 23 Dec 2009 11:45:39 -0800
Subject: Change in how the Library returns its descendant folders, so that it
includes folders added after the initial load off the file system, by other
mechanisms.
---
.../Communications/Cache/LibraryRootFolder.cs | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
index 42e6510..74ba0a5 100644
--- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
+++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs
@@ -232,7 +232,26 @@ namespace OpenSim.Framework.Communications.Cache
///
public Dictionary RequestSelfAndDescendentFolders()
{
- return libraryFolders;
+ Dictionary fs = new Dictionary();
+ fs.Add(ID, this);
+ List fis = TraverseFolder(this);
+ foreach (InventoryFolderImpl f in fis)
+ {
+ fs.Add(f.ID, f);
+ }
+ //return libraryFolders;
+ return fs;
+ }
+
+ private List TraverseFolder(InventoryFolderImpl node)
+ {
+ List folders = node.RequestListOfFolderImpls();
+ List subs = new List();
+ foreach (InventoryFolderImpl f in folders)
+ subs.AddRange(TraverseFolder(f));
+
+ folders.AddRange(subs);
+ return folders;
}
}
}
--
cgit v1.1
From c05a35cc7168d13655f7e3a38e0e0df0f2bf1060 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 23 Dec 2009 21:20:48 +0000
Subject: Fix a bounds exception I came across in IAR restore
---
.../Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index b778389..304c081 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -258,6 +258,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
= rawDirsToCreate[i].LastIndexOf(
ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
+ if (identicalNameIdentifierIndex < 0)
+ {
+ i++;
+ continue;
+ }
string newFolderName = rawDirsToCreate[i].Remove(identicalNameIdentifierIndex);
newFolderName = InventoryArchiveUtils.UnescapeArchivePath(newFolderName);
--
cgit v1.1
From 53386b6f1f6fe02f3b6e544ce5d50bdf2cc6e7ec Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 23 Dec 2009 23:09:41 +0000
Subject: Add saving assets from gestures to IAR
---
OpenSim/Region/Framework/Scenes/UuidGatherer.cs | 42 ++++++++++++++++++++++++-
1 file changed, 41 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
index 930af81..7e3c192 100644
--- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
+++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
@@ -91,6 +91,10 @@ namespace OpenSim.Region.Framework.Scenes
{
GetWearableAssetUuids(assetUuid, assetUuids);
}
+ else if (AssetType.Gesture == assetType)
+ {
+ GetGestureAssetUuids(assetUuid, assetUuids);
+ }
else if (AssetType.LSLText == assetType)
{
GetScriptAssetUuids(assetUuid, assetUuids);
@@ -278,5 +282,41 @@ namespace OpenSim.Region.Framework.Scenes
GatherAssetUuids(sog, assetUuids);
}
}
+
+ protected void GetGestureAssetUuids(UUID gestureUuid, IDictionary assetUuids)
+ {
+ AssetBase assetBase = GetAsset(gestureUuid);
+
+ MemoryStream ms = new MemoryStream(assetBase.Data);
+ StreamReader sr = new StreamReader(ms);
+
+ sr.ReadLine(); // Unknown (Version?)
+ sr.ReadLine(); // Unknown
+ sr.ReadLine(); // Unknown
+ sr.ReadLine(); // Name
+ sr.ReadLine(); // Comment ?
+ int count = Convert.ToInt32(sr.ReadLine()); // Item count
+
+ for (int i = 0 ; i < count ; i++)
+ {
+ string type = sr.ReadLine();
+ if (type == null)
+ break;
+ string name = sr.ReadLine();
+ if (name == null)
+ break;
+ string id = sr.ReadLine();
+ if (id == null)
+ break;
+ string unknown = sr.ReadLine();
+ if (unknown == null)
+ break;
+
+ // If it can be parsed as a UUID, it is an asset ID
+ UUID uuid;
+ if (UUID.Parse(id, out uuid))
+ assetUuids[uuid] = 1;
+ }
+ }
}
-}
\ No newline at end of file
+}
--
cgit v1.1
From 908992a105280780cbdc8955ee1926e535176875 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 23 Dec 2009 17:10:37 -0800
Subject: Fixes the broken build of the previous commit.
---
OpenSim/Region/Framework/Scenes/UuidGatherer.cs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
index 7e3c192..3edb677 100644
--- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
+++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
@@ -27,6 +27,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Threading;
@@ -314,7 +315,7 @@ namespace OpenSim.Region.Framework.Scenes
// If it can be parsed as a UUID, it is an asset ID
UUID uuid;
- if (UUID.Parse(id, out uuid))
+ if (UUID.TryParse(id, out uuid))
assetUuids[uuid] = 1;
}
}
--
cgit v1.1
From 1fa938aab0b748768ff3528e41ba76dd6baa1bf3 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 23 Dec 2009 17:31:30 -0800
Subject: Library Module: allows adding folders/items to the Library from IAR
files placed under bin/Library. This works only for standalones.
---
.../CoreModules/Framework/Library/LibraryModule.cs | 219 +++++++++++++++++
.../Framework/Library/LocalInventoryService.cs | 263 +++++++++++++++++++++
.../Resources/CoreModulePlugin.addin.xml | 1 +
bin/Library/.keep | 0
bin/config-include/Standalone.ini | 2 +
bin/config-include/StandaloneCommon.ini.example | 4 +
bin/config-include/StandaloneHypergrid.ini | 2 +-
7 files changed, 490 insertions(+), 1 deletion(-)
create mode 100644 OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
create mode 100644 OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
create mode 100644 bin/Library/.keep
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
new file mode 100644
index 0000000..df7df46
--- /dev/null
+++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
@@ -0,0 +1,219 @@
+/*
+ * 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.IO;
+using System.Reflection;
+
+using OpenSim.Framework;
+using OpenSim.Framework.Communications;
+using OpenSim.Framework.Communications.Cache;
+using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver;
+using OpenSim.Region.Framework;
+using OpenSim.Region.Framework.Interfaces;
+using OpenSim.Region.Framework.Scenes;
+using OpenSim.Services.Interfaces;
+
+using OpenMetaverse;
+using log4net;
+using Nini.Config;
+
+namespace OpenSim.Region.CoreModules.Framework.Library
+{
+ public class LibraryModule : ISharedRegionModule
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ private static bool m_HasRunOnce = false;
+
+ private bool m_Enabled = false;
+ private string m_LibraryName = "OpenSim Library";
+ private Scene m_Scene;
+
+ #region ISharedRegionModule
+
+ public void Initialise(IConfigSource config)
+ {
+ m_Enabled = config.Configs["Modules"].GetBoolean("LibraryModule", m_Enabled);
+ if (m_Enabled)
+ {
+ IConfig libConfig = config.Configs["LibraryModule"];
+ if (libConfig != null)
+ m_LibraryName = libConfig.GetString("LibraryName", m_LibraryName);
+ }
+ }
+
+ public bool IsSharedModule
+ {
+ get { return true; }
+ }
+
+ public string Name
+ {
+ get { return "Library Module"; }
+ }
+
+ public Type ReplaceableInterface
+ {
+ get { return null; }
+ }
+
+ public void AddRegion(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+
+ // Store only the first scene
+ if (m_Scene == null)
+ {
+ m_Scene = scene;
+ }
+ }
+
+ public void RemoveRegion(Scene scene)
+ {
+ }
+
+ public void RegionLoaded(Scene scene)
+ {
+ if (!m_Enabled)
+ return;
+
+ // This will never run more than once, even if the region is restarted
+ if (!m_HasRunOnce)
+ {
+ LoadLibrariesFromArchives();
+ //DumpLibrary();
+ m_HasRunOnce = true;
+ }
+ }
+
+ public void PostInitialise()
+ {
+ }
+
+ public void Close()
+ {
+ m_Scene = null;
+ }
+
+ #endregion ISharedRegionModule
+
+ #region LoadLibraries
+ private string pathToLibraries = "Library";
+
+ protected void LoadLibrariesFromArchives()
+ {
+ InventoryFolderImpl lib = m_Scene.CommsManager.UserProfileCacheService.LibraryRoot;
+ if (lib == null)
+ {
+ m_log.Debug("[LIBRARY MODULE]: No library.");
+ return;
+ }
+
+ lib.Name = m_LibraryName;
+
+ RegionInfo regInfo = new RegionInfo();
+ Scene m_MockScene = new Scene(regInfo);
+ m_MockScene.CommsManager = m_Scene.CommsManager;
+ LocalInventoryService invService = new LocalInventoryService((LibraryRootFolder)lib);
+ m_MockScene.RegisterModuleInterface(invService);
+ m_MockScene.RegisterModuleInterface(m_Scene.AssetService);
+
+ UserProfileData profile = new UserProfileData();
+ profile.FirstName = "OpenSim";
+ profile.ID = lib.Owner;
+ profile.SurName = "Library";
+ CachedUserInfo uinfo = new CachedUserInfo(invService, profile);
+
+ foreach (string iarFileName in Directory.GetFiles(pathToLibraries, "*.iar"))
+ {
+ string simpleName = Path.GetFileNameWithoutExtension(iarFileName);
+
+ m_log.InfoFormat("[LIBRARY MODULE]: Loading library archive {0} ({1})...", iarFileName, simpleName);
+ simpleName = GetInventoryPathFromName(simpleName);
+
+ try
+ {
+ InventoryArchiveReadRequest archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, simpleName, iarFileName);
+ List nodes = archread.Execute();
+ if (nodes.Count == 0)
+ {
+ // didn't find the subfolder with the given name; place it on the top
+ m_log.InfoFormat("[LIBRARY MODULE]: Didn't find {0} in library. Placing archive on the top level", simpleName);
+ archread.Close();
+ archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName);
+ archread.Execute();
+ }
+ archread.Close();
+ }
+ catch (Exception e)
+ {
+ m_log.DebugFormat("[LIBRARY MODULE]: Exception when processing archive {0}: {1}", iarFileName, e.Message);
+ }
+
+ }
+
+ }
+
+ private void DumpLibrary()
+ {
+ InventoryFolderImpl lib = m_Scene.CommsManager.UserProfileCacheService.LibraryRoot;
+
+ m_log.DebugFormat(" - folder {0}", lib.Name);
+ DumpFolder(lib);
+ }
+
+ private void DumpFolder(InventoryFolderImpl folder)
+ {
+ foreach (InventoryItemBase item in folder.Items.Values)
+ {
+ m_log.DebugFormat(" --> item {0}", item.Name);
+ }
+ foreach (InventoryFolderImpl f in folder.RequestListOfFolderImpls())
+ {
+ m_log.DebugFormat(" - folder {0}", f.Name);
+ DumpFolder(f);
+ }
+ }
+
+ private string GetInventoryPathFromName(string name)
+ {
+ string[] parts = name.Split(new char[] { ' ' });
+ if (parts.Length == 3)
+ {
+ name = string.Empty;
+ // cut the last part
+ for (int i = 0; i < parts.Length - 1; i++)
+ name = name + ' ' + parts[i];
+ }
+
+ return name;
+ }
+
+ #endregion LoadLibraries
+ }
+}
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs b/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
new file mode 100644
index 0000000..2c95b5a
--- /dev/null
+++ b/OpenSim/Region/CoreModules/Framework/Library/LocalInventoryService.cs
@@ -0,0 +1,263 @@
+/*
+ * 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 OpenSim.Framework;
+using OpenSim.Framework.Communications.Cache;
+using OpenSim.Services.Interfaces;
+
+using OpenMetaverse;
+using log4net;
+
+namespace OpenSim.Region.CoreModules.Framework.Library
+{
+ public class LocalInventoryService : IInventoryService
+ {
+ private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ private LibraryRootFolder m_Library;
+
+ public LocalInventoryService(LibraryRootFolder lib)
+ {
+ m_Library = lib;
+ }
+
+ ///
+ /// Retrieve the root inventory folder for the given user.
+ ///
+ ///
+ /// null if no root folder was found
+ public InventoryFolderBase GetRootFolder(UUID userID) { return m_Library; }
+
+ ///
+ /// Gets everything (folders and items) inside a folder
+ ///
+ ///
+ ///
+ ///
+ public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
+ {
+ InventoryFolderImpl folder = null;
+ InventoryCollection inv = new InventoryCollection();
+ inv.UserID = m_Library.Owner;
+
+ if (folderID != m_Library.ID)
+ {
+ folder = m_Library.FindFolder(folderID);
+ if (folder == null)
+ {
+ inv.Folders = new List();
+ inv.Items = new List();
+ return inv;
+ }
+ }
+ else
+ folder = m_Library;
+
+ inv.Folders = folder.RequestListOfFolders();
+ inv.Items = folder.RequestListOfItems();
+
+ m_log.DebugFormat("[LIBRARY MODULE]: Got content for folder {0}", folder.Name);
+ return inv;
+ }
+
+ ///
+ /// Add a new folder to the user's inventory
+ ///
+ ///
+ /// true if the folder was successfully added
+ public bool AddFolder(InventoryFolderBase folder)
+ {
+ //m_log.DebugFormat("[LIBRARY MODULE]: Adding folder {0} ({1}) to {2}", folder.Name, folder.ID, folder.ParentID);
+ InventoryFolderImpl parent = m_Library;
+ if (m_Library.ID != folder.ParentID)
+ parent = m_Library.FindFolder(folder.ParentID);
+
+ if (parent == null)
+ {
+ m_log.DebugFormat("[LIBRARY MODULE]: could not add folder {0} because parent folder {1} not found", folder.Name, folder.ParentID);
+ return false;
+ }
+
+ parent.CreateChildFolder(folder.ID, folder.Name, (ushort)folder.Type);
+
+ return true;
+ }
+
+ ///
+ /// Add a new item to the user's inventory
+ ///
+ ///
+ /// true if the item was successfully added
+ public bool AddItem(InventoryItemBase item)
+ {
+ //m_log.DebugFormat("[LIBRARY MODULE]: Adding item {0} to {1}", item.Name, item.Folder);
+ InventoryFolderImpl folder = m_Library;
+ if (m_Library.ID != item.Folder)
+ folder = m_Library.FindFolder(item.Folder);
+
+ if (folder == null)
+ {
+ m_log.DebugFormat("[LIBRARY MODULE]: could not add item {0} because folder {1} not found", item.Name, item.Folder);
+ return false;
+ }
+
+ folder.Items.Add(item.ID, item);
+ return true;
+ }
+
+ public bool CreateUserInventory(UUID user) { return false; }
+
+ ///
+ /// Gets the skeleton of the inventory -- folders only
+ ///
+ ///
+ ///
+ public List GetInventorySkeleton(UUID userId) { return null; }
+
+ ///
+ /// Synchronous inventory fetch.
+ ///
+ ///
+ ///
+ public InventoryCollection GetUserInventory(UUID userID) { return null; }
+
+ ///
+ /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the
+ /// inventory has been received
+ ///
+ ///
+ ///
+ public void GetUserInventory(UUID userID, InventoryReceiptCallback callback) { }
+
+
+ ///
+ /// Gets the user folder for the given folder-type
+ ///
+ ///
+ ///
+ ///
+ public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) { return null; }
+
+
+ ///
+ /// Gets the items inside a folder
+ ///
+ ///
+ ///
+ ///
+ public List GetFolderItems(UUID userID, UUID folderID) { return null; }
+
+
+ ///
+ /// Update a folder in the user's inventory
+ ///
+ ///
+ /// true if the folder was successfully updated
+ public bool UpdateFolder(InventoryFolderBase folder) { return false; }
+
+ ///
+ /// Move an inventory folder to a new location
+ ///
+ /// A folder containing the details of the new location
+ /// true if the folder was successfully moved
+ public bool MoveFolder(InventoryFolderBase folder) { return false; }
+
+ ///
+ /// Delete an item from the user's inventory
+ ///
+ ///
+ /// true if the item was successfully deleted
+ //bool DeleteItem(InventoryItemBase item);
+ public bool DeleteFolders(UUID userID, List folderIDs) { return false; }
+
+ ///
+ /// Purge an inventory folder of all its items and subfolders.
+ ///
+ ///
+ /// true if the folder was successfully purged
+ public bool PurgeFolder(InventoryFolderBase folder) { return false; }
+
+
+ ///
+ /// Update an item in the user's inventory
+ ///
+ ///
+ /// true if the item was successfully updated
+ public bool UpdateItem(InventoryItemBase item) { return false; }
+
+ public bool MoveItems(UUID ownerID, List items) { return false; }
+
+ ///
+ /// Delete an item from the user's inventory
+ ///
+ ///
+ /// true if the item was successfully deleted
+ //bool DeleteItem(InventoryItemBase item);
+ public bool DeleteItems(UUID userID, List itemIDs) { return false; }
+
+ ///
+ /// Get an item, given by its UUID
+ ///
+ ///
+ ///
+ public InventoryItemBase GetItem(InventoryItemBase item) { return null; }
+
+ ///
+ /// Get a folder, given by its UUID
+ ///
+ ///
+ ///
+ public InventoryFolderBase GetFolder(InventoryFolderBase folder) { return null; }
+
+ ///
+ /// Does the given user have an inventory structure?
+ ///
+ ///
+ ///
+ public bool HasInventoryForUser(UUID userID) { return false; }
+
+ ///
+ /// Get the active gestures of the agent.
+ ///
+ ///
+ ///
+ public List GetActiveGestures(UUID userId) { return null; }
+
+ ///
+ /// Get the union of permissions of all inventory items
+ /// that hold the given assetID.
+ ///
+ ///
+ ///
+ /// The permissions or 0 if no such asset is found in
+ /// the user's inventory
+ public int GetAssetPermissions(UUID userID, UUID assetID) { return 0; }
+ }
+}
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index 9757072..beb2307 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -20,6 +20,7 @@
+
diff --git a/bin/Library/.keep b/bin/Library/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/bin/config-include/Standalone.ini b/bin/config-include/Standalone.ini
index a6c089c..cdfdf4b 100644
--- a/bin/config-include/Standalone.ini
+++ b/bin/config-include/Standalone.ini
@@ -13,6 +13,7 @@
NeighbourServices = "LocalNeighbourServicesConnector"
AuthorizationServices = "LocalAuthorizationServicesConnector"
GridServices = "LocalGridServicesConnector"
+ LibraryModule = true
[AssetService]
LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
@@ -26,3 +27,4 @@
[GridService]
LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
Realm = "regions"
+
diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example
index b0e2de3..1679f93 100644
--- a/bin/config-include/StandaloneCommon.ini.example
+++ b/bin/config-include/StandaloneCommon.ini.example
@@ -39,3 +39,7 @@
;;--- For MySql region storage (alternative)
;StorageProvider = "OpenSim.Data.MySQL.dll:MySqlRegionData"
;ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=***;"
+
+[LibraryModule]
+ ; Set this if you want to change the name of the OpenSim Library
+ ;LibraryName = "My World's Library"
\ No newline at end of file
diff --git a/bin/config-include/StandaloneHypergrid.ini b/bin/config-include/StandaloneHypergrid.ini
index baff811..909286c 100644
--- a/bin/config-include/StandaloneHypergrid.ini
+++ b/bin/config-include/StandaloneHypergrid.ini
@@ -21,7 +21,7 @@
HGAuthServiceInConnector = true
HypergridServiceInConnector = true
NeighbourServiceInConnector = true
-
+ LibraryModule = true
[AssetService]
; For the AssetServiceInConnector
--
cgit v1.1
From 2c3d7972b97b057a7bef6969fbea03591789fcab Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Wed, 23 Dec 2009 19:43:50 -0800
Subject: No-op in this commit. Just increasing the tag number due to
weirdnesses.
---
OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
index df7df46..6941e00 100644
--- a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
@@ -130,7 +130,7 @@ namespace OpenSim.Region.CoreModules.Framework.Library
InventoryFolderImpl lib = m_Scene.CommsManager.UserProfileCacheService.LibraryRoot;
if (lib == null)
{
- m_log.Debug("[LIBRARY MODULE]: No library.");
+ m_log.Debug("[LIBRARY MODULE]: No library. Ignoring Library Module");
return;
}
--
cgit v1.1
From 86a429bc44b6fc503b3303a946d088d796d5c530 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 24 Dec 2009 18:18:14 +0100
Subject: Add the LSL List Size property
---
OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 41 ++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
index 3f38bb6..faf9c40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
@@ -422,13 +422,52 @@ namespace OpenSim.Region.ScriptEngine.Shared
public int Length
{
- get {
+ get
+ {
if (m_data == null)
m_data=new Object[0];
return m_data.Length;
}
}
+ public int Size
+ {
+ get
+ {
+ if (m_data == null)
+ m_data=new Object[0];
+
+ int size = 0;
+
+ foreach (Object o in m_data)
+ {
+ if (o is LSL_Types.LSLInteger)
+ size += 4;
+ else if (o is LSL_Types.LSLFloat)
+ size += 8;
+ else if (o is LSL_Types.LSLString)
+ size += ((LSL_Types.LSLString)o).m_string.Length;
+ else if (o is LSL_Types.key)
+ size += ((LSL_Types.key)o).value.Length;
+ else if (o is LSL_Types.Vector3)
+ size += 32;
+ else if (o is LSL_Types.Quaternion)
+ size += 64;
+ else if (o is int)
+ size += 4;
+ else if (o is string)
+ size += ((string)o).Length;
+ else if (o is float)
+ size += 8;
+ else if (o is double)
+ size += 16;
+ else
+ throw new Exception("Unknown type in List.Size: " + o.GetType().ToString());
+ }
+ return size;
+ }
+ }
+
public object[] Data
{
get {
--
cgit v1.1
From 7f699fca9a34cd0f3525534bdbc04c8b8ee975fe Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 24 Dec 2009 18:18:14 +0100
Subject: Add the body to the LSL List Size property
---
OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | 38 +++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
index 1fc31c5..faf9c40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
@@ -422,7 +422,8 @@ namespace OpenSim.Region.ScriptEngine.Shared
public int Length
{
- get {
+ get
+ {
if (m_data == null)
m_data=new Object[0];
return m_data.Length;
@@ -431,7 +432,40 @@ namespace OpenSim.Region.ScriptEngine.Shared
public int Size
{
- get { return 0; }
+ get
+ {
+ if (m_data == null)
+ m_data=new Object[0];
+
+ int size = 0;
+
+ foreach (Object o in m_data)
+ {
+ if (o is LSL_Types.LSLInteger)
+ size += 4;
+ else if (o is LSL_Types.LSLFloat)
+ size += 8;
+ else if (o is LSL_Types.LSLString)
+ size += ((LSL_Types.LSLString)o).m_string.Length;
+ else if (o is LSL_Types.key)
+ size += ((LSL_Types.key)o).value.Length;
+ else if (o is LSL_Types.Vector3)
+ size += 32;
+ else if (o is LSL_Types.Quaternion)
+ size += 64;
+ else if (o is int)
+ size += 4;
+ else if (o is string)
+ size += ((string)o).Length;
+ else if (o is float)
+ size += 8;
+ else if (o is double)
+ size += 16;
+ else
+ throw new Exception("Unknown type in List.Size: " + o.GetType().ToString());
+ }
+ return size;
+ }
}
public object[] Data
--
cgit v1.1
From 7a06ab834d6d6404c2bfdbf9c71d5f34bfc0fae2 Mon Sep 17 00:00:00 2001
From: dahlia
Date: Thu, 24 Dec 2009 11:00:08 -0800
Subject: Clear Shape.SculptEntry if prim type is not a sculptie in
llSetPrimitiveParams() - addresses Mantis #4462
---
OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index cf3a1a0..2b6d9bd 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -6502,6 +6502,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// retain pathcurve
shapeBlock.PathCurve = part.Shape.PathCurve;
+ part.Shape.SculptEntry = false;
return shapeBlock;
}
@@ -6550,6 +6551,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
shapeBlock.PathShearX = (byte)(100 * topshear.x);
shapeBlock.PathShearY = (byte)(100 * topshear.y);
+ part.Shape.SculptEntry = false;
part.UpdateShape(shapeBlock);
}
@@ -6591,6 +6593,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
shapeBlock.ProfileBegin = (ushort)(50000 * dimple.x);
shapeBlock.ProfileEnd = (ushort)(50000 * (1 - dimple.y));
+ part.Shape.SculptEntry = false;
part.UpdateShape(shapeBlock);
}
@@ -6711,6 +6714,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
shapeBlock.PathSkew = (sbyte)(100 * skew);
+ part.Shape.SculptEntry = false;
part.UpdateShape(shapeBlock);
}
--
cgit v1.1
From e7439efc74a1cc0daedc51eb25ae66cd03db70b5 Mon Sep 17 00:00:00 2001
From: Kitto Flora
Date: Thu, 24 Dec 2009 19:19:44 -0500
Subject: Recover out-of-region objects during db load.
---
OpenSim/Framework/Servers/VersionInfo.cs | 2 +-
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 24 ++++++++++++++++++++++++
OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs | 4 +++-
3 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index a7d34f5..7274a06 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -29,7 +29,7 @@ namespace OpenSim
{
public class VersionInfo
{
- private const string VERSION_NUMBER = "0.6.91CM";
+ private const string VERSION_NUMBER = "0.6.92Ch";
private const Flavour VERSION_FLAVOUR = Flavour.Dev;
public enum Flavour
{
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index b0fb8b3..998d598 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -222,6 +222,30 @@ namespace OpenSim.Region.Framework.Scenes
protected internal bool AddRestoredSceneObject(
SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted)
{
+ // KF: Check for out-of-region, move inside and make static.
+ Vector3 npos = new Vector3(sceneObject.RootPart.GroupPosition.X,
+ sceneObject.RootPart.GroupPosition.Y,
+ sceneObject.RootPart.GroupPosition.Z);
+ if (npos.X < 0.0 || npos.Y < 0.0 || npos.Z < 0.0 ||
+ npos.X > Constants.RegionSize ||
+ npos.Y > Constants.RegionSize)
+ {
+ if (npos.X < 0.0) npos.X = 1.0f;
+ if (npos.Y < 0.0) npos.Y = 1.0f;
+ if (npos.Z < 0.0) npos.Z = 0.0f;
+ if (npos.X > Constants.RegionSize) npos.X = Constants.RegionSize - 1.0f;
+ if (npos.Y > Constants.RegionSize) npos.Y = Constants.RegionSize - 1.0f;
+
+ foreach (SceneObjectPart part in sceneObject.Children.Values)
+ {
+ part.GroupPosition = npos;
+ }
+ sceneObject.RootPart.Velocity = Vector3.Zero;
+ sceneObject.RootPart.AngularVelocity = Vector3.Zero;
+ sceneObject.RootPart.Acceleration = Vector3.Zero;
+ sceneObject.RootPart.Velocity = Vector3.Zero;
+ }
+
if (!alreadyPersisted)
{
sceneObject.ForceInventoryPersistence();
diff --git a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
index 983431d..0179240 100644
--- a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
@@ -215,6 +215,7 @@ namespace OpenSim.Region.Physics.OdePlugin
parent_scene.GetTerrainHeightAtXY(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f)) + 0.5f);
m_log.Warn("[PHYSICS]: Got nonFinite Object create Position");
}
+
_position = pos;
m_taintposition = pos;
PID_D = parent_scene.bodyPIDD;
@@ -254,7 +255,8 @@ namespace OpenSim.Region.Physics.OdePlugin
_parent_scene = parent_scene;
m_targetSpace = (IntPtr)0;
- if (pos.Z < 0)
+// if (pos.Z < 0)
+ if (pos.Z < parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y))
m_isphysical = false;
else
{
--
cgit v1.1
From 8d36d7beed0f5bc932407671596d5a79ff8f8eb6 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 25 Dec 2009 23:10:07 +0000
Subject: Enable the profile module to be replaced completely, even for the
base profile data
---
.../CoreModules/Avatar/Profiles/AvatarProfilesModule.cs | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/OpenSim/Region/CoreModules/Avatar/Profiles/AvatarProfilesModule.cs b/OpenSim/Region/CoreModules/Avatar/Profiles/AvatarProfilesModule.cs
index 0f58788..8cf58c6 100644
--- a/OpenSim/Region/CoreModules/Avatar/Profiles/AvatarProfilesModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Profiles/AvatarProfilesModule.cs
@@ -43,6 +43,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Scene m_scene;
private IProfileModule m_profileModule = null;
+ private bool m_enabled = true;
public AvatarProfilesModule()
{
@@ -52,12 +53,24 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
public void Initialise(Scene scene, IConfigSource config)
{
+ IConfig profileConfig = config.Configs["Profile"];
+ if (profileConfig != null)
+ {
+ if (profileConfig.GetString("Module", Name) != Name)
+ {
+ m_enabled = false;
+ return;
+ }
+ }
+
m_scene = scene;
m_scene.EventManager.OnNewClient += NewClient;
}
public void PostInitialise()
{
+ if (!m_enabled)
+ return;
m_profileModule = m_scene.RequestModuleInterface();
}
--
cgit v1.1
From b19e5643171d9a081426026c0e96c84c3e7f97b2 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 25 Dec 2009 23:20:30 +0000
Subject: Restore version suffix.
---
OpenSim/Framework/Servers/VersionInfo.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index 7274a06..4844a66 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -29,7 +29,7 @@ namespace OpenSim
{
public class VersionInfo
{
- private const string VERSION_NUMBER = "0.6.92Ch";
+ private const string VERSION_NUMBER = "0.6.92CM";
private const Flavour VERSION_FLAVOUR = Flavour.Dev;
public enum Flavour
{
--
cgit v1.1
From 59f683066a60a99111cc032ee122dfe709c78440 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 25 Dec 2009 23:23:49 +0000
Subject: Set version back to core version (base) and suffix CM. Please DO NOT
CHANGE THIS in the repo. This is the Caremninster repo and the number follows
CORE. Always.
---
OpenSim/Framework/Servers/VersionInfo.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index 4844a66..f618047 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -29,7 +29,7 @@ namespace OpenSim
{
public class VersionInfo
{
- private const string VERSION_NUMBER = "0.6.92CM";
+ private const string VERSION_NUMBER = "0.6.8CM";
private const Flavour VERSION_FLAVOUR = Flavour.Dev;
public enum Flavour
{
--
cgit v1.1
From 9972b12812d343c48843057ddb2f4ea9c7f96bb4 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Sat, 26 Dec 2009 00:19:54 +0000
Subject: Add a generic REPLACE INTO handler for put into the generic table
handler
---
OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
index 2f5937d..9b8a001 100644
--- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
+++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
@@ -195,6 +195,31 @@ namespace OpenSim.Data.MySQL
MySqlCommand cmd = new MySqlCommand();
string query = "";
+ List names = new List();
+ List values = new List();
+
+ foreach (FieldInfo fi in m_Fields.Values)
+ {
+ names.Add(fi.Name);
+ values.Add(fi.GetValue(row).ToString());
+ }
+
+ if (m_DataField != null)
+ {
+ Dictionary data =
+ (Dictionary)m_DataField.GetValue(row);
+
+ foreach (KeyValuePair kvp in data)
+ {
+ names.Add(kvp.Key);
+ values.Add(kvp.Value);
+ }
+ }
+
+ query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values ('" + String.Join("','", values.ToArray()) + "')";
+
+ if (ExecuteNonQuery(cmd) > 0)
+ return true;
return false;
}
--
cgit v1.1
From 92be01d5e60c00568a4b8efc4bfa17f8b3df8a63 Mon Sep 17 00:00:00 2001
From: root
Date: Sat, 26 Dec 2009 03:24:46 +0100
Subject: Make the GenericTableHandler work as intended
---
OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
index 9b8a001..4dfc324 100644
--- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
+++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
@@ -37,7 +37,7 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Data.MySQL
{
- public class MySQLGenericTableHandler : MySqlFramework where T: struct
+ public class MySQLGenericTableHandler : MySqlFramework where T: class, new()
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -63,7 +63,7 @@ namespace OpenSim.Data.MySQL
}
Type t = typeof(T);
- FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic |
+ FieldInfo[] fields = t.GetFields(BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly);
@@ -165,7 +165,11 @@ namespace OpenSim.Data.MySQL
new Dictionary();
foreach (string col in m_ColumnNames)
+ {
data[col] = reader[col].ToString();
+ if (data[col] == null)
+ data[col] = String.Empty;
+ }
m_DataField.SetValue(row, data);
}
@@ -218,6 +222,8 @@ namespace OpenSim.Data.MySQL
query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values ('" + String.Join("','", values.ToArray()) + "')";
+ cmd.CommandText = query;
+
if (ExecuteNonQuery(cmd) > 0)
return true;
--
cgit v1.1
From 43c303e27a93f07022ed0b151ca6945e34169ee9 Mon Sep 17 00:00:00 2001
From: root
Date: Sat, 26 Dec 2009 03:24:46 +0100
Subject: Make the GenericTableHandler work as intended
---
OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
index 9b8a001..4dfc324 100644
--- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
+++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs
@@ -37,7 +37,7 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Data.MySQL
{
- public class MySQLGenericTableHandler : MySqlFramework where T: struct
+ public class MySQLGenericTableHandler : MySqlFramework where T: class, new()
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -63,7 +63,7 @@ namespace OpenSim.Data.MySQL
}
Type t = typeof(T);
- FieldInfo[] fields = t.GetFields(BindingFlags.NonPublic |
+ FieldInfo[] fields = t.GetFields(BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly);
@@ -165,7 +165,11 @@ namespace OpenSim.Data.MySQL
new Dictionary();
foreach (string col in m_ColumnNames)
+ {
data[col] = reader[col].ToString();
+ if (data[col] == null)
+ data[col] = String.Empty;
+ }
m_DataField.SetValue(row, data);
}
@@ -218,6 +222,8 @@ namespace OpenSim.Data.MySQL
query = String.Format("replace into {0} (`", m_Realm) + String.Join("`,`", names.ToArray()) + "`) values ('" + String.Join("','", values.ToArray()) + "')";
+ cmd.CommandText = query;
+
if (ExecuteNonQuery(cmd) > 0)
return true;
--
cgit v1.1
From 88b3b98811e70709536bb41410ec88509e0460a5 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Sat, 26 Dec 2009 04:12:51 +0000
Subject: Add AvatarInterestsReply
---
OpenSim/Client/MXP/ClientStack/MXPClientView.cs | 4 ++++
OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs | 4 ++++
OpenSim/Framework/IClientAPI.cs | 2 ++
OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 17 +++++++++++++++++
OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | 4 ++++
.../InternetRelayClientView/Server/IRCClientView.cs | 4 ++++
OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | 4 ++++
OpenSim/Tests/Common/Mock/TestClient.cs | 5 ++++-
8 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
index 0cae3dd..0141718 100644
--- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
+++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
@@ -1655,5 +1655,9 @@ namespace OpenSim.Client.MXP.ClientStack
public void SendRebakeAvatarTextures(UUID textureID)
{
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
index fb87c15..74cecea 100644
--- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
+++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
@@ -1161,5 +1161,9 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
public void SendRebakeAvatarTextures(UUID textureID)
{
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 04ba9c6..f83fea2 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1392,5 +1392,7 @@ namespace OpenSim.Framework
bool AddGenericPacketHandler(string MethodName, GenericMessage handler);
void SendRebakeAvatarTextures(UUID textureID);
+
+ void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages);
}
}
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 4780701..f6c505a 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -15809,5 +15809,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return osdEvent;
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ AvatarInterestsReplyPacket packet = (AvatarInterestsReplyPacket)PacketPool.Instance.GetPacket(PacketType.AvatarInterestsReply);
+
+ packet.AgentData = new AvatarInterestsReplyPacket.AgentDataBlock();
+ packet.AgentData.AgentID = AgentId;
+ packet.AgentData.AvatarID = avatarID;
+
+ packet.PropertiesData = new AvatarInterestsReplyPacket.PropertiesDataBlock();
+ packet.PropertiesData.WantToMask = wantMask;
+ packet.PropertiesData.WantToText = Utils.StringToBytes(wantText);
+ packet.PropertiesData.SkillsMask = skillsMask;
+ packet.PropertiesData.SkillsText = Utils.StringToBytes(skillsText);
+ packet.PropertiesData.LanguagesText = Utils.StringToBytes(languages);
+ OutPacket(packet, ThrottleOutPacketType.Task);
+ }
}
}
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
index 9754da3..89e7747 100644
--- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -1099,5 +1099,9 @@ namespace OpenSim.Region.Examples.SimpleModule
public void SendRebakeAvatarTextures(UUID textureID)
{
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 6c3e7eb..8b34396 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -1624,5 +1624,9 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
public void SendRebakeAvatarTextures(UUID textureID)
{
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index cf36d08..1573c73 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -1104,5 +1104,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC
public void SendRebakeAvatarTextures(UUID textureID)
{
}
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index 27025d9..6265ab7 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -1159,6 +1159,9 @@ namespace OpenSim.Tests.Common.Mock
public void SendRebakeAvatarTextures(UUID textureID)
{
}
-
+
+ public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages)
+ {
+ }
}
}
--
cgit v1.1