From d3766d0aef46c53b9e92afa77ffaa33817c7a04a Mon Sep 17 00:00:00 2001 From: MW Date: Wed, 4 Apr 2007 18:26:33 +0000 Subject: Deleted OpenSim.Config/SimConfigDb4o, as it hasn't been used for a while now. Split World class into two partial classes --- OpenSim.Config/SimConfigDb4o/AssemblyInfo.cs | 31 --- OpenSim.Config/SimConfigDb4o/DbSimConfig.cs | 136 ------------- .../OpenSim.Config.SimConfigDb4o.csproj | 111 ---------- .../OpenSim.Config.SimConfigDb4o.dll.build | 46 ----- ...penSim.Framework.Config.SimConfigDb4o.dll.build | 47 ----- OpenSim.RegionServer/OpenSim.RegionServer.csproj | 3 + .../OpenSim.RegionServer.dll.build | 1 + OpenSim.RegionServer/SimClient.cs | 7 +- OpenSim.RegionServer/world/World.cs | 224 +++------------------ OpenSim.RegionServer/world/WorldPacketHandlers.cs | 200 ++++++++++++++++++ OpenSim.build | 3 - OpenSim.sln | 6 - prebuild.xml | 26 --- 13 files changed, 237 insertions(+), 604 deletions(-) delete mode 100644 OpenSim.Config/SimConfigDb4o/AssemblyInfo.cs delete mode 100644 OpenSim.Config/SimConfigDb4o/DbSimConfig.cs delete mode 100644 OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.csproj delete mode 100644 OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.dll.build delete mode 100644 OpenSim.Config/SimConfigDb4o/OpenSim.Framework.Config.SimConfigDb4o.dll.build create mode 100644 OpenSim.RegionServer/world/WorldPacketHandlers.cs diff --git a/OpenSim.Config/SimConfigDb4o/AssemblyInfo.cs b/OpenSim.Config/SimConfigDb4o/AssemblyInfo.cs deleted file mode 100644 index 96c3e73..0000000 --- a/OpenSim.Config/SimConfigDb4o/AssemblyInfo.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly: AssemblyTitle("SimConfig")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SimConfig")] -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// This sets the default COM visibility of types in the assembly to invisible. -// If you need to expose a type to COM, use [ComVisible(true)] on that type. -[assembly: ComVisible(false)] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly: AssemblyVersion("1.0.*")] diff --git a/OpenSim.Config/SimConfigDb4o/DbSimConfig.cs b/OpenSim.Config/SimConfigDb4o/DbSimConfig.cs deleted file mode 100644 index 9b51b45..0000000 --- a/OpenSim.Config/SimConfigDb4o/DbSimConfig.cs +++ /dev/null @@ -1,136 +0,0 @@ -/* -* Copyright (c) OpenSim project, http://sim.opensecondlife.org/ -* -* 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 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 ``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 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 OpenSim; -using OpenSim.Framework.Utilities; -using OpenSim.Framework.Interfaces; -//using OpenSim.world; -using Db4objects.Db4o; - -namespace OpenSim.Config.SimConfigDb4o -{ - public class Db40ConfigPlugin: ISimConfig - { - public SimConfig GetConfigObject() - { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Loading Db40Config dll"); - return ( new DbSimConfig()); - } - } - - public class DbSimConfig : SimConfig - { - private bool isSandbox; - private IObjectContainer db; - - public void LoadDefaults() { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings"); - - this.RegionName=OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Name [OpenSim test]: ","OpenSim test"); - this.RegionLocX=(uint)Convert.ToInt32(OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Grid Location X [997]: ","997")); - this.RegionLocY=(uint)Convert.ToInt32(OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Grid Location Y [996]: ","996")); - this.IPListenPort=Convert.ToInt32(OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("UDP port for client connections [9000]: ","9000")); - this.IPListenAddr=OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("IP Address to listen on for client connections [127.0.0.1]: ","127.0.0.1"); - - if(!isSandbox) - { - this.AssetURL=OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Asset server URL: "); - this.AssetSendKey=OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Asset server key: "); - this.GridURL=OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Grid server URL: "); - this.GridSendKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to send to grid server: "); - this.GridRecvKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to expect from grid server: "); - this.UserURL = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("User server URL: "); - this.UserSendKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to send to user server: "); - this.UserRecvKey = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Key to expect from user server: "); - } - this.RegionHandle = Util.UIntsToLong((RegionLocX*256), (RegionLocY*256)); - } - - public override void InitConfig(bool sandboxMode) { - this.isSandbox = sandboxMode; - try { - db = Db4oFactory.OpenFile("opensim.yap"); - IObjectSet result = db.Get(typeof(DbSimConfig)); - if(result.Count==1) { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:InitConfig() - Found a SimConfig object in the local database, loading"); - foreach (DbSimConfig cfg in result) { - this.RegionName = cfg.RegionName; - this.RegionLocX = cfg.RegionLocX; - this.RegionLocY = cfg.RegionLocY; - this.RegionHandle = Util.UIntsToLong((RegionLocX*256), (RegionLocY*256)); - this.IPListenPort = cfg.IPListenPort; - this.IPListenAddr = cfg.IPListenAddr; - this.AssetURL = cfg.AssetURL; - this.AssetSendKey = cfg.AssetSendKey; - this.GridURL = cfg.GridURL; - this.GridSendKey = cfg.GridSendKey; - } - } else { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults"); - LoadDefaults(); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Writing out default settings to local database"); - db.Set(this); - db.Commit(); - } - } catch(Exception e) { - db.Close(); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:InitConfig() - Exception occured"); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine(e.ToString()); - } - - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Sim settings loaded:"); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Name: " + this.RegionName); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Region Location: [" + this.RegionLocX.ToString() + "," + this.RegionLocY + "]"); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Region Handle: " + this.RegionHandle.ToString()); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Listening on IP: " + this.IPListenAddr + ":" + this.IPListenPort); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Sandbox Mode? " + isSandbox.ToString()); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Asset URL: " + this.AssetURL); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Asset key: " + this.AssetSendKey); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Grid URL: " + this.GridURL); - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Grid key: " + this.GridSendKey); - } - - public override void LoadFromGrid() { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Config.cs:LoadFromGrid() - dummy function, DOING ABSOLUTELY NOTHING AT ALL!!!"); - // TODO: Make this crap work - /* WebRequest GridLogin = WebRequest.Create(this.GridURL + "regions/" + this.RegionHandle.ToString() + "/login"); - WebResponse GridResponse = GridLogin.GetResponse(); - byte[] idata = new byte[(int)GridResponse.ContentLength]; - BinaryReader br = new BinaryReader(GridResponse.GetResponseStream()); - - br.Close(); - GridResponse.Close(); - */ - } - - public void Shutdown() { - db.Close(); - } - } - -} diff --git a/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.csproj b/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.csproj deleted file mode 100644 index 5e0577e..0000000 --- a/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.csproj +++ /dev/null @@ -1,111 +0,0 @@ - - - Local - 8.0.50727 - 2.0 - {83C87BE6-0000-0000-0000-000000000000} - Debug - AnyCPU - - - - OpenSim.Config.SimConfigDb4o - JScript - Grid - IE50 - false - Library - - OpenSim.Config.SimConfigDb4o - - - - - - False - 285212672 - False - - - TRACE;DEBUG - - True - 4096 - False - ..\..\bin\ - False - False - False - 4 - - - - False - 285212672 - False - - - TRACE - - False - 4096 - True - ..\..\bin\ - False - False - False - 4 - - - - - System.dll - False - - - ..\..\bin\System.Data.dll - False - - - System.Xml.dll - False - - - ..\..\bin\libsecondlife.dll - False - - - ..\..\bin\Db4objects.Db4o.dll - False - - - - - OpenSim.Framework - {8ACA2445-0000-0000-0000-000000000000} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - False - - - OpenSim.Framework.Console - {A7CD0630-0000-0000-0000-000000000000} - {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - False - - - - - Code - - - Code - - - - - - - - - - diff --git a/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.dll.build b/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.dll.build deleted file mode 100644 index 3ec42a8..0000000 --- a/OpenSim.Config/SimConfigDb4o/OpenSim.Config.SimConfigDb4o.dll.build +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OpenSim.Config/SimConfigDb4o/OpenSim.Framework.Config.SimConfigDb4o.dll.build b/OpenSim.Config/SimConfigDb4o/OpenSim.Framework.Config.SimConfigDb4o.dll.build deleted file mode 100644 index 9e9d767..0000000 --- a/OpenSim.Config/SimConfigDb4o/OpenSim.Framework.Config.SimConfigDb4o.dll.build +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.csproj b/OpenSim.RegionServer/OpenSim.RegionServer.csproj index cee91f8..73f523a 100644 --- a/OpenSim.RegionServer/OpenSim.RegionServer.csproj +++ b/OpenSim.RegionServer/OpenSim.RegionServer.csproj @@ -190,6 +190,9 @@ Code + + Code + Code diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build index c0289e7..7488a3e 100644 --- a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build +++ b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build @@ -37,6 +37,7 @@ + diff --git a/OpenSim.RegionServer/SimClient.cs b/OpenSim.RegionServer/SimClient.cs index 1564238..770573a 100644 --- a/OpenSim.RegionServer/SimClient.cs +++ b/OpenSim.RegionServer/SimClient.cs @@ -813,12 +813,13 @@ namespace OpenSim } m_gridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode); - lock (m_world.Entities) + /*lock (m_world.Entities) { m_world.Entities.Remove(this.AgentID); - } + }*/ + m_world.RemoveViewerAgent(this); //need to do other cleaning up here too - m_clientThreads.Remove(this.CircuitCode); //this.userEP); + m_clientThreads.Remove(this.CircuitCode); m_application.RemoveClientCircuit(this.CircuitCode); this.ClientThread.Abort(); return true; diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index 4661a90..5e4a3d3 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs @@ -17,7 +17,7 @@ using OpenSim.RegionServer.world.scripting.Scripts; namespace OpenSim.world { - public class World : ILocalStorageReceiver + public partial class World : ILocalStorageReceiver { public object LockPhysicsEngine = new object(); public Dictionary Entities; @@ -86,10 +86,10 @@ namespace OpenSim.world if (this.m_scripts.TryGetValue(substring, out scriptFactory)) { - //Console.WriteLine("added script"); + //Console.WriteLine("added script"); this.AddScript(entity, scriptFactory()); } - + } public InventoryCache InventoryCache @@ -208,7 +208,6 @@ namespace OpenSim.world public void RegenerateTerrain(float[] newMap) { - this.LandMap = newMap; lock (this.LockPhysicsEngine) { @@ -309,8 +308,8 @@ namespace OpenSim.world Packet layerpack = TerrainManager.CreateLandPacket(LandMap, patches); RemoteClient.OutPacket(layerpack); - } + public void GetInitialPrims(SimClient RemoteClient) { foreach (libsecondlife.LLUUID UUID in Entities.Keys) @@ -323,19 +322,38 @@ namespace OpenSim.world } } - public void AddViewerAgent(SimClient AgentClient) + public void AddViewerAgent(SimClient agentClient) { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); - Avatar NewAvatar = new Avatar(AgentClient, this, m_regionName, m_clientThreads, m_regionHandle); + Avatar newAvatar = new Avatar(agentClient, this, m_regionName, m_clientThreads, m_regionHandle); OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Adding new avatar to world"); OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Starting RegionHandshake "); - NewAvatar.SendRegionHandshake(this); - PhysicsVector pVec = new PhysicsVector(NewAvatar.Pos.X, NewAvatar.Pos.Y, NewAvatar.Pos.Z); + newAvatar.SendRegionHandshake(this); + PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); lock (this.LockPhysicsEngine) { - NewAvatar.PhysActor = this.phyScene.AddAvatar(pVec); + newAvatar.PhysActor = this.phyScene.AddAvatar(pVec); + } + lock (Entities) + { + this.Entities.Add(agentClient.AgentID, newAvatar); + } + lock (Avatars) + { + this.Avatars.Add(agentClient.AgentID, newAvatar); + } + } + + public void RemoveViewerAgent(SimClient agentClient) + { + lock (Entities) + { + Entities.Remove(agentClient.AgentID); + } + lock (Avatars) + { + Avatars.Remove(agentClient.AgentID); } - this.Entities.Add(AgentClient.AgentID, NewAvatar); } public void AddNewPrim(ObjectAddPacket addPacket, SimClient AgentClient) @@ -357,94 +375,6 @@ namespace OpenSim.world this._primCount++; } - public bool DeRezObject(SimClient simClient, Packet packet) - { - DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; - // Console.WriteLine(DeRezPacket); - //Needs to delete object from physics at a later date - if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) - { - libsecondlife.LLUUID[] DeRezEnts; - DeRezEnts = new libsecondlife.LLUUID[DeRezPacket.ObjectData.Length]; - int i = 0; - foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) - { - - //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); - foreach (Entity ent in this.Entities.Values) - { - if (ent.localid == Data.ObjectLocalID) - { - DeRezEnts[i++] = ent.uuid; - this.localStorage.RemovePrim(ent.uuid); - KillObjectPacket kill = new KillObjectPacket(); - kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; - kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); - kill.ObjectData[0].ID = ent.localid; - foreach (SimClient client in m_clientThreads.Values) - { - client.OutPacket(kill); - } - //Uncommenting this means an old UUID will be re-used, thus crashing the asset server - //Uncomment when prim/object UUIDs are random or such - //2007-03-22 - Randomskk - //this._primCount--; - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Deleted UUID " + ent.uuid); - } - } - } - foreach (libsecondlife.LLUUID uuid in DeRezEnts) - { - lock (Entities) - { - Entities.Remove(uuid); - } - } - } - else - { - foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) - { - Entity selectedEnt = null; - //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); - foreach (Entity ent in this.Entities.Values) - { - if (ent.localid == Data.ObjectLocalID) - { - AssetBase primAsset = new AssetBase(); - primAsset.FullID = LLUUID.Random();//DeRezPacket.AgentBlock.TransactionID.Combine(LLUUID.Zero); //should be combining with securesessionid - primAsset.InvType = 6; - primAsset.Type = 6; - primAsset.Name = "Prim"; - primAsset.Description = ""; - primAsset.Data = ((Primitive)ent).GetByteArray(); - this._assetCache.AddAsset(primAsset); - this._inventoryCache.AddNewInventoryItem(simClient, DeRezPacket.AgentBlock.DestinationID, primAsset); - selectedEnt = ent; - break; - } - } - if (selectedEnt != null) - { - this.localStorage.RemovePrim(selectedEnt.uuid); - KillObjectPacket kill = new KillObjectPacket(); - kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; - kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); - kill.ObjectData[0].ID = selectedEnt.localid; - foreach (SimClient client in m_clientThreads.Values) - { - client.OutPacket(kill); - } - lock (Entities) - { - Entities.Remove(selectedEnt.uuid); - } - } - } - } - return true; - } - public bool Backup() { @@ -456,100 +386,6 @@ namespace OpenSim.world return true; } - #region Packet Handlers - public bool ModifyTerrain(SimClient simClient, Packet packet) - { - ModifyLandPacket modify = (ModifyLandPacket)packet; - - switch (modify.ModifyBlock.Action) - { - case 1: - // raise terrain - if (modify.ParcelData.Length > 0) - { - int mody = (int)modify.ParcelData[0].North; - int modx = (int)modify.ParcelData[0].West; - lock (LandMap) - { - LandMap[(mody * 256) + modx - 1] += 0.05f; - LandMap[(mody * 256) + modx] += 0.1f; - LandMap[(mody * 256) + modx + 1] += 0.05f; - LandMap[((mody + 1) * 256) + modx] += 0.05f; - LandMap[((mody - 1) * 256) + modx] += 0.05f; - } - RegenerateTerrain(true, modx, mody); - } - break; - case 2: - //lower terrain - if (modify.ParcelData.Length > 0) - { - int mody = (int)modify.ParcelData[0].North; - int modx = (int)modify.ParcelData[0].West; - lock (LandMap) - { - LandMap[(mody * 256) + modx - 1] -= 0.05f; - LandMap[(mody * 256) + modx] -= 0.1f; - LandMap[(mody * 256) + modx + 1] -= 0.05f; - LandMap[((mody + 1) * 256) + modx] -= 0.05f; - LandMap[((mody - 1) * 256) + modx] -= 0.05f; - } - RegenerateTerrain(true, modx, mody); - } - break; - } - return true; - } - - public bool SimChat(SimClient simClient, Packet packet) - { - System.Text.Encoding enc = System.Text.Encoding.ASCII; - ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)packet; - if (Helpers.FieldToString(inchatpack.ChatData.Message) == "") - { - //empty message so don't bother with it - return true; - } - - libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket(); - reply.ChatData.Audible = 1; - reply.ChatData.Message = inchatpack.ChatData.Message; - reply.ChatData.ChatType = 1; - reply.ChatData.SourceType = 1; - reply.ChatData.Position = simClient.ClientAvatar.Pos; - reply.ChatData.FromName = enc.GetBytes(simClient.ClientAvatar.firstname + " " + simClient.ClientAvatar.lastname + "\0"); - reply.ChatData.OwnerID = simClient.AgentID; - reply.ChatData.SourceID = simClient.AgentID; - foreach (SimClient client in m_clientThreads.Values) - { - client.OutPacket(reply); - } - return true; - } - - public bool RezObject(SimClient simClient, Packet packet) - { - RezObjectPacket rezPacket = (RezObjectPacket)packet; - AgentInventory inven = this._inventoryCache.GetAgentsInventory(simClient.AgentID); - if (inven != null) - { - if (inven.InventoryItems.ContainsKey(rezPacket.InventoryData.ItemID)) - { - AssetBase asset = this._assetCache.GetAsset(inven.InventoryItems[rezPacket.InventoryData.ItemID].AssetID); - if (asset != null) - { - PrimData primd = new PrimData(asset.Data); - Primitive nPrim = new Primitive(m_clientThreads, m_regionHandle, this); - nPrim.CreateFromStorage(primd, rezPacket.RezData.RayEnd, this._primCount, true); - this.Entities.Add(nPrim.uuid, nPrim); - this._primCount++; - this._inventoryCache.DeleteInventoryItem(simClient, rezPacket.InventoryData.ItemID); - } - } - } - return true; - } - public void SetDefaultScripts() { this.m_scripts.Add("FollowRandomAvatar", delegate() @@ -558,7 +394,5 @@ namespace OpenSim.world }); } - - #endregion } } diff --git a/OpenSim.RegionServer/world/WorldPacketHandlers.cs b/OpenSim.RegionServer/world/WorldPacketHandlers.cs new file mode 100644 index 0000000..a155ffe --- /dev/null +++ b/OpenSim.RegionServer/world/WorldPacketHandlers.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Text; +using libsecondlife; +using libsecondlife.Packets; +using OpenSim.Physics.Manager; +using OpenSim.Framework.Interfaces; +using OpenSim.Framework.Assets; +using OpenSim.Framework.Terrain; +using OpenSim.Framework.Inventory; +using OpenSim.Assets; + +namespace OpenSim.world +{ + partial class World + { + public bool ModifyTerrain(SimClient simClient, Packet packet) + { + ModifyLandPacket modify = (ModifyLandPacket)packet; + + switch (modify.ModifyBlock.Action) + { + case 1: + // raise terrain + if (modify.ParcelData.Length > 0) + { + int mody = (int)modify.ParcelData[0].North; + int modx = (int)modify.ParcelData[0].West; + lock (LandMap) + { + LandMap[(mody * 256) + modx - 1] += 0.05f; + LandMap[(mody * 256) + modx] += 0.1f; + LandMap[(mody * 256) + modx + 1] += 0.05f; + LandMap[((mody + 1) * 256) + modx] += 0.05f; + LandMap[((mody - 1) * 256) + modx] += 0.05f; + } + RegenerateTerrain(true, modx, mody); + } + break; + case 2: + //lower terrain + if (modify.ParcelData.Length > 0) + { + int mody = (int)modify.ParcelData[0].North; + int modx = (int)modify.ParcelData[0].West; + lock (LandMap) + { + LandMap[(mody * 256) + modx - 1] -= 0.05f; + LandMap[(mody * 256) + modx] -= 0.1f; + LandMap[(mody * 256) + modx + 1] -= 0.05f; + LandMap[((mody + 1) * 256) + modx] -= 0.05f; + LandMap[((mody - 1) * 256) + modx] -= 0.05f; + } + RegenerateTerrain(true, modx, mody); + } + break; + } + return true; + } + + public bool SimChat(SimClient simClient, Packet packet) + { + System.Text.Encoding enc = System.Text.Encoding.ASCII; + ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)packet; + if (Helpers.FieldToString(inchatpack.ChatData.Message) == "") + { + //empty message so don't bother with it + return true; + } + + libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket(); + reply.ChatData.Audible = 1; + reply.ChatData.Message = inchatpack.ChatData.Message; + reply.ChatData.ChatType = 1; + reply.ChatData.SourceType = 1; + reply.ChatData.Position = simClient.ClientAvatar.Pos; + reply.ChatData.FromName = enc.GetBytes(simClient.ClientAvatar.firstname + " " + simClient.ClientAvatar.lastname + "\0"); + reply.ChatData.OwnerID = simClient.AgentID; + reply.ChatData.SourceID = simClient.AgentID; + foreach (SimClient client in m_clientThreads.Values) + { + client.OutPacket(reply); + } + return true; + } + + public bool RezObject(SimClient simClient, Packet packet) + { + RezObjectPacket rezPacket = (RezObjectPacket)packet; + AgentInventory inven = this._inventoryCache.GetAgentsInventory(simClient.AgentID); + if (inven != null) + { + if (inven.InventoryItems.ContainsKey(rezPacket.InventoryData.ItemID)) + { + AssetBase asset = this._assetCache.GetAsset(inven.InventoryItems[rezPacket.InventoryData.ItemID].AssetID); + if (asset != null) + { + PrimData primd = new PrimData(asset.Data); + Primitive nPrim = new Primitive(m_clientThreads, m_regionHandle, this); + nPrim.CreateFromStorage(primd, rezPacket.RezData.RayEnd, this._primCount, true); + this.Entities.Add(nPrim.uuid, nPrim); + this._primCount++; + this._inventoryCache.DeleteInventoryItem(simClient, rezPacket.InventoryData.ItemID); + } + } + } + return true; + } + + public bool DeRezObject(SimClient simClient, Packet packet) + { + DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; + + //Needs to delete object from physics at a later date + if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) + { + //currently following code not used (or don't know of any case of destination being zero + libsecondlife.LLUUID[] DeRezEnts; + DeRezEnts = new libsecondlife.LLUUID[DeRezPacket.ObjectData.Length]; + int i = 0; + foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) + { + + //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); + foreach (Entity ent in this.Entities.Values) + { + if (ent.localid == Data.ObjectLocalID) + { + DeRezEnts[i++] = ent.uuid; + this.localStorage.RemovePrim(ent.uuid); + KillObjectPacket kill = new KillObjectPacket(); + kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; + kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); + kill.ObjectData[0].ID = ent.localid; + foreach (SimClient client in m_clientThreads.Values) + { + client.OutPacket(kill); + } + //Uncommenting this means an old UUID will be re-used, thus crashing the asset server + //Uncomment when prim/object UUIDs are random or such + //2007-03-22 - Randomskk + //this._primCount--; + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Deleted UUID " + ent.uuid); + } + } + } + foreach (libsecondlife.LLUUID uuid in DeRezEnts) + { + lock (Entities) + { + Entities.Remove(uuid); + } + } + } + else + { + foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) + { + Entity selectedEnt = null; + //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); + foreach (Entity ent in this.Entities.Values) + { + if (ent.localid == Data.ObjectLocalID) + { + AssetBase primAsset = new AssetBase(); + primAsset.FullID = LLUUID.Random();//DeRezPacket.AgentBlock.TransactionID.Combine(LLUUID.Zero); //should be combining with securesessionid + primAsset.InvType = 6; + primAsset.Type = 6; + primAsset.Name = "Prim"; + primAsset.Description = ""; + primAsset.Data = ((Primitive)ent).GetByteArray(); + this._assetCache.AddAsset(primAsset); + this._inventoryCache.AddNewInventoryItem(simClient, DeRezPacket.AgentBlock.DestinationID, primAsset); + selectedEnt = ent; + break; + } + } + if (selectedEnt != null) + { + this.localStorage.RemovePrim(selectedEnt.uuid); + KillObjectPacket kill = new KillObjectPacket(); + kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; + kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); + kill.ObjectData[0].ID = selectedEnt.localid; + foreach (SimClient client in m_clientThreads.Values) + { + client.OutPacket(kill); + } + lock (Entities) + { + Entities.Remove(selectedEnt.uuid); + } + } + } + } + return true; + } + + } +} diff --git a/OpenSim.build b/OpenSim.build index 069b031..4af9389 100644 --- a/OpenSim.build +++ b/OpenSim.build @@ -52,7 +52,6 @@ - @@ -73,7 +72,6 @@ - @@ -101,7 +99,6 @@ - diff --git a/OpenSim.sln b/OpenSim.sln index 01a2df2..300412e 100644 --- a/OpenSim.sln +++ b/OpenSim.sln @@ -12,8 +12,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.Manager", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGridServices.UserServer", "OpenGridServices.UserServer\OpenGridServices.UserServer.csproj", "{66591469-0000-0000-0000-000000000000}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Config.SimConfigDb4o", "OpenSim.Config\SimConfigDb4o\OpenSim.Config.SimConfigDb4o.csproj", "{83C87BE6-0000-0000-0000-000000000000}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Physics.BasicPhysicsPlugin", "OpenSim.Physics\BasicPhysicsPlugin\OpenSim.Physics.BasicPhysicsPlugin.csproj", "{4F874463-0000-0000-0000-000000000000}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenGrid.Config.GridConfigDb4o", "OpenGrid.Config\GridConfigDb4o\OpenGrid.Config.GridConfigDb4o.csproj", "{B0027747-0000-0000-0000-000000000000}" @@ -66,10 +64,6 @@ Global {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU - {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83C87BE6-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83C87BE6-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/prebuild.xml b/prebuild.xml index 54acc4b..4230a9a 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -177,32 +177,6 @@ - - - - - ../../bin/ - - - - - ../../bin/ - - - - ../../bin/ - - - - - - - - - - - - -- cgit v1.1