From 070047ce1bc74cceebd5e817a0e042a7390c5f24 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Fri, 26 Oct 2007 14:08:36 +0000 Subject: [PATCH] * Added prototypical AvatarFactory module interface to load avatar parameters * Added dump_assets_to_file option to enable asset dumping for debug * normalized some namespaces * InventoryFolder renamed to InventoryFolderImpl to --- .../Framework/Communications/CAPSService.cs | 16 +-- .../Cache/AssetTransactionManager.cs | 14 +-- .../Communications/Cache/AssetTransactions.cs | 28 +++-- .../Communications/Cache/CachedUserInfo.cs | 9 +- .../Communications/Cache/InventoryFolder.cs | 26 ++--- .../Communications/Cache/LibraryRootFolder.cs | 10 +- .../Communications/Cache/UserProfileCache.cs | 23 ++-- .../Communications/Capabilities/Caps.cs | 46 ++++---- .../Communications/CommunicationsManager.cs | 5 +- .../Communications/IInventoryServices.cs | 7 +- .../Communications/InventoryServiceBase.cs | 4 +- OpenSim/Grid/AssetServer/Main.cs | 8 +- OpenSim/Region/Application/OpenSimMain.cs | 103 +++++++++++------- .../Local/CommunicationsLocal.cs | 11 +- .../Local/LocalInventoryService.cs | 10 +- .../Communications/OGS1/CommunicationsOGS1.cs | 2 +- .../OGS1/OGS1InventoryService.cs | 4 +- .../Environment/Interfaces/IAvatarFactory.cs | 13 +++ OpenSim/Region/Environment/ModuleLoader.cs | 6 + .../Modules/AvatarFactoryModule.cs | 57 ++++++++++ .../Region/Environment/Modules/ChatModule.cs | 2 + .../Environment/Scenes/Scene.Inventory.cs | 1 - OpenSim/Region/Environment/Scenes/Scene.cs | 29 +++-- .../Environment/Scenes/ScenePresence.cs | 75 ++++++------- OpenSim/Region/Examples/SimpleApp/MyWorld.cs | 2 +- OpenSim/Region/Examples/SimpleApp/Program.cs | 2 +- bin/OpenSim.ini.example | 2 +- 27 files changed, 301 insertions(+), 214 deletions(-) create mode 100644 OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs create mode 100644 OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs diff --git a/OpenSim/Framework/Communications/CAPSService.cs b/OpenSim/Framework/Communications/CAPSService.cs index 6f655512b8..b60ef02177 100644 --- a/OpenSim/Framework/Communications/CAPSService.cs +++ b/OpenSim/Framework/Communications/CAPSService.cs @@ -26,21 +26,9 @@ * */ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using System.Security.Cryptography; -using libsecondlife; -using Nwc.XmlRpc; -using OpenSim.Framework.Console; -using OpenSim.Framework.Data; -using OpenSim.Framework.Interfaces; -using OpenSim.Framework.Inventory; -using OpenSim.Framework.Utilities; using OpenSim.Framework.Servers; -namespace OpenSim.Framework.UserManagement +namespace OpenSim.Framework.Communications { public class CAPSService { @@ -63,4 +51,4 @@ namespace OpenSim.Framework.UserManagement return ""; } } -} +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Cache/AssetTransactionManager.cs b/OpenSim/Framework/Communications/Cache/AssetTransactionManager.cs index 42c0a8eef4..2c1e5c8a89 100644 --- a/OpenSim/Framework/Communications/Cache/AssetTransactionManager.cs +++ b/OpenSim/Framework/Communications/Cache/AssetTransactionManager.cs @@ -36,17 +36,19 @@ using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; using OpenSim.Framework.Data; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { public class AssetTransactionManager { // Fields public CommunicationsManager CommsManager; public Dictionary AgentTransactions = new Dictionary(); + private bool m_dumpAssetsToFile; - public AssetTransactionManager(CommunicationsManager commsManager) + public AssetTransactionManager(CommunicationsManager commsManager, bool dumpAssetsToFile) { CommsManager = commsManager; + m_dumpAssetsToFile = dumpAssetsToFile; } // Methods @@ -54,7 +56,7 @@ namespace OpenSim.Framework.Communications.Caches { if (!this.AgentTransactions.ContainsKey(userID)) { - AgentAssetTransactions transactions = new AgentAssetTransactions(userID, this); + AgentAssetTransactions transactions = new AgentAssetTransactions(userID, this, m_dumpAssetsToFile); this.AgentTransactions.Add(userID, transactions); return transactions; } @@ -82,7 +84,7 @@ namespace OpenSim.Framework.Communications.Caches public void HandleUDPUploadRequest(IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data, bool storeLocal) { - // Console.WriteLine("asset upload of " + assetID); + // Console.WriteLine("asset upload of " + assetID); AgentAssetTransactions transactions = this.GetUserTransActions(remoteClient.AgentId); if (transactions != null) { @@ -103,6 +105,4 @@ namespace OpenSim.Framework.Communications.Caches } } } -} - - +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs index 51fc4621d6..581e30085b 100644 --- a/OpenSim/Framework/Communications/Cache/AssetTransactions.cs +++ b/OpenSim/Framework/Communications/Cache/AssetTransactions.cs @@ -39,7 +39,7 @@ using OpenSim.Framework.Utilities; using OpenSim.Region.Capabilities; using OpenSim.Framework.Servers; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { public class AgentAssetTransactions { @@ -49,12 +49,14 @@ namespace OpenSim.Framework.Communications.Caches public LLUUID UserID; public Dictionary XferUploaders = new Dictionary(); public AssetTransactionManager Manager; + private bool m_dumpAssetsToFile; // Methods - public AgentAssetTransactions(LLUUID agentID, AssetTransactionManager manager) + public AgentAssetTransactions(LLUUID agentID, AssetTransactionManager manager, bool dumpAssetsToFile) { this.UserID = agentID; Manager = manager; + m_dumpAssetsToFile = dumpAssetsToFile; } public AssetCapsUploader RequestCapsUploader() @@ -75,7 +77,7 @@ namespace OpenSim.Framework.Communications.Caches { if (!this.XferUploaders.ContainsKey(transactionID)) { - AssetXferUploader uploader = new AssetXferUploader(this); + AssetXferUploader uploader = new AssetXferUploader(this, m_dumpAssetsToFile); this.XferUploaders.Add(transactionID, uploader); return uploader; @@ -122,14 +124,14 @@ namespace OpenSim.Framework.Communications.Caches private string m_assetName = ""; private LLUUID m_folderID; private LLUUID newAssetID; - private bool SaveImages = false; + private bool m_dumpImageToFile; private string uploaderPath = ""; // Events public event UpLoadedAsset OnUpLoad; // Methods - public void Initialise(string assetName, string assetDescription, LLUUID assetID, LLUUID inventoryItem, LLUUID folderID, string path, BaseHttpServer httpServer) + public void Initialise(string assetName, string assetDescription, LLUUID assetID, LLUUID inventoryItem, LLUUID folderID, string path, BaseHttpServer httpServer, bool dumpImageToFile) { this.m_assetName = assetName; this.m_assetDescription = assetDescription; @@ -138,6 +140,7 @@ namespace OpenSim.Framework.Communications.Caches this.inventoryItemID = inventoryItem; this.uploaderPath = path; this.httpListener = httpServer; + m_dumpImageToFile = dumpImageToFile; } private void SaveImageToFile(string filename, byte[] data) @@ -159,7 +162,7 @@ namespace OpenSim.Framework.Communications.Caches complete.state = "complete"; text = LLSDHelpers.SerialiseLLSDReply(complete); this.httpListener.RemoveStreamHandler("POST", this.uploaderPath); - if (this.SaveImages) + if (this.m_dumpImageToFile) { this.SaveImageToFile(this.m_assetName + ".jp2", data); } @@ -190,10 +193,12 @@ namespace OpenSim.Framework.Communications.Caches private bool m_createItem = false; private AgentAssetTransactions m_userTransactions; private bool m_storeLocal; + private bool m_dumpAssetToFile; - public AssetXferUploader(AgentAssetTransactions transactions) + public AssetXferUploader(AgentAssetTransactions transactions, bool dumpAssetToFile) { this.m_userTransactions = transactions; + m_dumpAssetToFile = dumpAssetToFile; } // Methods @@ -278,9 +283,14 @@ namespace OpenSim.Framework.Communications.Caches this.m_userTransactions.Manager.CommsManager.AssetCache.AddAsset(this.Asset); } - // Console.WriteLine("upload complete "+ this.TransactionID); - //SaveAssetToFile("testudpupload" + Util.RandomClass.Next(1, 1000) + ".dat", this.Asset.Data); + // Console.WriteLine("upload complete "+ this.TransactionID); + + if (m_dumpAssetToFile) + { + SaveAssetToFile("testudpupload" + Util.RandomClass.Next(1, 1000) + ".dat", this.Asset.Data); + } } + private void SaveAssetToFile(string filename, byte[] data) { FileStream fs = File.Create(filename); diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index b1432ffbc6..92b21a82b0 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs @@ -27,7 +27,6 @@ */ using libsecondlife; using OpenSim.Framework.Types; -using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Framework.Communications.Cache { @@ -35,7 +34,7 @@ namespace OpenSim.Framework.Communications.Cache { private readonly CommunicationsManager m_parentCommsManager; // Fields - public InventoryFolder RootFolder = null; + public InventoryFolderImpl RootFolder = null; public UserProfileData UserProfile = null; public CachedUserInfo(CommunicationsManager commsManager) @@ -44,7 +43,7 @@ namespace OpenSim.Framework.Communications.Cache } // Methods - public void FolderReceive(LLUUID userID, InventoryFolder folderInfo) + public void FolderReceive(LLUUID userID, InventoryFolderImpl folderInfo) { if (userID == this.UserProfile.UUID) { @@ -61,7 +60,7 @@ namespace OpenSim.Framework.Communications.Cache } else { - InventoryFolder folder = this.RootFolder.HasSubFolder(folderInfo.parentID); + InventoryFolderImpl folder = this.RootFolder.HasSubFolder(folderInfo.parentID); if (folder != null) { folder.SubFolders.Add(folderInfo.folderID, folderInfo); @@ -80,7 +79,7 @@ namespace OpenSim.Framework.Communications.Cache } else { - InventoryFolder folder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID); + InventoryFolderImpl folder = this.RootFolder.HasSubFolder(itemInfo.parentFolderID); if (folder != null) { folder.Items.Add(itemInfo.inventoryID, itemInfo); diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs index fbe1bd072b..af3346f042 100644 --- a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs +++ b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs @@ -35,15 +35,15 @@ using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { - public class InventoryFolder : InventoryFolderBase + public class InventoryFolderImpl : InventoryFolderBase { // Fields public Dictionary Items = new Dictionary(); - public Dictionary SubFolders = new Dictionary(); + public Dictionary SubFolders = new Dictionary(); - public InventoryFolder(InventoryFolderBase folderbase) + public InventoryFolderImpl(InventoryFolderBase folderbase) { this.agentID = folderbase.agentID; this.folderID = folderbase.folderID; @@ -53,15 +53,15 @@ namespace OpenSim.Framework.Communications.Caches this.version = folderbase.version; } - public InventoryFolder() + public InventoryFolderImpl() { } // Methods - public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type) + public InventoryFolderImpl CreateNewSubFolder(LLUUID folderID, string folderName, ushort type) { - InventoryFolder subFold = new InventoryFolder(); + InventoryFolderImpl subFold = new InventoryFolderImpl(); subFold.name = folderName; subFold.folderID = folderID; subFold.type = (short) type; @@ -78,7 +78,7 @@ namespace OpenSim.Framework.Communications.Caches { return this.Items[itemID]; } - foreach (InventoryFolder folder in this.SubFolders.Values) + foreach (InventoryFolderImpl folder in this.SubFolders.Values) { base2 = folder.HasItem(itemID); if (base2 != null) @@ -97,7 +97,7 @@ namespace OpenSim.Framework.Communications.Caches Items.Remove(itemID); return true; } - foreach (InventoryFolder folder in this.SubFolders.Values) + foreach (InventoryFolderImpl folder in this.SubFolders.Values) { found = folder.DeleteItem(itemID); if (found == true) @@ -109,16 +109,16 @@ namespace OpenSim.Framework.Communications.Caches } - public InventoryFolder HasSubFolder(LLUUID folderID) + public InventoryFolderImpl HasSubFolder(LLUUID folderID) { - InventoryFolder returnFolder = null; + InventoryFolderImpl returnFolder = null; if (this.SubFolders.ContainsKey(folderID)) { returnFolder = this.SubFolders[folderID]; } else { - foreach (InventoryFolder folder in this.SubFolders.Values) + foreach (InventoryFolderImpl folder in this.SubFolders.Values) { returnFolder = folder.HasSubFolder(folderID); if (returnFolder != null) @@ -140,4 +140,4 @@ namespace OpenSim.Framework.Communications.Caches return itemList; } } -} +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs index 13ce39e197..86e26f0392 100644 --- a/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs +++ b/OpenSim/Framework/Communications/Cache/LibraryRootFolder.cs @@ -35,16 +35,16 @@ using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; using Nini.Config; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { /// /// Basically a hack to give us a Inventory library while we don't have a inventory server /// once the server is fully implemented then should read the data from that /// - public class LibraryRootFolder : InventoryFolder + public class LibraryRootFolder : Cache.InventoryFolderImpl { private LLUUID libOwner = new LLUUID("11111111-1111-0000-0000-000100bba000"); - private InventoryFolder m_textureFolder; + private Cache.InventoryFolderImpl m_textureFolder; public LibraryRootFolder() { @@ -55,7 +55,7 @@ namespace OpenSim.Framework.Communications.Caches this.type = (short)-1; this.version = (ushort)1; - InventoryFolder folderInfo = new InventoryFolder(); + Cache.InventoryFolderImpl folderInfo = new InventoryFolderImpl(); folderInfo.agentID = libOwner; folderInfo.folderID = new LLUUID("00000112-000f-0000-0000-000100bba001"); folderInfo.name = "Texture Library"; @@ -242,4 +242,4 @@ namespace OpenSim.Framework.Communications.Caches } } -} +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs index 362ab176c7..bd7aeef032 100644 --- a/OpenSim/Framework/Communications/Cache/UserProfileCache.cs +++ b/OpenSim/Framework/Communications/Cache/UserProfileCache.cs @@ -36,7 +36,7 @@ using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; -namespace OpenSim.Framework.Communications.Caches +namespace OpenSim.Framework.Communications.Cache { public class UserProfileCache { @@ -107,15 +107,15 @@ namespace OpenSim.Framework.Communications.Caches CachedUserInfo info = this.UserProfiles[remoteClient.AgentId]; if (info.RootFolder.folderID == parentID) { - InventoryFolder createdFolder = info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); - if (createdFolder != null) - { - this.m_parent.InventoryService.AddNewInventoryFolder(remoteClient.AgentId, createdFolder); - } + InventoryFolderImpl createdFolder = info.RootFolder.CreateNewSubFolder(folderID, folderName, folderType); + if (createdFolder != null) + { + this.m_parent.InventoryService.AddNewInventoryFolder(remoteClient.AgentId, createdFolder); + } } else { - InventoryFolder folder = info.RootFolder.HasSubFolder(parentID); + InventoryFolderImpl folder = info.RootFolder.HasSubFolder(parentID); if (folder != null) { folder.CreateNewSubFolder(folderID, folderName, folderType); @@ -127,7 +127,7 @@ namespace OpenSim.Framework.Communications.Caches public void HandleFecthInventoryDescendents(IClientAPI remoteClient, LLUUID folderID, LLUUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder) { - InventoryFolder fold = null; + InventoryFolderImpl fold = null; if (folderID == libraryRoot.folderID ) { remoteClient.SendInventoryFolderDetails(libraryRoot.agentID, libraryRoot.folderID, libraryRoot.RequestListOfItems()); @@ -150,7 +150,7 @@ namespace OpenSim.Framework.Communications.Caches } else { - InventoryFolder folder = info.RootFolder.HasSubFolder(folderID); + InventoryFolderImpl folder = info.RootFolder.HasSubFolder(folderID); if ((folder != null) && fetchItems) { remoteClient.SendInventoryFolderDetails(remoteClient.AgentId, folderID, folder.RequestListOfItems()); @@ -185,7 +185,7 @@ namespace OpenSim.Framework.Communications.Caches /// private void RequestInventoryForUser(LLUUID userID, CachedUserInfo userInfo) { - this.m_parent.InventoryService.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); + this.m_parent.InventoryService.RequestInventoryForUser(userID, userInfo.FolderReceive, userInfo.ItemReceive); } /// @@ -223,5 +223,4 @@ namespace OpenSim.Framework.Communications.Caches { } } -} - +} \ No newline at end of file diff --git a/OpenSim/Framework/Communications/Capabilities/Caps.cs b/OpenSim/Framework/Communications/Capabilities/Caps.cs index 899fb6105d..095a5b1d54 100644 --- a/OpenSim/Framework/Communications/Capabilities/Caps.cs +++ b/OpenSim/Framework/Communications/Capabilities/Caps.cs @@ -61,8 +61,9 @@ namespace OpenSim.Region.Capabilities private Queue CapsEventQueue = new Queue(); public NewInventoryItem AddNewInventoryItem = null; public ItemUpdatedCallback ItemUpdatedCall = null; + private bool m_dumpAssetsToFile; - public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, int httpPort, string capsPath, LLUUID agent) + public Caps(AssetCache assetCach, BaseHttpServer httpServer, string httpListen, int httpPort, string capsPath, LLUUID agent, bool dumpAssetsToFile) { assetCache = assetCach; m_capsObjectPath = capsPath; @@ -70,6 +71,7 @@ namespace OpenSim.Region.Capabilities m_httpListenerHostName = httpListen; m_httpListenPort = httpPort; agentID = agent; + m_dumpAssetsToFile = dumpAssetsToFile; } /// @@ -250,7 +252,7 @@ namespace OpenSim.Region.Capabilities LLUUID newInvItem = llsdRequest.item_id; string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); - ItemUpdater uploader = new ItemUpdater(newInvItem, capsBase + uploaderPath, this.httpListener); + ItemUpdater uploader = new ItemUpdater(newInvItem, capsBase + uploaderPath, this.httpListener, m_dumpAssetsToFile ); uploader.OnUpLoad += this.ItemUpdated; httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps)); @@ -280,7 +282,7 @@ namespace OpenSim.Region.Capabilities LLUUID parentFolder = llsdRequest.folder_id; string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); - AssetUploader uploader = new AssetUploader(assetName, assetDes, newAsset, newInvItem, parentFolder, llsdRequest.inventory_type, llsdRequest.asset_type, capsBase + uploaderPath, this.httpListener); + AssetUploader uploader = new AssetUploader(assetName, assetDes, newAsset, newInvItem, parentFolder, llsdRequest.inventory_type, llsdRequest.asset_type, capsBase + uploaderPath, this.httpListener, m_dumpAssetsToFile); httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps)); string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + capsBase + uploaderPath; @@ -360,21 +362,14 @@ namespace OpenSim.Region.Capabilities private LLUUID inventoryItemID; private LLUUID parentFolder; private BaseHttpServer httpListener; - private bool SaveAssets = false; + private bool m_dumpAssetsToFile; private string m_assetName = ""; private string m_assetDes = ""; private string m_invType = ""; private string m_assetType = ""; - /// - /// - /// - /// - /// - /// - /// - public AssetUploader(string assetName, string description, LLUUID assetID, LLUUID inventoryItem, LLUUID parentFolderID, string invType, string assetType, string path, BaseHttpServer httpServer) + public AssetUploader(string assetName, string description, LLUUID assetID, LLUUID inventoryItem, LLUUID parentFolderID, string invType, string assetType, string path, BaseHttpServer httpServer, bool dumpAssetsToFile) { m_assetName = assetName; m_assetDes = description; @@ -385,7 +380,7 @@ namespace OpenSim.Region.Capabilities parentFolder = parentFolderID; m_assetType = assetType; m_invType = invType; - + m_dumpAssetsToFile = dumpAssetsToFile; } /// @@ -408,8 +403,10 @@ namespace OpenSim.Region.Capabilities httpListener.RemoveStreamHandler("POST", uploaderPath); - if(this.SaveAssets) + if (this.m_dumpAssetsToFile) + { this.SaveAssetToFile(m_assetName + ".jp2", data); + } if (OnUpLoad != null) { @@ -436,19 +433,12 @@ namespace OpenSim.Region.Capabilities private string uploaderPath = ""; private LLUUID inventoryItemID; private BaseHttpServer httpListener; - private bool SaveAssets = false; + private bool m_dumpAssetToFile; - - /// - /// - /// - /// - /// - /// - /// - public ItemUpdater( LLUUID inventoryItem, string path, BaseHttpServer httpServer) + public ItemUpdater( LLUUID inventoryItem, string path, BaseHttpServer httpServer, bool dumpAssetToFile) { - + m_dumpAssetToFile = dumpAssetToFile; + inventoryItemID = inventoryItem; uploaderPath = path; httpListener = httpServer; @@ -481,8 +471,10 @@ namespace OpenSim.Region.Capabilities httpListener.RemoveStreamHandler("POST", uploaderPath); - if (this.SaveAssets) - this.SaveAssetToFile("updateditem"+Util.RandomClass.Next(1,1000) + ".dat", data); + if (this.m_dumpAssetToFile) + { + this.SaveAssetToFile("updateditem" + Util.RandomClass.Next(1, 1000) + ".dat", data); + } return res; } diff --git a/OpenSim/Framework/Communications/CommunicationsManager.cs b/OpenSim/Framework/Communications/CommunicationsManager.cs index 5af07f7267..7a157be645 100644 --- a/OpenSim/Framework/Communications/CommunicationsManager.cs +++ b/OpenSim/Framework/Communications/CommunicationsManager.cs @@ -28,7 +28,6 @@ using System; using libsecondlife; using OpenSim.Framework.Communications.Cache; -using OpenSim.Framework.Communications.Caches; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Servers; using OpenSim.Framework.Types; @@ -87,12 +86,12 @@ namespace OpenSim.Framework.Communications get { return m_networkServersInfo; } } - public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache) + public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, bool dumpAssetsToFile) { m_networkServersInfo = serversInfo; m_assetCache = assetCache; m_userProfileCache = new UserProfileCache(this); - m_transactionsManager = new AssetTransactionManager(this); + m_transactionsManager = new AssetTransactionManager(this, dumpAssetsToFile ); } public void doCreate(string[] cmmdParams) diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs index bfc3ee7d18..5643d78a77 100644 --- a/OpenSim/Framework/Communications/IInventoryServices.cs +++ b/OpenSim/Framework/Communications/IInventoryServices.cs @@ -30,19 +30,18 @@ using System; using System.Collections.Generic; using System.Text; using libsecondlife; -using OpenSim.Framework.Communications.Caches; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Types; -using InventoryFolder = OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Framework.Communications { - public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolder folderInfo); + public delegate void InventoryFolderInfo(LLUUID userID, InventoryFolderImpl folderInfo); public delegate void InventoryItemInfo(LLUUID userID, InventoryItemBase itemInfo); public interface IInventoryServices { void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); - void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); + void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder); void AddNewInventoryItem(LLUUID userID, InventoryItemBase item); void DeleteInventoryItem(LLUUID userID, InventoryItemBase item); void CreateNewUserInventory(LLUUID user); diff --git a/OpenSim/Framework/Communications/InventoryServiceBase.cs b/OpenSim/Framework/Communications/InventoryServiceBase.cs index 06a1ca8519..6549966912 100644 --- a/OpenSim/Framework/Communications/InventoryServiceBase.cs +++ b/OpenSim/Framework/Communications/InventoryServiceBase.cs @@ -31,9 +31,9 @@ using System.Collections.Generic; using System.Reflection; using libsecondlife; using OpenSim.Framework.Communications; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Console; using OpenSim.Framework.Types; -using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Framework.Communications { @@ -232,7 +232,7 @@ namespace OpenSim.Framework.Communications } public abstract void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); - public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); + public abstract void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder); public abstract void AddNewInventoryItem(LLUUID userID, InventoryItemBase item); public abstract void DeleteInventoryItem(LLUUID userID, InventoryItemBase item); } diff --git a/OpenSim/Grid/AssetServer/Main.cs b/OpenSim/Grid/AssetServer/Main.cs index dabacd43d9..542f87f88a 100644 --- a/OpenSim/Grid/AssetServer/Main.cs +++ b/OpenSim/Grid/AssetServer/Main.cs @@ -38,16 +38,10 @@ using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Configuration; using OpenSim.Framework.Console; using OpenSim.Framework.Interfaces; +using OpenSim.Framework.Servers; using OpenSim.Framework.Utilities; using OpenSim.Framework.Servers; -/* -using System.Text; -using Db4objects.Db4o; -using OpenSim.Framework.Types; -using OpenSim.Framework.Utilities; -using OpenSim.Framework.Communications.Caches; -*/ namespace OpenSim.Grid.AssetServer { /// diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index f550ee29f1..fdaaa51303 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -44,7 +44,7 @@ using OpenSim.Region.Environment; using OpenSim.Region.Environment.Scenes; using OpenSim.Region.Physics.Manager; using System.Globalization; -using RegionInfo=OpenSim.Framework.Types.RegionInfo; +using RegionInfo = OpenSim.Framework.Types.RegionInfo; namespace OpenSim { @@ -78,21 +78,25 @@ namespace OpenSim private readonly string m_logFilename = ("region-console.log"); private bool m_permissions = false; - private bool standaloneAuthenticate = false; - private string standaloneWelcomeMessage = null; - private string standaloneInventoryPlugin = "OpenSim.Framework.Data.SQLite.dll"; - private string standaloneAssetPlugin = "OpenSim.Framework.Data.SQLite.dll"; - private string standaloneUserPlugin = "OpenSim.Framework.Data.DB4o.dll"; + private bool m_standaloneAuthenticate = false; + private string m_standaloneWelcomeMessage = null; + private string m_standaloneInventoryPlugin = "OpenSim.Framework.Data.SQLite.dll"; + private string m_standaloneAssetPlugin = "OpenSim.Framework.Data.SQLite.dll"; + private string m_standaloneUserPlugin = "OpenSim.Framework.Data.DB4o.dll"; private string m_assetStorage = "db4o"; public ConsoleCommand CreateAccount = null; + private bool m_dumpAssetsToFile; public OpenSimMain(IConfigSource configSource) : base() { - string iniFile = configSource.Configs["Startup"].GetString("inifile", "OpenSim.ini"); - string useExecutePathString = configSource.Configs["Startup"].GetString("useexecutepath", "false").ToLower(); + IConfig startupConfig = configSource.Configs["Startup"]; + + string iniFile = startupConfig.GetString("inifile", "OpenSim.ini"); + string useExecutePathString = startupConfig.GetString("useexecutepath", "false").ToLower(); + bool useExecutePath = false; if (useExecutePathString == "true" || useExecutePathString == "" || useExecutePathString == "1" || useExecutePathString == "yes") { @@ -112,38 +116,57 @@ namespace OpenSim //(as if someone has bothered to enter a command line arg, we should take notice of it) m_config.Merge(configSource); } + else + { + m_config = configSource; + } ReadConfigSettings(); - } protected void ReadConfigSettings() { m_networkServersInfo = new NetworkServersInfo(); - m_sandbox = !m_config.Configs["Startup"].GetBoolean("gridmode", false); - m_physicsEngine = m_config.Configs["Startup"].GetString("physics", "basicphysics"); - m_verbose = m_config.Configs["Startup"].GetBoolean("verbose", true); - m_permissions = m_config.Configs["Startup"].GetBoolean("serverside_object_permissions", false); - m_storageDLL = m_config.Configs["Startup"].GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll"); + IConfig startupConfig = m_config.Configs["Startup"]; - m_startupCommandsFile = m_config.Configs["Startup"].GetString("startup_console_commands_file", ""); - m_shutdownCommandsFile = m_config.Configs["Startup"].GetString("shutdown_console_commands_file", ""); + if (startupConfig != null ) + { + m_sandbox = !startupConfig.GetBoolean("gridmode", false); + m_physicsEngine = startupConfig.GetString("physics", "basicphysics"); + m_verbose = startupConfig.GetBoolean("verbose", true); + m_permissions = startupConfig.GetBoolean("serverside_object_permissions", false); - m_scriptEngine = m_config.Configs["Startup"].GetString("script_engine", "DotNetEngine"); + m_storageDLL = startupConfig.GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll"); - m_assetStorage = m_config.Configs["Startup"].GetString("asset_database", "db4o"); + m_startupCommandsFile = startupConfig.GetString("startup_console_commands_file", ""); + m_shutdownCommandsFile = startupConfig.GetString("shutdown_console_commands_file", ""); - m_config.Configs["Startup"].GetBoolean("default_modules", true); - m_config.Configs["Startup"].GetBoolean("default_shared_modules", true); - m_config.Configs["Startup"].GetString("except_modules", ""); - m_config.Configs["Startup"].GetString("except_shared_modules", ""); + m_scriptEngine = startupConfig.GetString("script_engine", "DotNetEngine"); + + m_assetStorage = startupConfig.GetString("asset_database", "db4o"); + + // wtf? + startupConfig.GetBoolean("default_modules", true); + startupConfig.GetBoolean("default_shared_modules", true); + startupConfig.GetString("except_modules", ""); + startupConfig.GetString("except_shared_modules", ""); + } + + IConfig standaloneConfig = m_config.Configs["StandAlone"]; + if (standaloneConfig != null) + { + m_standaloneAuthenticate = standaloneConfig.GetBoolean("accounts_authenticate", false); + m_standaloneWelcomeMessage = standaloneConfig.GetString("welcome_message", "Welcome to OpenSim"); + m_standaloneInventoryPlugin = + standaloneConfig.GetString("inventory_plugin", "OpenSim.Framework.Data.SQLite.dll"); + m_standaloneUserPlugin = + standaloneConfig.GetString("userDatabase_plugin", "OpenSim.Framework.Data.DB4o.dll"); + m_standaloneAssetPlugin = standaloneConfig.GetString("asset_plugin", "OpenSim.Framework.Data.SQLite.dll"); + + m_dumpAssetsToFile = standaloneConfig.GetBoolean("dump_assets_to_file", false); + } - standaloneAuthenticate = m_config.Configs["StandAlone"].GetBoolean("accounts_authenticate", false); - standaloneWelcomeMessage = m_config.Configs["StandAlone"].GetString("welcome_message", "Welcome to OpenSim"); - standaloneInventoryPlugin = m_config.Configs["StandAlone"].GetString("inventory_plugin", "OpenSim.Framework.Data.SQLite.dll"); - standaloneUserPlugin = m_config.Configs["StandAlone"].GetString("userDatabase_plugin", "OpenSim.Framework.Data.DB4o.dll"); - standaloneAssetPlugin = m_config.Configs["StandAlone"].GetString("asset_plugin", "OpenSim.Framework.Data.SQLite.dll"); m_networkServersInfo.loadFromConfiguration(m_config); } @@ -168,22 +191,22 @@ namespace OpenSim if (m_sandbox) { LocalInventoryService inventoryService = new LocalInventoryService(); - inventoryService.AddPlugin(standaloneInventoryPlugin); - - LocalUserServices userService = new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, m_networkServersInfo.DefaultHomeLocY, inventoryService ); - userService.AddPlugin( standaloneUserPlugin ); + inventoryService.AddPlugin(m_standaloneInventoryPlugin); + + LocalUserServices userService = new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, m_networkServersInfo.DefaultHomeLocY, inventoryService); + userService.AddPlugin(m_standaloneUserPlugin); LocalBackEndServices backendService = new LocalBackEndServices(); - CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService); + CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService, m_dumpAssetsToFile); m_commsManager = localComms; - m_loginService = new LocalLoginService(userService, standaloneWelcomeMessage, localComms, m_networkServersInfo, standaloneAuthenticate); + m_loginService = new LocalLoginService(userService, m_standaloneWelcomeMessage, localComms, m_networkServersInfo, m_standaloneAuthenticate); m_loginService.OnLoginToRegion += backendService.AddNewSession; m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod); - if (standaloneAuthenticate) + if (m_standaloneAuthenticate) { this.CreateAccount = localComms.doCreate; } @@ -209,7 +232,7 @@ namespace OpenSim configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); } - m_moduleLoader = new ModuleLoader( m_log, m_config ); + m_moduleLoader = new ModuleLoader(m_log, m_config); MainLog.Instance.Verbose("Loading Shared Modules"); m_moduleLoader.LoadDefaultSharedModules(); @@ -240,10 +263,10 @@ namespace OpenSim } else { - MainLog.Instance.Verbose("STARTUP","No startup command script specified. Moving on..."); + MainLog.Instance.Verbose("STARTUP", "No startup command script specified. Moving on..."); } - MainLog.Instance.Status("STARTUP","Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)"); + MainLog.Instance.Status("STARTUP", "Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)"); } public UDPServer CreateRegion(RegionInfo regionInfo) @@ -289,7 +312,7 @@ namespace OpenSim protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager) { - return new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, m_moduleLoader); + return new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, m_moduleLoader, m_dumpAssetsToFile); } protected override void Initialize() @@ -307,7 +330,7 @@ namespace OpenSim } else { - SQLAssetServer sqlAssetServer = new SQLAssetServer(standaloneAssetPlugin); + SQLAssetServer sqlAssetServer = new SQLAssetServer(m_standaloneAssetPlugin); sqlAssetServer.LoadDefaultAssets(); assetServer = sqlAssetServer; } @@ -408,7 +431,7 @@ namespace OpenSim } else { - MainLog.Instance.Error("COMMANDFILE","Command script missing. Can not run commands"); + MainLog.Instance.Error("COMMANDFILE", "Command script missing. Can not run commands"); } } diff --git a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs index e57e445d34..13af96ce01 100644 --- a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs +++ b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs @@ -35,8 +35,15 @@ namespace OpenSim.Region.Communications.Local { public class CommunicationsLocal : CommunicationsManager { - public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache, IUserService userService, LocalInventoryService inventoryService, IInterRegionCommunications interRegionService, IGridServices gridService) - : base(serversInfo, httpServer, assetCache) + public CommunicationsLocal( + NetworkServersInfo serversInfo, + BaseHttpServer httpServer, + AssetCache assetCache, + IUserService userService, + LocalInventoryService inventoryService, + IInterRegionCommunications interRegionService, + IGridServices gridService, bool dumpAssetsToFile ) + : base(serversInfo, httpServer, assetCache, dumpAssetsToFile) { m_inventoryService = inventoryService; m_userService = userService; diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs index 5d450bb721..fd6002af5a 100644 --- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs +++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs @@ -29,8 +29,8 @@ using System.Collections.Generic; using libsecondlife; using OpenSim.Framework.Communications; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Types; -using InventoryFolder=OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Region.Communications.Local { @@ -45,14 +45,14 @@ namespace OpenSim.Region.Communications.Local public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack) { List folders = this.RequestFirstLevelFolders(userID); - InventoryFolder rootFolder = null; + InventoryFolderImpl rootFolder = null; //need to make sure we send root folder first foreach (InventoryFolderBase folder in folders) { if (folder.parentID == libsecondlife.LLUUID.Zero) { - InventoryFolder newfolder = new InventoryFolder(folder); + InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); rootFolder = newfolder; folderCallBack(userID, newfolder); } @@ -64,7 +64,7 @@ namespace OpenSim.Region.Communications.Local { if (folder.folderID != rootFolder.folderID) { - InventoryFolder newfolder = new InventoryFolder(folder); + InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); folderCallBack(userID, newfolder); List items = this.RequestFolderItems(newfolder.folderID); @@ -77,7 +77,7 @@ namespace OpenSim.Region.Communications.Local } } - public override void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder) + public override void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) { this.AddFolder(folder); } diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs index 8ebeeca0c0..4be31d80cb 100644 --- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs +++ b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs @@ -36,7 +36,7 @@ namespace OpenSim.Region.Communications.OGS1 { public class CommunicationsOGS1 : CommunicationsManager { - public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) :base(serversInfo, httpServer, assetCache) + public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) :base(serversInfo, httpServer, assetCache, false) { OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer); m_gridService = gridInterComms; diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs index 77713af77e..d8f5a22723 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs @@ -29,8 +29,8 @@ using System.Collections.Generic; using libsecondlife; using OpenSim.Framework.Communications; +using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Types; -using InventoryFolder = OpenSim.Framework.Communications.Caches.InventoryFolder; namespace OpenSim.Region.Communications.OGS1 @@ -50,7 +50,7 @@ namespace OpenSim.Region.Communications.OGS1 } - public void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder) + public void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) { } diff --git a/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs b/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs new file mode 100644 index 0000000000..b6f24c3b40 --- /dev/null +++ b/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; +using libsecondlife; +using OpenSim.Framework.Types; + +namespace OpenSim.Region.Environment.Interfaces +{ + public interface IAvatarFactory : IRegionModule + { + bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, out byte[] visualParams); + } +} diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs index 4fc45a0ddf..160b740e0b 100644 --- a/OpenSim/Region/Environment/ModuleLoader.cs +++ b/OpenSim/Region/Environment/ModuleLoader.cs @@ -67,12 +67,18 @@ namespace OpenSim.Region.Environment { DynamicTextureModule dynamicModule = new DynamicTextureModule(); LoadedSharedModules.Add(dynamicModule.Name, dynamicModule); + ChatModule chat = new ChatModule(); LoadedSharedModules.Add(chat.Name, chat); + InstantMessageModule imMod = new InstantMessageModule(); LoadedSharedModules.Add(imMod.Name, imMod); + LoadImageURLModule loadMod = new LoadImageURLModule(); LoadedSharedModules.Add(loadMod.Name, loadMod); + + AvatarFactoryModule avatarFactory = new AvatarFactoryModule(); + LoadedSharedModules.Add(avatarFactory.Name, avatarFactory); } public void InitialiseSharedModules(Scene scene) diff --git a/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs new file mode 100644 index 0000000000..f825b7acba --- /dev/null +++ b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text; +using libsecondlife; +using Nini.Config; +using OpenSim.Framework.Types; +using OpenSim.Region.Environment.Interfaces; +using OpenSim.Region.Environment.Scenes; + +namespace OpenSim.Region.Environment.Modules +{ + public class AvatarFactoryModule : IAvatarFactory + { + public bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, out byte[] visualParams) + { + GetDefaultAvatarAppearance(out wearables, out visualParams); + return true; + } + + public void Initialise(Scene scene, IConfigSource source) + { + scene.RegisterModuleInterface(this); + } + + public void PostInitialise() + { + } + + public void Close() + { + } + + public string Name + { + get { return "Default Avatar Factory"; } + } + + public bool IsSharedModule + { + get { return true; } + } + + public static void GetDefaultAvatarAppearance(out AvatarWearable[] wearables, out byte[] visualParams) + { + visualParams = new byte[218]; + for (int i = 0; i < 218; i++) + { + visualParams[i] = 100; + } + + wearables = AvatarWearable.DefaultWearables; + } + } + + + +} diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs index 2fe308d91d..c2611d0f74 100644 --- a/OpenSim/Region/Environment/Modules/ChatModule.cs +++ b/OpenSim/Region/Environment/Modules/ChatModule.cs @@ -126,7 +126,9 @@ namespace OpenSim.Region.Environment.Modules LLUUID fromAgentID = LLUUID.Zero; if (e.Sender != null) + { avatar = scene.GetScenePresence(e.Sender.AgentId); + } if (avatar != null) { diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 96beb052c7..4c04592c6c 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -30,7 +30,6 @@ using Axiom.Math; using libsecondlife; using libsecondlife.Packets; using OpenSim.Framework.Communications.Cache; -using OpenSim.Framework.Communications.Caches; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Types; using OpenSim.Framework.Utilities; diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 69c3f9e5ab..e86562db6d 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -50,6 +50,7 @@ using OpenSim.Region.Environment.Types; using OpenSim.Region.Physics.Manager; using OpenSim.Region.Terrain; using Timer = System.Timers.Timer; +using OpenSim.Region.Environment.Modules; namespace OpenSim.Region.Environment.Scenes { @@ -90,11 +91,11 @@ namespace OpenSim.Region.Environment.Scenes public IXfer XferManager; - private IHttpRequests m_httpRequestModule = null; - private ISimChat m_simChatModule = null; - private IXMLRPC m_xmlrpcModule = null; - private IWorldComm m_worldCommModule = null; - + private IHttpRequests m_httpRequestModule; + private ISimChat m_simChatModule; + private IXMLRPC m_xmlrpcModule; + private IWorldComm m_worldCommModule; + private IAvatarFactory m_AvatarFactory; // Central Update Loop @@ -165,7 +166,7 @@ namespace OpenSim.Region.Environment.Scenes public Scene(RegionInfo regInfo, AgentCircuitManager authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer, - ModuleLoader moduleLoader) + ModuleLoader moduleLoader, bool dumpAssetsToFile) { updateLock = new Mutex(false); @@ -205,6 +206,7 @@ namespace OpenSim.Region.Environment.Scenes ScenePresence.LoadAnims(); httpListener = httpServer; + m_dumpAssetsToFile = dumpAssetsToFile; } #endregion @@ -215,7 +217,6 @@ namespace OpenSim.Region.Environment.Scenes m_httpRequestModule = RequestModuleInterface(); m_xmlrpcModule = RequestModuleInterface(); m_worldCommModule = RequestModuleInterface(); - XferManager = RequestModuleInterface(); } @@ -855,7 +856,15 @@ namespace OpenSim.Region.Environment.Scenes { ScenePresence newAvatar = null; - newAvatar = new ScenePresence(client, this, m_regInfo); + byte[] visualParams; + AvatarWearable[] wearables; + + if( m_AvatarFactory == null || !m_AvatarFactory.TryGetIntialAvatarAppearance( client.AgentId, out wearables, out visualParams)) + { + AvatarFactoryModule.GetDefaultAvatarAppearance(out wearables, out visualParams); + } + + newAvatar = new ScenePresence(client, this, m_regInfo, visualParams, wearables); newAvatar.IsChildAgent = child; if (child) @@ -1096,7 +1105,8 @@ namespace OpenSim.Region.Environment.Scenes //Console.WriteLine("new user, so creating caps handler for it"); Caps cap = new Caps(commsManager.AssetCache, httpListener, m_regInfo.ExternalHostName, httpListener.Port, - agent.CapsPath, agent.AgentID); + agent.CapsPath, agent.AgentID, m_dumpAssetsToFile); + Util.SetCapsURL(agent.AgentID, "http://" + m_regInfo.ExternalHostName + ":" + httpListener.Port.ToString() + "/CAPS/" + agent.CapsPath + "0000/"); @@ -1456,6 +1466,7 @@ namespace OpenSim.Region.Environment.Scenes #region Script Engine private List ScriptEngines = new List(); + private bool m_dumpAssetsToFile; public void AddScriptEngine(ScriptEngineInterface ScriptEngine, LogBase m_logger) { diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 99f78c98c7..256b6b50b6 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -53,8 +53,8 @@ namespace OpenSim.Region.Environment.Scenes private short m_updateCount = 0; private Quaternion bodyRot; - private byte[] visualParams; - private AvatarWearable[] Wearables; + private byte[] m_visualParams; + private AvatarWearable[] m_wearables; private LLObject.TextureEntry m_textureEntry; public bool IsRestrictedToRegion = false; @@ -90,10 +90,10 @@ namespace OpenSim.Region.Environment.Scenes //public List InterestList = new List(); - // private string m_currentQuadNode = " "; + // private string m_currentQuadNode = " "; - // private Queue m_fullPartUpdates = new Queue(); - //private Queue m_tersePartUpdates = new Queue(); + // private Queue m_fullPartUpdates = new Queue(); + //private Queue m_tersePartUpdates = new Queue(); private UpdateQueue m_partsUpdateQueue = new UpdateQueue(); private Dictionary m_updateTimes = new Dictionary(); @@ -173,8 +173,8 @@ namespace OpenSim.Region.Environment.Scenes m_pos = value; } - } - + } + public override LLVector3 Velocity { get @@ -220,14 +220,7 @@ namespace OpenSim.Region.Environment.Scenes #region Constructor(s) - /// - /// - /// - /// - /// - /// - /// - public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) + public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, AvatarWearable[] wearables) { m_scene = world; m_uuid = client.AgentId; @@ -240,13 +233,9 @@ namespace OpenSim.Region.Environment.Scenes m_localId = m_scene.NextLocalId; AbsolutePosition = m_controllingClient.StartPos; - visualParams = new byte[218]; - for (int i = 0; i < 218; i++) - { - visualParams[i] = 100; - } + m_visualParams = visualParams; + m_wearables = wearables; - Wearables = AvatarWearable.DefaultWearables; Animations = new AvatarAnimations(); Animations.LoadAnims(); @@ -351,7 +340,7 @@ namespace OpenSim.Region.Environment.Scenes AbsolutePosition = pos; - AddToPhysicalScene( ); + AddToPhysicalScene(); m_physicsActor.Flying = isFlying; @@ -410,7 +399,7 @@ namespace OpenSim.Region.Environment.Scenes for (int i = 0; i < visualParam.Length; i++) { - visualParams[i] = visualParam[i].ParamValue; + m_visualParams[i] = visualParam[i].ParamValue; } SendAppearanceToAllOtherAgents(); @@ -459,7 +448,7 @@ namespace OpenSim.Region.Environment.Scenes Vector3 agent_control_v3 = new Vector3(0, 0, 0); Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z); bool oldflying = PhysicsActor.Flying; - PhysicsActor.Flying = ((flags & (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0); + PhysicsActor.Flying = ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0); if (PhysicsActor.Flying != oldflying) { update_movementflag = true; @@ -470,23 +459,23 @@ namespace OpenSim.Region.Environment.Scenes bodyRot = q; update_rotation = true; } - foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags))) + foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof(Dir_ControlFlags))) { - if ((flags & (uint) DCF) != 0) + if ((flags & (uint)DCF) != 0) { DCFlagKeyPressed = true; agent_control_v3 += Dir_Vectors[i]; - if ((m_movementflag & (uint) DCF) == 0) + if ((m_movementflag & (uint)DCF) == 0) { - m_movementflag += (byte) (uint) DCF; + m_movementflag += (byte)(uint)DCF; update_movementflag = true; } } else { - if ((m_movementflag & (uint) DCF) != 0) + if ((m_movementflag & (uint)DCF) != 0) { - m_movementflag -= (byte) (uint) DCF; + m_movementflag -= (byte)(uint)DCF; update_movementflag = true; } } @@ -531,10 +520,10 @@ namespace OpenSim.Region.Environment.Scenes } NewForce newVelocity = new NewForce(); - Vector3 direc = rotation*vec; + Vector3 direc = rotation * vec; direc.Normalize(); - direc = direc*((0.03f)*128f); + direc = direc * ((0.03f) * 128f); if (m_physicsActor.Flying) direc *= 4; @@ -619,7 +608,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void SendTerseUpdateToAllClients() { - m_scene.Broadcast( SendTerseUpdateToClient ); + m_scene.Broadcast(SendTerseUpdateToClient); } public void SendCoarseLocations() @@ -628,7 +617,7 @@ namespace OpenSim.Region.Environment.Scenes List avatars = m_scene.GetAvatars(); for (int i = 0; i < avatars.Count; i++) { - if (avatars[i] != this ) + if (avatars[i] != this) { CoarseLocations.Add(avatars[i].AbsolutePosition); } @@ -642,7 +631,7 @@ namespace OpenSim.Region.Environment.Scenes m_newCoarseLocations = true; } - + /// @@ -695,7 +684,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void SendOurAppearance(IClientAPI OurClient) { - m_controllingClient.SendWearables(Wearables); + m_controllingClient.SendWearables(m_wearables); //this.SendFullUpdateToAllClients(); //this.SendAppearanceToAllOtherAgents(); @@ -734,7 +723,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void SendAppearanceToOtherAgent(ScenePresence avatarInfo) { - avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, visualParams, + avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, m_visualParams, m_textureEntry.ToBytes()); } @@ -793,9 +782,9 @@ namespace OpenSim.Region.Environment.Scenes LLVector3 vel = Velocity; float timeStep = 0.1f; - pos2.X = pos2.X + (vel.X*timeStep); - pos2.Y = pos2.Y + (vel.Y*timeStep); - pos2.Z = pos2.Z + (vel.Z*timeStep); + pos2.X = pos2.X + (vel.X * timeStep); + pos2.Y = pos2.Y + (vel.Y * timeStep); + pos2.Z = pos2.Z + (vel.Z * timeStep); if ((pos2.X < 0) || (pos2.X > 256)) { @@ -840,7 +829,7 @@ namespace OpenSim.Region.Environment.Scenes } LLVector3 vel = m_velocity; - ulong neighbourHandle = Helpers.UIntsToLong((uint) (neighbourx*256), (uint) (neighboury*256)); + ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury * 256)); RegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); if (neighbourRegion != null) { @@ -940,7 +929,7 @@ namespace OpenSim.Region.Environment.Scenes throw new Exception("Can't set Text on avatar."); } - public void AddToPhysicalScene( ) + public void AddToPhysicalScene() { PhysicsScene scene = m_scene.PhysScene; @@ -948,7 +937,7 @@ namespace OpenSim.Region.Environment.Scenes new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z); - m_physicsActor = scene.AddAvatar(this.Firstname+"."+this.Lastname, pVec); + m_physicsActor = scene.AddAvatar(this.Firstname + "." + this.Lastname, pVec); } internal void Close() diff --git a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs index 8492aa5797..d642103166 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs @@ -47,7 +47,7 @@ namespace SimpleApp private List m_avatars; public MyWorld( RegionInfo regionInfo, AgentCircuitManager authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer, ModuleLoader moduleLoader) - : base( regionInfo, authen, commsMan, assetCach, storeMan, httpServer, moduleLoader) + : base( regionInfo, authen, commsMan, assetCach, storeMan, httpServer, moduleLoader, false) { m_avatars = new List(); } diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index 36be3e87f1..4783a17536 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs @@ -72,7 +72,7 @@ namespace SimpleApp LocalUserServices userService = new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, m_networkServersInfo.DefaultHomeLocY, inventoryService); LocalBackEndServices backendService = new LocalBackEndServices(); - CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService); + CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService, false); m_commsManager = localComms; LocalLoginService loginService = new LocalLoginService(userService, "", localComms, m_networkServersInfo, false); diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index a727b32633..9aa54a9f52 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -23,7 +23,7 @@ inventory_plugin = "OpenSim.Framework.Data.SQLite.dll" userDatabase_plugin = "OpenSim.Framework.Data.SQLite.dll" default_location_x = 1000 default_location_y = 1000 - +dump_assets_to_file = false [Network] http_listener_port = 9000