From cf203cf5ee809d3832daafbed12eb130bd590f5c Mon Sep 17 00:00:00 2001 From: MW Date: Wed, 8 Aug 2007 17:11:02 +0000 Subject: [PATCH] The startup set of assets in the local asset server can now be set from a xml file (OpenSimAssetSet.xml). (remember to make changes to the set, you will also need to delete the old asset .yap file, so that it is recreated). Also the set of items in the OpenSim inventory Library can also now be set from a xml file (OpenSimLibrary.xml). --- .../Communications/Cache/LibraryRootFolder.cs | 45 +++++++++++++++++-- .../GridInterfaces/Local/LocalAssetServer.cs | 33 +++++++++++++- .../DotNetEngine.Compiler.LSL/Engine.cs | 2 +- bin/OpenSimAssetSet.xml | 9 ++++ bin/OpenSimLibrary.xml | 14 ++++++ prebuild.xml | 2 + 6 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 bin/OpenSimAssetSet.xml create mode 100644 bin/OpenSimLibrary.xml diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs index 9e547014ae..b2145988ef 100644 --- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs +++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs @@ -1,8 +1,11 @@ using System; +using System.IO; using System.Collections.Generic; using System.Text; using libsecondlife; +using OpenSim.Framework.Utilities; using OpenSim.Framework.Data; +using Nini.Config; namespace OpenSim.Framework.Communications.Caches { @@ -18,7 +21,7 @@ namespace OpenSim.Framework.Communications.Caches this.name = "OpenSim Library"; this.parentID = LLUUID.Zero; this.type = (short)-1; - this.version = (ushort) 1; + this.version = (ushort)1; InventoryFolder folderInfo = new InventoryFolder(); folderInfo.agentID = libOwner; @@ -31,11 +34,15 @@ namespace OpenSim.Framework.Communications.Caches this.m_textureFolder = folderInfo; this.CreateLibraryItems(); + + string filePath = Path.Combine(Util.configDir(), "OpenSimLibrary.xml"); + XmlConfigSource source = new XmlConfigSource(filePath); + this.ReadItemsFromFile(source); } private void CreateLibraryItems() { - + InventoryItemBase item = new InventoryItemBase(); item.avatarID = libOwner; item.creatorsID = libOwner; @@ -167,6 +174,7 @@ namespace OpenSim.Framework.Communications.Caches item.inventoryNextPermissions = 0; this.Items.Add(item.inventoryID, item); + /* item = new InventoryItemBase(); item.avatarID = libOwner; item.creatorsID = libOwner; @@ -181,7 +189,38 @@ namespace OpenSim.Framework.Communications.Caches item.inventoryNextPermissions = (1 << 15); item.inventoryEveryOnePermissions = (1 << 15); item.inventoryBasePermissions = (1 << 15); - this.Items.Add(item.inventoryID, item); + this.Items.Add(item.inventoryID, item); + */ + } + + private void ReadItemsFromFile(IConfigSource source) + { + for (int i = 0; i < source.Configs.Count; i++) + { + InventoryItemBase item = new InventoryItemBase(); + item.avatarID = libOwner; + item.creatorsID = libOwner; + item.inventoryID = new LLUUID(source.Configs[i].GetString("inventoryID", LLUUID.Random().ToStringHyphenated())); + item.assetID = new LLUUID(source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated())); + item.inventoryDescription = source.Configs[i].GetString("description", ""); + item.inventoryName = source.Configs[i].GetString("name", ""); + item.assetType = source.Configs[i].GetInt("assetType", 0); + item.invType = source.Configs[i].GetInt("inventoryType", 0); + item.inventoryCurrentPermissions = (uint)source.Configs[i].GetLong("currentPermissions", 0x7FFFFFFF); + item.inventoryNextPermissions = (uint)source.Configs[i].GetLong("nextPermissions", 0x7FFFFFFF); + item.inventoryEveryOnePermissions = (uint)source.Configs[i].GetLong("everyonePermissions", 0x7FFFFFFF); + item.inventoryBasePermissions = (uint)source.Configs[i].GetLong("basePermissions", 0x7FFFFFFF); + if (item.assetType == 0) + { + item.parentFolderID = this.m_textureFolder.folderID; + this.m_textureFolder.Items.Add(item.inventoryID, item); + } + else + { + item.parentFolderID = this.folderID; + this.Items.Add(item.inventoryID, item); + } + } } } diff --git a/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs index ea4824b8e8..17d2680919 100644 --- a/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs +++ b/OpenSim/Region/GridInterfaces/Local/LocalAssetServer.cs @@ -31,6 +31,7 @@ using System.Threading; using Db4objects.Db4o; using Db4objects.Db4o.Query; using libsecondlife; +using Nini.Config; using OpenSim.Framework.Console; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; @@ -345,7 +346,7 @@ namespace OpenSim.Region.GridInterfaces.Local db.Set(store); db.Commit(); - Image = new AssetBase(); + /*Image = new AssetBase(); Image.FullID = new LLUUID("00000000-0000-2222-3333-000000000001"); Image.Name = "WelcomeNote"; Image.Type = 7; @@ -357,7 +358,35 @@ namespace OpenSim.Region.GridInterfaces.Local store.UUID = Image.FullID; db.Set(store); db.Commit(); - + */ + + string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); + XmlConfigSource source = new XmlConfigSource(filePath); + ReadAssetDetails(source); + } + + protected void ReadAssetDetails(IConfigSource source) + { + AssetBase newAsset = null; + for (int i = 0; i < source.Configs.Count; i++) + { + newAsset = new AssetBase(); + newAsset.FullID = new LLUUID(source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated())); + newAsset.Name = source.Configs[i].GetString("name", ""); + newAsset.Type =(sbyte) source.Configs[i].GetInt("assetType", 0); + newAsset.InvType =(sbyte) source.Configs[i].GetInt("inventoryType", 0); + string fileName = source.Configs[i].GetString("fileName", ""); + if (fileName != "") + { + this.LoadAsset(newAsset, false, fileName); + AssetStorage store = new AssetStorage(); + store.Data = newAsset.Data; + store.Name = newAsset.Name; + store.UUID = newAsset.FullID; + db.Set(store); + db.Commit(); + } + } } private void LoadAsset(AssetBase info, bool image, string filename) diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine.Compiler.LSL/Engine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine.Compiler.LSL/Engine.cs index 81caf2d4f5..2db35c4bed 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine.Compiler.LSL/Engine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine.Compiler.LSL/Engine.cs @@ -30,7 +30,7 @@ using System; using System.Reflection; using System.Reflection.Emit; using System.Threading; -//using System.Windows.Forms; + namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL { diff --git a/bin/OpenSimAssetSet.xml b/bin/OpenSimAssetSet.xml new file mode 100644 index 0000000000..d81b5b5508 --- /dev/null +++ b/bin/OpenSimAssetSet.xml @@ -0,0 +1,9 @@ + +
+ + + + + +
+
\ No newline at end of file diff --git a/bin/OpenSimLibrary.xml b/bin/OpenSimLibrary.xml new file mode 100644 index 0000000000..2b56696c39 --- /dev/null +++ b/bin/OpenSimLibrary.xml @@ -0,0 +1,14 @@ + +
+ + + + + + + + + + +
+
\ No newline at end of file diff --git a/prebuild.xml b/prebuild.xml index 119f545fad..e6b8013a3c 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -203,6 +203,7 @@ + @@ -452,6 +453,7 @@ +