From 2d1c255e8c427c8c595be455e6d7f5c4e01c99a6 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Sun, 4 Nov 2007 14:34:45 +0000 Subject: normalized line endings --- OpenSim/Framework/IRegionLoader.cs | 82 +- .../Filesystem/RegionLoaderFileSystem.cs | 144 +-- .../RegionLoader/Web/RegionLoaderWebServer.cs | 196 +-- OpenSim/Framework/Servers/BaseRequestHandler.cs | 68 +- .../Framework/Servers/RestDeserialiseHandler.cs | 74 +- OpenSim/Framework/Servers/RestObjectPoster.cs | 96 +- OpenSim/Region/Environment/Scenes/InnerScene.cs | 1310 ++++++++++---------- .../Scenes/SceneCommunicationService.cs | 424 +++---- 8 files changed, 1197 insertions(+), 1197 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Framework/IRegionLoader.cs b/OpenSim/Framework/IRegionLoader.cs index 516a886..078a0f5 100644 --- a/OpenSim/Framework/IRegionLoader.cs +++ b/OpenSim/Framework/IRegionLoader.cs @@ -1,41 +1,41 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSim Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ - -using System; -using System.Collections.Generic; -using System.Text; -using OpenSim.Framework; -using Nini.Config; -namespace OpenSim.Framework -{ - public interface IRegionLoader - { - void SetIniConfigSource(IniConfigSource configSource); - RegionInfo[] LoadRegions(); - } -} +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + +using System; +using System.Collections.Generic; +using System.Text; +using OpenSim.Framework; +using Nini.Config; +namespace OpenSim.Framework +{ + public interface IRegionLoader + { + void SetIniConfigSource(IniConfigSource configSource); + RegionInfo[] LoadRegions(); + } +} diff --git a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs index 5ebcb64..7179a7f 100644 --- a/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs +++ b/OpenSim/Framework/RegionLoader/Filesystem/RegionLoaderFileSystem.cs @@ -1,72 +1,72 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSim Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ -using System; -using System.Collections.Generic; -using System.Text; -using Nini.Config; -using OpenSim.Framework; -using System.IO; - -namespace OpenSim.Framework.RegionLoader.Filesystem -{ - public class RegionLoaderFileSystem : IRegionLoader - { - public void SetIniConfigSource(IniConfigSource configSource) - { - } - public RegionInfo[] LoadRegions() - { - string regionConfigPath = Path.Combine(Util.configDir(), "Regions"); - - if (!Directory.Exists(regionConfigPath)) - { - Directory.CreateDirectory(regionConfigPath); - } - - string[] configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); - - if (configFiles.Length == 0) - { - new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "default.xml")); - configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); - } - - RegionInfo[] regionInfos = new RegionInfo[configFiles.Length]; - for (int i = 0; i < configFiles.Length; i++) - { - - RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), configFiles[i]); - regionInfos[i] = regionInfo; - } - - - return regionInfos; - } - - } -} +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +using System; +using System.Collections.Generic; +using System.Text; +using Nini.Config; +using OpenSim.Framework; +using System.IO; + +namespace OpenSim.Framework.RegionLoader.Filesystem +{ + public class RegionLoaderFileSystem : IRegionLoader + { + public void SetIniConfigSource(IniConfigSource configSource) + { + } + public RegionInfo[] LoadRegions() + { + string regionConfigPath = Path.Combine(Util.configDir(), "Regions"); + + if (!Directory.Exists(regionConfigPath)) + { + Directory.CreateDirectory(regionConfigPath); + } + + string[] configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); + + if (configFiles.Length == 0) + { + new RegionInfo("DEFAULT REGION CONFIG", Path.Combine(regionConfigPath, "default.xml")); + configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); + } + + RegionInfo[] regionInfos = new RegionInfo[configFiles.Length]; + for (int i = 0; i < configFiles.Length; i++) + { + + RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), configFiles[i]); + regionInfos[i] = regionInfo; + } + + + return regionInfos; + } + + } +} diff --git a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs index 6a52a43..f7835e3 100644 --- a/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs +++ b/OpenSim/Framework/RegionLoader/Web/RegionLoaderWebServer.cs @@ -1,98 +1,98 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSim Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ -using System; -using System.Net; -using System.IO; -using System.Xml; -using System.Collections.Generic; -using System.Text; -using Nini.Config; -using OpenSim.Framework; - -namespace OpenSim.Framework.RegionLoader.Web -{ - public class RegionLoaderWebServer : IRegionLoader - { - private IniConfigSource m_configSouce; - public void SetIniConfigSource(IniConfigSource configSource) - { - m_configSouce = configSource; - } - public RegionInfo[] LoadRegions() - { - if (m_configSouce == null) - { - Console.MainLog.Instance.Error("Unable to load configuration source! (WebServer Region Loader)"); - return null; - } - else - { - IniConfig startupConfig = (IniConfig)m_configSouce.Configs["Startup"]; - string url = startupConfig.GetString("regionload_webserver_url","").Trim(); - if (url == "") - { - Console.MainLog.Instance.Error("Unable to load webserver URL - URL was empty (WebServer Region Loader"); - return null; - } - else - { - - HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); - webRequest.Timeout = 30000; //30 Second Timeout - Console.MainLog.Instance.Debug("Sending Download Request..."); - HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); - Console.MainLog.Instance.Debug("Downloading Region Information From Remote Server..."); - StreamReader reader = new StreamReader(webResponse.GetResponseStream()); - string xmlSource = ""; - string tempStr = reader.ReadLine(); - while (tempStr != null) - { - xmlSource = xmlSource + tempStr; - tempStr = reader.ReadLine(); - } - Console.MainLog.Instance.Debug("Done downloading region information from server. Total Bytes: " + xmlSource.Length); - XmlDocument xmlDoc = new XmlDocument(); - xmlDoc.LoadXml(xmlSource); - if (xmlDoc.FirstChild.Name == "Regions") - { - RegionInfo[] regionInfos = new RegionInfo[xmlDoc.FirstChild.ChildNodes.Count]; - int i; - for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++) - { - Console.MainLog.Instance.Debug(xmlDoc.FirstChild.ChildNodes[i].OuterXml); - regionInfos[i] = new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i]); - } - - return regionInfos; - } - return null; - } - } - } - } -} +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ +using System; +using System.Net; +using System.IO; +using System.Xml; +using System.Collections.Generic; +using System.Text; +using Nini.Config; +using OpenSim.Framework; + +namespace OpenSim.Framework.RegionLoader.Web +{ + public class RegionLoaderWebServer : IRegionLoader + { + private IniConfigSource m_configSouce; + public void SetIniConfigSource(IniConfigSource configSource) + { + m_configSouce = configSource; + } + public RegionInfo[] LoadRegions() + { + if (m_configSouce == null) + { + Console.MainLog.Instance.Error("Unable to load configuration source! (WebServer Region Loader)"); + return null; + } + else + { + IniConfig startupConfig = (IniConfig)m_configSouce.Configs["Startup"]; + string url = startupConfig.GetString("regionload_webserver_url","").Trim(); + if (url == "") + { + Console.MainLog.Instance.Error("Unable to load webserver URL - URL was empty (WebServer Region Loader"); + return null; + } + else + { + + HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); + webRequest.Timeout = 30000; //30 Second Timeout + Console.MainLog.Instance.Debug("Sending Download Request..."); + HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); + Console.MainLog.Instance.Debug("Downloading Region Information From Remote Server..."); + StreamReader reader = new StreamReader(webResponse.GetResponseStream()); + string xmlSource = ""; + string tempStr = reader.ReadLine(); + while (tempStr != null) + { + xmlSource = xmlSource + tempStr; + tempStr = reader.ReadLine(); + } + Console.MainLog.Instance.Debug("Done downloading region information from server. Total Bytes: " + xmlSource.Length); + XmlDocument xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(xmlSource); + if (xmlDoc.FirstChild.Name == "Regions") + { + RegionInfo[] regionInfos = new RegionInfo[xmlDoc.FirstChild.ChildNodes.Count]; + int i; + for (i = 0; i < xmlDoc.FirstChild.ChildNodes.Count; i++) + { + Console.MainLog.Instance.Debug(xmlDoc.FirstChild.ChildNodes[i].OuterXml); + regionInfos[i] = new RegionInfo("REGION CONFIG #" + (i + 1), xmlDoc.FirstChild.ChildNodes[i]); + } + + return regionInfos; + } + return null; + } + } + } + } +} diff --git a/OpenSim/Framework/Servers/BaseRequestHandler.cs b/OpenSim/Framework/Servers/BaseRequestHandler.cs index b357763..155a283 100644 --- a/OpenSim/Framework/Servers/BaseRequestHandler.cs +++ b/OpenSim/Framework/Servers/BaseRequestHandler.cs @@ -1,35 +1,35 @@ -namespace OpenSim.Framework.Servers -{ - public class BaseRequestHandler - { - public virtual string ContentType - { - get { return "application/xml"; } - } - - private readonly string m_httpMethod; - - public virtual string HttpMethod - { - get { return m_httpMethod; } - } - - private readonly string m_path; - - protected BaseRequestHandler(string httpMethod, string path) - { - m_httpMethod = httpMethod; - m_path = path; - } - - public virtual string Path - { - get { return m_path; } - } - - protected string GetParam(string path) - { - return path.Substring(m_path.Length); - } - } +namespace OpenSim.Framework.Servers +{ + public class BaseRequestHandler + { + public virtual string ContentType + { + get { return "application/xml"; } + } + + private readonly string m_httpMethod; + + public virtual string HttpMethod + { + get { return m_httpMethod; } + } + + private readonly string m_path; + + protected BaseRequestHandler(string httpMethod, string path) + { + m_httpMethod = httpMethod; + m_path = path; + } + + public virtual string Path + { + get { return m_path; } + } + + protected string GetParam(string path) + { + return path.Substring(m_path.Length); + } + } } \ No newline at end of file diff --git a/OpenSim/Framework/Servers/RestDeserialiseHandler.cs b/OpenSim/Framework/Servers/RestDeserialiseHandler.cs index adf5c3f..a47d3d3 100644 --- a/OpenSim/Framework/Servers/RestDeserialiseHandler.cs +++ b/OpenSim/Framework/Servers/RestDeserialiseHandler.cs @@ -1,38 +1,38 @@ -using System.IO; -using System.Xml; -using System.Xml.Serialization; - -namespace OpenSim.Framework.Servers -{ - public delegate TResponse RestDeserialiseMethod(TRequest request); - - public class RestDeserialisehandler : BaseRequestHandler, IStreamHandler - where TRequest : new() - { - private RestDeserialiseMethod m_method; - - public RestDeserialisehandler(string httpMethod, string path, RestDeserialiseMethod method) - : base(httpMethod, path) - { - m_method = method; - } - - public void Handle(string path, Stream request, Stream responseStream) - { - TRequest deserial; - using (XmlTextReader xmlReader = new XmlTextReader(request)) - { - XmlSerializer deserializer = new XmlSerializer(typeof (TRequest)); - deserial = (TRequest) deserializer.Deserialize(xmlReader); - } - - TResponse response = m_method(deserial); - - using (XmlWriter xmlWriter = XmlTextWriter.Create(responseStream)) - { - XmlSerializer serializer = new XmlSerializer(typeof (TResponse)); - serializer.Serialize(xmlWriter, response); - } - } - } +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +namespace OpenSim.Framework.Servers +{ + public delegate TResponse RestDeserialiseMethod(TRequest request); + + public class RestDeserialisehandler : BaseRequestHandler, IStreamHandler + where TRequest : new() + { + private RestDeserialiseMethod m_method; + + public RestDeserialisehandler(string httpMethod, string path, RestDeserialiseMethod method) + : base(httpMethod, path) + { + m_method = method; + } + + public void Handle(string path, Stream request, Stream responseStream) + { + TRequest deserial; + using (XmlTextReader xmlReader = new XmlTextReader(request)) + { + XmlSerializer deserializer = new XmlSerializer(typeof (TRequest)); + deserial = (TRequest) deserializer.Deserialize(xmlReader); + } + + TResponse response = m_method(deserial); + + using (XmlWriter xmlWriter = XmlTextWriter.Create(responseStream)) + { + XmlSerializer serializer = new XmlSerializer(typeof (TResponse)); + serializer.Serialize(xmlWriter, response); + } + } + } } \ No newline at end of file diff --git a/OpenSim/Framework/Servers/RestObjectPoster.cs b/OpenSim/Framework/Servers/RestObjectPoster.cs index 77660a0..b77cbcc 100644 --- a/OpenSim/Framework/Servers/RestObjectPoster.cs +++ b/OpenSim/Framework/Servers/RestObjectPoster.cs @@ -1,49 +1,49 @@ -using System; -using System.IO; -using System.Net; -using System.Text; -using System.Xml; -using System.Xml.Serialization; - - -namespace OpenSim.Framework.Servers -{ - public class RestObjectPoster - { - public static void BeginPostObject(string requestUrl, TRequest obj) - { - Type type = typeof(TRequest); - - WebRequest request = WebRequest.Create(requestUrl); - request.Method = "POST"; - request.ContentType = "text/xml"; - - MemoryStream buffer = new MemoryStream(); - - XmlWriterSettings settings = new XmlWriterSettings(); - settings.Encoding = Encoding.UTF8; - - using (XmlWriter writer = XmlWriter.Create(buffer, settings)) - { - XmlSerializer serializer = new XmlSerializer(type); - serializer.Serialize(writer, obj); - writer.Flush(); - } - - int length = (int)buffer.Length; - request.ContentLength = length; - - Stream requestStream = request.GetRequestStream(); - requestStream.Write(buffer.ToArray(), 0, length); - IAsyncResult result = request.BeginGetResponse(AsyncCallback, request); - } - - private static void AsyncCallback(IAsyncResult result) - { - WebRequest request = (WebRequest)result.AsyncState; - using (WebResponse resp = request.EndGetResponse(result)) - { - } - } - } +using System; +using System.IO; +using System.Net; +using System.Text; +using System.Xml; +using System.Xml.Serialization; + + +namespace OpenSim.Framework.Servers +{ + public class RestObjectPoster + { + public static void BeginPostObject(string requestUrl, TRequest obj) + { + Type type = typeof(TRequest); + + WebRequest request = WebRequest.Create(requestUrl); + request.Method = "POST"; + request.ContentType = "text/xml"; + + MemoryStream buffer = new MemoryStream(); + + XmlWriterSettings settings = new XmlWriterSettings(); + settings.Encoding = Encoding.UTF8; + + using (XmlWriter writer = XmlWriter.Create(buffer, settings)) + { + XmlSerializer serializer = new XmlSerializer(type); + serializer.Serialize(writer, obj); + writer.Flush(); + } + + int length = (int)buffer.Length; + request.ContentLength = length; + + Stream requestStream = request.GetRequestStream(); + requestStream.Write(buffer.ToArray(), 0, length); + IAsyncResult result = request.BeginGetResponse(AsyncCallback, request); + } + + private static void AsyncCallback(IAsyncResult result) + { + WebRequest request = (WebRequest)result.AsyncState; + using (WebResponse resp = request.EndGetResponse(result)) + { + } + } + } } \ No newline at end of file diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 5d85c1d..3195991 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -1,655 +1,655 @@ -using System; -using System.Collections.Generic; -using System.Text; -using libsecondlife; -using libsecondlife.Packets; -using OpenSim.Framework; -using OpenSim.Framework.Console; -using OpenSim.Region.Environment.Types; -using OpenSim.Region.Physics.Manager; - -namespace OpenSim.Region.Environment.Scenes -{ - public class InnerScene - { - public Dictionary ScenePresences; - public Dictionary SceneObjects; - public Dictionary Entities; - - public BasicQuadTreeNode QuadTree; - - protected RegionInfo m_regInfo; - - protected Scene m_parentScene; - public PhysicsScene PhyScene; - - private PermissionManager PermissionsMngr; - - public InnerScene(Scene parent, RegionInfo regInfo, PermissionManager permissionsMngr) - { - m_parentScene = parent; - m_regInfo = regInfo; - PermissionsMngr = permissionsMngr; - QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, 256, 256); - QuadTree.Subdivide(); - QuadTree.Subdivide(); - } - - public void Close() - { - ScenePresences.Clear(); - SceneObjects.Clear(); - Entities.Clear(); - } - - public void AddEntityFromStorage(SceneObjectGroup sceneObject) - { - sceneObject.RegionHandle = m_regInfo.RegionHandle; - sceneObject.SetScene(m_parentScene); - foreach (SceneObjectPart part in sceneObject.Children.Values) - { - part.LocalID = m_parentScene.PrimIDAllocate(); - } - sceneObject.UpdateParentIDs(); - AddEntity(sceneObject); - } - - public void AddEntity(SceneObjectGroup sceneObject) - { - if (!Entities.ContainsKey(sceneObject.UUID)) - { - // QuadTree.AddObject(sceneObject); - Entities.Add(sceneObject.UUID, sceneObject); - } - } - - public void RemovePrim(uint localID, LLUUID avatar_deleter) - { - foreach (EntityBase obj in Entities.Values) - { - if (obj is SceneObjectGroup) - { - if (((SceneObjectGroup)obj).LocalId == localID) - { - m_parentScene.RemoveEntity((SceneObjectGroup)obj); - return; - } - } - } - } - - public ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child, AvatarWearable[] wearables, byte[] visualParams) - { - ScenePresence newAvatar = null; - - newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, visualParams, wearables); - newAvatar.IsChildAgent = child; - - if (child) - { - MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Creating new child agent."); - } - else - { - MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Creating new root agent."); - MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Adding Physical agent."); - - newAvatar.AddToPhysicalScene(); - } - - lock (Entities) - { - if (!Entities.ContainsKey(client.AgentId)) - { - Entities.Add(client.AgentId, newAvatar); - } - else - { - Entities[client.AgentId] = newAvatar; - } - } - lock (ScenePresences) - { - if (ScenePresences.ContainsKey(client.AgentId)) - { - ScenePresences[client.AgentId] = newAvatar; - } - else - { - ScenePresences.Add(client.AgentId, newAvatar); - } - } - - return newAvatar; - } - - /// - /// Request a List of all m_scenePresences in this World - /// - /// - public List GetScenePresences() - { - List result = new List(ScenePresences.Values); - - return result; - } - - public List GetAvatars() - { - List result = - GetScenePresences(delegate(ScenePresence scenePresence) { return !scenePresence.IsChildAgent; }); - - return result; - } - - /// - /// Request a filtered list of m_scenePresences in this World - /// - /// - public List GetScenePresences(FilterAvatarList filter) - { - List result = new List(); - - foreach (ScenePresence avatar in ScenePresences.Values) - { - if (filter(avatar)) - { - result.Add(avatar); - } - } - - return result; - } - - /// - /// Request a Avatar by UUID - /// - /// - /// - public ScenePresence GetScenePresence(LLUUID avatarID) - { - if (ScenePresences.ContainsKey(avatarID)) - { - return ScenePresences[avatarID]; - } - return null; - } - - - public LLUUID ConvertLocalIDToFullID(uint localID) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - return ((SceneObjectGroup)ent).GetPartsFullID(localID); - } - } - } - return LLUUID.Zero; - } - - public void SendAllSceneObjectsToClient(ScenePresence presence) - { - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence); - } - } - } - - public SceneObjectPart GetSceneObjectPart(uint localID) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - return ((SceneObjectGroup)ent).GetChildPart(localID); - } - } - } - return null; - } - - public SceneObjectPart GetSceneObjectPart(LLUUID fullID) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(fullID); - if (hasPrim != false) - { - return ((SceneObjectGroup)ent).GetChildPart(fullID); - } - } - } - return null; - } - - internal bool TryGetAvatar(LLUUID avatarId, out ScenePresence avatar) - { - ScenePresence presence; - if (ScenePresences.TryGetValue(avatarId, out presence)) - { - if (!presence.IsChildAgent) - { - avatar = presence; - return true; - } - } - - avatar = null; - return false; - } - - internal bool TryGetAvatarByName(string avatarName, out ScenePresence avatar) - { - foreach (ScenePresence presence in ScenePresences.Values) - { - if (!presence.IsChildAgent) - { - string name = presence.ControllingClient.FirstName + " " + presence.ControllingClient.LastName; - - if (String.Compare(avatarName, name, true) == 0) - { - avatar = presence; - return true; - } - } - } - - avatar = null; - return false; - } - - - internal void ForEachClient(Action action) - { - foreach (ScenePresence presence in ScenePresences.Values) - { - action(presence.ControllingClient); - } - } - - #region Client Event handlers - /// - /// - /// - /// - /// - /// - public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).Resize(scale, localID); - break; - } - } - } - } - - - /// - /// - /// - /// - /// - /// - public void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateSingleRotation(rot, localID); - break; - } - } - } - } - - /// - /// - /// - /// - /// - /// - public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateGroupRotation(rot); - break; - } - } - } - } - - /// - /// - /// - /// - /// - /// - /// - public void UpdatePrimRotation(uint localID, LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateGroupRotation(pos, rot); - break; - } - } - } - } - - public void UpdatePrimSinglePosition(uint localID, LLVector3 pos, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateSinglePosition(pos, localID); - break; - } - } - } - } - - - /// - /// - /// - /// - /// - /// - public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateGroupPosition(pos); - break; - } - } - } - } - - /// - /// - /// - /// - /// - /// - public void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateTextureEntry(localID, texture); - break; - } - } - } - } - - /// - /// - /// - /// - /// - /// - public void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient) - { - bool hasprim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasprim = ((SceneObjectGroup)ent).HasChildPrim(localID); - if (hasprim != false) - { - ((SceneObjectGroup)ent).UpdatePrimFlags(localID, (ushort)packet.Type, true, packet.ToBytes()); - } - } - } - - //System.Console.WriteLine("Got primupdate packet: " + packet.UsePhysics.ToString()); - } - - public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) - { - if (PermissionsMngr.CanEditObject(remoteClient.AgentId, objectID)) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient); - break; - } - } - } - } - } - - /// - /// - /// - /// - /// - public void PrimName(uint primLocalID, string name) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).SetPartName(name, primLocalID); - break; - } - } - } - } - - /// - /// - /// - /// - /// - public void PrimDescription(uint primLocalID, string description) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).SetPartDescription(description, primLocalID); - break; - } - } - } - } - - public void UpdateExtraParam(uint primLocalID, ushort type, bool inUse, byte[] data) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateExtraParam(primLocalID, type, inUse, data); - break; - } - } - } - } - - /// - /// - /// - /// - /// - public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock) - { - bool hasPrim = false; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); - if (hasPrim != false) - { - ((SceneObjectGroup)ent).UpdateShape(shapeBlock, primLocalID); - break; - } - } - } - } - - /// - /// - /// - /// - /// - public void LinkObjects(uint parentPrim, List childPrims) - { - SceneObjectGroup parenPrim = null; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - if (((SceneObjectGroup)ent).LocalId == parentPrim) - { - parenPrim = (SceneObjectGroup)ent; - break; - } - } - } - - List children = new List(); - if (parenPrim != null) - { - for (int i = 0; i < childPrims.Count; i++) - { - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - if (((SceneObjectGroup)ent).LocalId == childPrims[i]) - { - children.Add((SceneObjectGroup)ent); - } - } - } - } - } - - foreach (SceneObjectGroup sceneObj in children) - { - parenPrim.LinkToGroup(sceneObj); - } - } - - /// - /// - /// - /// - /// - /// - public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags) - { - SceneObjectGroup originPrim = null; - foreach (EntityBase ent in Entities.Values) - { - if (ent is SceneObjectGroup) - { - if (((SceneObjectGroup)ent).LocalId == originalPrim) - { - originPrim = (SceneObjectGroup)ent; - break; - } - } - } - - if (originPrim != null) - { - SceneObjectGroup copy = originPrim.Copy(); - copy.AbsolutePosition = copy.AbsolutePosition + offset; - Entities.Add(copy.UUID, copy); - - copy.ScheduleGroupForFullUpdate(); - - } - else - { - MainLog.Instance.Warn("client", "Attempted to duplicate nonexistant prim"); - } - } - - - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Text; +using libsecondlife; +using libsecondlife.Packets; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.Environment.Types; +using OpenSim.Region.Physics.Manager; + +namespace OpenSim.Region.Environment.Scenes +{ + public class InnerScene + { + public Dictionary ScenePresences; + public Dictionary SceneObjects; + public Dictionary Entities; + + public BasicQuadTreeNode QuadTree; + + protected RegionInfo m_regInfo; + + protected Scene m_parentScene; + public PhysicsScene PhyScene; + + private PermissionManager PermissionsMngr; + + public InnerScene(Scene parent, RegionInfo regInfo, PermissionManager permissionsMngr) + { + m_parentScene = parent; + m_regInfo = regInfo; + PermissionsMngr = permissionsMngr; + QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, 256, 256); + QuadTree.Subdivide(); + QuadTree.Subdivide(); + } + + public void Close() + { + ScenePresences.Clear(); + SceneObjects.Clear(); + Entities.Clear(); + } + + public void AddEntityFromStorage(SceneObjectGroup sceneObject) + { + sceneObject.RegionHandle = m_regInfo.RegionHandle; + sceneObject.SetScene(m_parentScene); + foreach (SceneObjectPart part in sceneObject.Children.Values) + { + part.LocalID = m_parentScene.PrimIDAllocate(); + } + sceneObject.UpdateParentIDs(); + AddEntity(sceneObject); + } + + public void AddEntity(SceneObjectGroup sceneObject) + { + if (!Entities.ContainsKey(sceneObject.UUID)) + { + // QuadTree.AddObject(sceneObject); + Entities.Add(sceneObject.UUID, sceneObject); + } + } + + public void RemovePrim(uint localID, LLUUID avatar_deleter) + { + foreach (EntityBase obj in Entities.Values) + { + if (obj is SceneObjectGroup) + { + if (((SceneObjectGroup)obj).LocalId == localID) + { + m_parentScene.RemoveEntity((SceneObjectGroup)obj); + return; + } + } + } + } + + public ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child, AvatarWearable[] wearables, byte[] visualParams) + { + ScenePresence newAvatar = null; + + newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, visualParams, wearables); + newAvatar.IsChildAgent = child; + + if (child) + { + MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Creating new child agent."); + } + else + { + MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Creating new root agent."); + MainLog.Instance.Verbose("SCENE", m_regInfo.RegionName + ": Adding Physical agent."); + + newAvatar.AddToPhysicalScene(); + } + + lock (Entities) + { + if (!Entities.ContainsKey(client.AgentId)) + { + Entities.Add(client.AgentId, newAvatar); + } + else + { + Entities[client.AgentId] = newAvatar; + } + } + lock (ScenePresences) + { + if (ScenePresences.ContainsKey(client.AgentId)) + { + ScenePresences[client.AgentId] = newAvatar; + } + else + { + ScenePresences.Add(client.AgentId, newAvatar); + } + } + + return newAvatar; + } + + /// + /// Request a List of all m_scenePresences in this World + /// + /// + public List GetScenePresences() + { + List result = new List(ScenePresences.Values); + + return result; + } + + public List GetAvatars() + { + List result = + GetScenePresences(delegate(ScenePresence scenePresence) { return !scenePresence.IsChildAgent; }); + + return result; + } + + /// + /// Request a filtered list of m_scenePresences in this World + /// + /// + public List GetScenePresences(FilterAvatarList filter) + { + List result = new List(); + + foreach (ScenePresence avatar in ScenePresences.Values) + { + if (filter(avatar)) + { + result.Add(avatar); + } + } + + return result; + } + + /// + /// Request a Avatar by UUID + /// + /// + /// + public ScenePresence GetScenePresence(LLUUID avatarID) + { + if (ScenePresences.ContainsKey(avatarID)) + { + return ScenePresences[avatarID]; + } + return null; + } + + + public LLUUID ConvertLocalIDToFullID(uint localID) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + return ((SceneObjectGroup)ent).GetPartsFullID(localID); + } + } + } + return LLUUID.Zero; + } + + public void SendAllSceneObjectsToClient(ScenePresence presence) + { + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence); + } + } + } + + public SceneObjectPart GetSceneObjectPart(uint localID) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + return ((SceneObjectGroup)ent).GetChildPart(localID); + } + } + } + return null; + } + + public SceneObjectPart GetSceneObjectPart(LLUUID fullID) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(fullID); + if (hasPrim != false) + { + return ((SceneObjectGroup)ent).GetChildPart(fullID); + } + } + } + return null; + } + + internal bool TryGetAvatar(LLUUID avatarId, out ScenePresence avatar) + { + ScenePresence presence; + if (ScenePresences.TryGetValue(avatarId, out presence)) + { + if (!presence.IsChildAgent) + { + avatar = presence; + return true; + } + } + + avatar = null; + return false; + } + + internal bool TryGetAvatarByName(string avatarName, out ScenePresence avatar) + { + foreach (ScenePresence presence in ScenePresences.Values) + { + if (!presence.IsChildAgent) + { + string name = presence.ControllingClient.FirstName + " " + presence.ControllingClient.LastName; + + if (String.Compare(avatarName, name, true) == 0) + { + avatar = presence; + return true; + } + } + } + + avatar = null; + return false; + } + + + internal void ForEachClient(Action action) + { + foreach (ScenePresence presence in ScenePresences.Values) + { + action(presence.ControllingClient); + } + } + + #region Client Event handlers + /// + /// + /// + /// + /// + /// + public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).Resize(scale, localID); + break; + } + } + } + } + + + /// + /// + /// + /// + /// + /// + public void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateSingleRotation(rot, localID); + break; + } + } + } + } + + /// + /// + /// + /// + /// + /// + public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateGroupRotation(rot); + break; + } + } + } + } + + /// + /// + /// + /// + /// + /// + /// + public void UpdatePrimRotation(uint localID, LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateGroupRotation(pos, rot); + break; + } + } + } + } + + public void UpdatePrimSinglePosition(uint localID, LLVector3 pos, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateSinglePosition(pos, localID); + break; + } + } + } + } + + + /// + /// + /// + /// + /// + /// + public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateGroupPosition(pos); + break; + } + } + } + } + + /// + /// + /// + /// + /// + /// + public void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateTextureEntry(localID, texture); + break; + } + } + } + } + + /// + /// + /// + /// + /// + /// + public void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient) + { + bool hasprim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasprim = ((SceneObjectGroup)ent).HasChildPrim(localID); + if (hasprim != false) + { + ((SceneObjectGroup)ent).UpdatePrimFlags(localID, (ushort)packet.Type, true, packet.ToBytes()); + } + } + } + + //System.Console.WriteLine("Got primupdate packet: " + packet.UsePhysics.ToString()); + } + + public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) + { + if (PermissionsMngr.CanEditObject(remoteClient.AgentId, objectID)) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient); + break; + } + } + } + } + } + + /// + /// + /// + /// + /// + public void PrimName(uint primLocalID, string name) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).SetPartName(name, primLocalID); + break; + } + } + } + } + + /// + /// + /// + /// + /// + public void PrimDescription(uint primLocalID, string description) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).SetPartDescription(description, primLocalID); + break; + } + } + } + } + + public void UpdateExtraParam(uint primLocalID, ushort type, bool inUse, byte[] data) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateExtraParam(primLocalID, type, inUse, data); + break; + } + } + } + } + + /// + /// + /// + /// + /// + public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock) + { + bool hasPrim = false; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); + if (hasPrim != false) + { + ((SceneObjectGroup)ent).UpdateShape(shapeBlock, primLocalID); + break; + } + } + } + } + + /// + /// + /// + /// + /// + public void LinkObjects(uint parentPrim, List childPrims) + { + SceneObjectGroup parenPrim = null; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + if (((SceneObjectGroup)ent).LocalId == parentPrim) + { + parenPrim = (SceneObjectGroup)ent; + break; + } + } + } + + List children = new List(); + if (parenPrim != null) + { + for (int i = 0; i < childPrims.Count; i++) + { + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + if (((SceneObjectGroup)ent).LocalId == childPrims[i]) + { + children.Add((SceneObjectGroup)ent); + } + } + } + } + } + + foreach (SceneObjectGroup sceneObj in children) + { + parenPrim.LinkToGroup(sceneObj); + } + } + + /// + /// + /// + /// + /// + /// + public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags) + { + SceneObjectGroup originPrim = null; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObjectGroup) + { + if (((SceneObjectGroup)ent).LocalId == originalPrim) + { + originPrim = (SceneObjectGroup)ent; + break; + } + } + } + + if (originPrim != null) + { + SceneObjectGroup copy = originPrim.Copy(); + copy.AbsolutePosition = copy.AbsolutePosition + offset; + Entities.Add(copy.UUID, copy); + + copy.ScheduleGroupForFullUpdate(); + + } + else + { + MainLog.Instance.Warn("client", "Attempted to duplicate nonexistant prim"); + } + } + + + #endregion + } +} diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 2ade989..e67d413 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs @@ -1,212 +1,212 @@ -using System; -using System.Collections.Generic; -using System.Net; -using System.Text; -using libsecondlife; -using OpenSim.Framework; -using OpenSim.Framework.Console; -using OpenSim.Framework.Communications; - - -namespace OpenSim.Region.Environment.Scenes -{ - public class SceneCommunicationService //one instance per region - { - protected CommunicationsManager m_commsProvider; - protected RegionInfo m_regionInfo; - - protected RegionCommsListener regionCommsHost; - - public event AgentCrossing OnAvatarCrossingIntoRegion; - public event ExpectUserDelegate OnExpectUser; - - - public SceneCommunicationService(CommunicationsManager commsMan) - { - m_commsProvider = commsMan; - } - - public void RegisterRegion(RegionInfo regionInfos) - { - m_regionInfo = regionInfos; - regionCommsHost = m_commsProvider.GridService.RegisterRegion(m_regionInfo); - if (regionCommsHost != null) - { - regionCommsHost.OnExpectUser += NewUserConnection; - regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing; - } - } - - public void Close() - { - regionCommsHost.OnExpectUser -= NewUserConnection; - regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing; - //regionCommsHost.RemoveRegion(m_regionInfo); //TODO add to method to commsManager - regionCommsHost = null; - } - - #region CommsManager Event handlers - /// - /// - /// - /// - /// - public void NewUserConnection(ulong regionHandle, AgentCircuitData agent) - { - if (OnExpectUser != null) - { - OnExpectUser(regionHandle, agent); - } - } - - public void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) - { - if (OnAvatarCrossingIntoRegion != null) - { - OnAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying); - } - } - #endregion - - #region Inform Client of Neighbours - private delegate void InformClientOfNeighbourDelegate( - ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint); - - private void InformClientOfNeighbourCompleted(IAsyncResult iar) - { - InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate)iar.AsyncState; - icon.EndInvoke(iar); - } - - /// - /// Async compnent for informing client of which neighbours exists - /// - /// - /// This needs to run asynchronesously, as a network timeout may block the thread for a long while - /// - /// - /// - /// - /// - private void InformClientOfNeighbourAsync(ScenePresence avatar, AgentCircuitData a, ulong regionHandle, - IPEndPoint endPoint) - { - MainLog.Instance.Notice("INTERGRID", "Starting to inform client about neighbours"); - bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, a); - - if (regionAccepted) - { - avatar.ControllingClient.InformClientOfNeighbour(regionHandle, endPoint); - avatar.AddNeighbourRegion(regionHandle); - MainLog.Instance.Notice("INTERGRID", "Completed inform client about neighbours"); - } - } - - /// - /// - /// - public void InformClientOfNeighbours(ScenePresence avatar) - { - List neighbours = - m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY); - if (neighbours != null) - { - for (int i = 0; i < neighbours.Count; i++) - { - AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo(); - agent.BaseFolder = LLUUID.Zero; - agent.InventoryFolder = LLUUID.Zero; - agent.startpos = new LLVector3(128, 128, 70); - agent.child = true; - - InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; - d.BeginInvoke(avatar, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint, - InformClientOfNeighbourCompleted, - d); - } - } - } - #endregion - - /// - /// - /// - /// - /// - public virtual RegionInfo RequestNeighbouringRegionInfo(ulong regionHandle) - { - return m_commsProvider.GridService.RequestNeighbourInfo(regionHandle); - } - - /// - /// - /// - /// - /// - /// - /// - public virtual void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY) - { - List mapBlocks; - mapBlocks = m_commsProvider.GridService.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); - remoteClient.SendMapBlock(mapBlocks); - } - - /// - /// - /// - /// - /// - /// - /// - /// - public virtual void RequestTeleportLocation(ScenePresence avatar, ulong regionHandle, LLVector3 position, - LLVector3 lookAt, uint flags) - { - if (regionHandle == m_regionInfo.RegionHandle) - { - - avatar.ControllingClient.SendTeleportLocationStart(); - avatar.ControllingClient.SendLocalTeleport(position, lookAt, flags); - avatar.Teleport(position); - - } - else - { - RegionInfo reg = RequestNeighbouringRegionInfo(regionHandle); - if (reg != null) - { - avatar.ControllingClient.SendTeleportLocationStart(); - AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo(); - agent.BaseFolder = LLUUID.Zero; - agent.InventoryFolder = LLUUID.Zero; - agent.startpos = position; - agent.child = true; - avatar.Close(); - m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); - m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, position, false); - AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); - string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); - avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), capsPath); - avatar.MakeChildAgent(); - } - } - } - - /// - /// - /// - /// - /// - /// - public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) - { - return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); - } - - public void CloseAgentConnection(ScenePresence presence) - { - throw new Exception("The method or operation is not implemented."); - } - } -} +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; +using libsecondlife; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Framework.Communications; + + +namespace OpenSim.Region.Environment.Scenes +{ + public class SceneCommunicationService //one instance per region + { + protected CommunicationsManager m_commsProvider; + protected RegionInfo m_regionInfo; + + protected RegionCommsListener regionCommsHost; + + public event AgentCrossing OnAvatarCrossingIntoRegion; + public event ExpectUserDelegate OnExpectUser; + + + public SceneCommunicationService(CommunicationsManager commsMan) + { + m_commsProvider = commsMan; + } + + public void RegisterRegion(RegionInfo regionInfos) + { + m_regionInfo = regionInfos; + regionCommsHost = m_commsProvider.GridService.RegisterRegion(m_regionInfo); + if (regionCommsHost != null) + { + regionCommsHost.OnExpectUser += NewUserConnection; + regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing; + } + } + + public void Close() + { + regionCommsHost.OnExpectUser -= NewUserConnection; + regionCommsHost.OnAvatarCrossingIntoRegion -= AgentCrossing; + //regionCommsHost.RemoveRegion(m_regionInfo); //TODO add to method to commsManager + regionCommsHost = null; + } + + #region CommsManager Event handlers + /// + /// + /// + /// + /// + public void NewUserConnection(ulong regionHandle, AgentCircuitData agent) + { + if (OnExpectUser != null) + { + OnExpectUser(regionHandle, agent); + } + } + + public void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) + { + if (OnAvatarCrossingIntoRegion != null) + { + OnAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying); + } + } + #endregion + + #region Inform Client of Neighbours + private delegate void InformClientOfNeighbourDelegate( + ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint); + + private void InformClientOfNeighbourCompleted(IAsyncResult iar) + { + InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate)iar.AsyncState; + icon.EndInvoke(iar); + } + + /// + /// Async compnent for informing client of which neighbours exists + /// + /// + /// This needs to run asynchronesously, as a network timeout may block the thread for a long while + /// + /// + /// + /// + /// + private void InformClientOfNeighbourAsync(ScenePresence avatar, AgentCircuitData a, ulong regionHandle, + IPEndPoint endPoint) + { + MainLog.Instance.Notice("INTERGRID", "Starting to inform client about neighbours"); + bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, a); + + if (regionAccepted) + { + avatar.ControllingClient.InformClientOfNeighbour(regionHandle, endPoint); + avatar.AddNeighbourRegion(regionHandle); + MainLog.Instance.Notice("INTERGRID", "Completed inform client about neighbours"); + } + } + + /// + /// + /// + public void InformClientOfNeighbours(ScenePresence avatar) + { + List neighbours = + m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY); + if (neighbours != null) + { + for (int i = 0; i < neighbours.Count; i++) + { + AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo(); + agent.BaseFolder = LLUUID.Zero; + agent.InventoryFolder = LLUUID.Zero; + agent.startpos = new LLVector3(128, 128, 70); + agent.child = true; + + InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; + d.BeginInvoke(avatar, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint, + InformClientOfNeighbourCompleted, + d); + } + } + } + #endregion + + /// + /// + /// + /// + /// + public virtual RegionInfo RequestNeighbouringRegionInfo(ulong regionHandle) + { + return m_commsProvider.GridService.RequestNeighbourInfo(regionHandle); + } + + /// + /// + /// + /// + /// + /// + /// + public virtual void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY) + { + List mapBlocks; + mapBlocks = m_commsProvider.GridService.RequestNeighbourMapBlocks(minX, minY, maxX, maxY); + remoteClient.SendMapBlock(mapBlocks); + } + + /// + /// + /// + /// + /// + /// + /// + /// + public virtual void RequestTeleportLocation(ScenePresence avatar, ulong regionHandle, LLVector3 position, + LLVector3 lookAt, uint flags) + { + if (regionHandle == m_regionInfo.RegionHandle) + { + + avatar.ControllingClient.SendTeleportLocationStart(); + avatar.ControllingClient.SendLocalTeleport(position, lookAt, flags); + avatar.Teleport(position); + + } + else + { + RegionInfo reg = RequestNeighbouringRegionInfo(regionHandle); + if (reg != null) + { + avatar.ControllingClient.SendTeleportLocationStart(); + AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo(); + agent.BaseFolder = LLUUID.Zero; + agent.InventoryFolder = LLUUID.Zero; + agent.startpos = position; + agent.child = true; + avatar.Close(); + m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); + m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, position, false); + AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); + string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); + avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), capsPath); + avatar.MakeChildAgent(); + } + } + } + + /// + /// + /// + /// + /// + /// + public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) + { + return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); + } + + public void CloseAgentConnection(ScenePresence presence) + { + throw new Exception("The method or operation is not implemented."); + } + } +} -- cgit v1.1