From f42d1fc825b7b9d22ae05836992531d9abd2a26d Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Tue, 27 Mar 2007 21:42:14 +0000 Subject: * revert the revert - begin the beguine --- OpenSim.RegionServer/AgentAssetUpload.cs | 17 ++-- OpenSim.RegionServer/CAPS/AdminWebFront.cs | 11 ++- OpenSim.RegionServer/CAPS/SimHttp.cs | 41 +++++---- OpenSim.RegionServer/OpenSim.RegionServer.csproj | 68 +++++++-------- .../OpenSim.RegionServer.dll.build | 7 +- OpenSim.RegionServer/OpenSimMain.cs | 8 +- OpenSim.RegionServer/SimClient.cs | 99 +++++++++++++--------- .../UserServer/LocalUserProfileManager.cs | 18 ++-- OpenSim.RegionServer/UserServer/LoginServer.cs | 20 +++-- OpenSim.RegionServer/world/Avatar.cs | 39 +++++---- OpenSim.RegionServer/world/Primitive.cs | 27 +++--- OpenSim.RegionServer/world/World.cs | 31 ++++--- 12 files changed, 226 insertions(+), 160 deletions(-) (limited to 'OpenSim.RegionServer') diff --git a/OpenSim.RegionServer/AgentAssetUpload.cs b/OpenSim.RegionServer/AgentAssetUpload.cs index a482e80..9f85598 100644 --- a/OpenSim.RegionServer/AgentAssetUpload.cs +++ b/OpenSim.RegionServer/AgentAssetUpload.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using OpenSim.Assets; using OpenSim.Framework.Assets; using OpenSim.Framework.Utilities; using libsecondlife; @@ -12,10 +13,14 @@ namespace OpenSim { private Dictionary<LLUUID, AssetTransaction> transactions = new Dictionary<LLUUID, AssetTransaction>(); private SimClient ourClient; + private AssetCache m_assetCache; + private InventoryCache m_inventoryCache; - public AgentAssetUpload(SimClient client) + public AgentAssetUpload(SimClient client, AssetCache assetCache, InventoryCache inventoryCache) { this.ourClient = client; + m_assetCache = assetCache; + m_inventoryCache = inventoryCache; } public void AddUpload(LLUUID transactionID, AssetBase asset) @@ -148,8 +153,8 @@ namespace OpenSim //check if we should add it to inventory if (trans.AddToInventory) { - OpenSimRoot.Instance.AssetCache.AddAsset(trans.Asset); - OpenSimRoot.Instance.InventoryCache.AddNewInventoryItem(this.ourClient, trans.InventFolder, trans.Asset); + m_assetCache.AddAsset(trans.Asset); + m_inventoryCache.AddNewInventoryItem(this.ourClient, trans.InventFolder, trans.Asset); } @@ -176,7 +181,7 @@ namespace OpenSim AssetTransaction trans = this.transactions[transactionID]; if (trans.UploadComplete) { - OpenSimRoot.Instance.AssetCache.AddAsset(trans.Asset); + m_assetCache.AddAsset(trans.Asset); asset = trans.Asset; } } @@ -195,8 +200,8 @@ namespace OpenSim if (trans.UploadComplete) { //already complete so we can add it to the inventory - OpenSimRoot.Instance.AssetCache.AddAsset(trans.Asset); - Console.WriteLine( "ITem created is " +OpenSimRoot.Instance.InventoryCache.AddNewInventoryItem(this.ourClient, packet.InventoryBlock.FolderID, trans.Asset).ToStringHyphenated()); + m_assetCache.AddAsset(trans.Asset); + Console.WriteLine( "ITem created is " +m_inventoryCache.AddNewInventoryItem(this.ourClient, packet.InventoryBlock.FolderID, trans.Asset).ToStringHyphenated()); } else { diff --git a/OpenSim.RegionServer/CAPS/AdminWebFront.cs b/OpenSim.RegionServer/CAPS/AdminWebFront.cs index ea32589..03f8692 100644 --- a/OpenSim.RegionServer/CAPS/AdminWebFront.cs +++ b/OpenSim.RegionServer/CAPS/AdminWebFront.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; using System.IO; +using OpenSim.world; namespace OpenSim.CAPS { @@ -11,9 +12,11 @@ namespace OpenSim.CAPS private string NewAccountForm; private string LoginForm; private string passWord = "Admin"; + private World m_world; - public AdminWebFront(string password) + public AdminWebFront(string password, World world) { + m_world = world; passWord = password; LoadAdminPage(); } @@ -45,11 +48,11 @@ namespace OpenSim.CAPS { responseString = " <p> Listing connected Clients </p>"; OpenSim.world.Avatar TempAv; - foreach (libsecondlife.LLUUID UUID in OpenSimRoot.Instance.LocalWorld.Entities.Keys) + foreach (libsecondlife.LLUUID UUID in m_world.Entities.Keys) { - if (OpenSimRoot.Instance.LocalWorld.Entities[UUID].ToString() == "OpenSim.world.Avatar") + if (m_world.Entities[UUID].ToString() == "OpenSim.world.Avatar") { - TempAv = (OpenSim.world.Avatar)OpenSimRoot.Instance.LocalWorld.Entities[UUID]; + TempAv = (OpenSim.world.Avatar)m_world.Entities[UUID]; responseString += "<p>"; responseString += String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}", TempAv.firstname, TempAv.lastname, UUID, TempAv.ControllingClient.SessionID, TempAv.ControllingClient.CircuitCode, TempAv.ControllingClient.userEP.ToString()); responseString += "</p>"; diff --git a/OpenSim.RegionServer/CAPS/SimHttp.cs b/OpenSim.RegionServer/CAPS/SimHttp.cs index a1073f0..92bbc6f 100644 --- a/OpenSim.RegionServer/CAPS/SimHttp.cs +++ b/OpenSim.RegionServer/CAPS/SimHttp.cs @@ -39,22 +39,27 @@ using System.Collections.Generic; using libsecondlife; using OpenSim.Framework.Console; using OpenSim.Framework.Interfaces; +using OpenSim.Servers; namespace OpenSim.CAPS { // Dummy HTTP server, does nothing useful for now - public class SimCAPSHTTPServer + public class SimCAPSHTTPServer : BaseHttpServer { - public Thread HTTPD; - public HttpListener Listener; - private Dictionary<string, IRestHandler> restHandlers = new Dictionary<string, IRestHandler>(); + private Thread m_workerThread; + private HttpListener m_httpListener; + private Dictionary<string, IRestHandler> m_restHandlers = new Dictionary<string, IRestHandler>(); + private IGridServer m_gridServer; + private int m_port; - public SimCAPSHTTPServer() + public SimCAPSHTTPServer(IGridServer gridServer, int port) { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Starting up HTTP Server"); - HTTPD = new Thread(new ThreadStart(StartHTTP)); - HTTPD.Start(); + m_workerThread = new Thread(new ThreadStart(StartHTTP)); + m_workerThread.Start(); + m_gridServer = gridServer; + m_port = port; } public void StartHTTP() @@ -62,15 +67,15 @@ namespace OpenSim.CAPS try { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SimHttp.cs:StartHTTP() - Spawned main thread OK"); - Listener = new HttpListener(); + m_httpListener = new HttpListener(); - Listener.Prefixes.Add("http://+:" + OpenSimRoot.Instance.Cfg.IPListenPort + "/"); - Listener.Start(); + m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); + m_httpListener.Start(); HttpListenerContext context; while (true) { - context = Listener.GetContext(); + context = m_httpListener.GetContext(); ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context); } } @@ -82,9 +87,9 @@ namespace OpenSim.CAPS public bool AddRestHandler(string path, IRestHandler handler) { - if (!this.restHandlers.ContainsKey(path)) + if (!this.m_restHandlers.ContainsKey(path)) { - this.restHandlers.Add(path, handler); + this.m_restHandlers.Add(path, handler); return true; } @@ -108,12 +113,12 @@ namespace OpenSim.CAPS agent_data.lastname = (string)requestData["lastname"]; agent_data.AgentID = new LLUUID((string)requestData["agent_id"]); agent_data.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); - if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Remote") + if (m_gridServer.GetName() == "Remote") { - ((RemoteGridBase)OpenSimRoot.Instance.GridServers.GridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data); + + ((RemoteGridBase)m_gridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data); } return "<?xml version=\"1.0\"?><methodResponse><params /></methodResponse>"; - break; } } catch (Exception e) @@ -135,9 +140,9 @@ namespace OpenSim.CAPS //path[0] should be empty so we are interested in path[1] if (path.Length > 1) { - if ((path[1] != "") && (this.restHandlers.ContainsKey(path[1]))) + if ((path[1] != "") && (this.m_restHandlers.ContainsKey(path[1]))) { - responseString = this.restHandlers[path[1]].HandleREST(requestBody, requestURL, requestMethod); + responseString = this.m_restHandlers[path[1]].HandleREST(requestBody, requestURL, requestMethod); } } diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.csproj b/OpenSim.RegionServer/OpenSim.RegionServer.csproj index f376e04..1ce2837 100644 --- a/OpenSim.RegionServer/OpenSim.RegionServer.csproj +++ b/OpenSim.RegionServer/OpenSim.RegionServer.csproj @@ -1,13 +1,12 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <ProjectType>Local</ProjectType> <ProductVersion>8.0.50727</ProductVersion> <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{4171D545-81F5-4C64-AD29-6D7414C38181}</ProjectGuid> + <ProjectGuid>{ADD974E2-994C-4998-864E-4B54D8AD5F00}</ProjectGuid> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ApplicationIcon> - </ApplicationIcon> + <ApplicationIcon></ApplicationIcon> <AssemblyKeyContainerName> </AssemblyKeyContainerName> <AssemblyName>OpenSim.RegionServer</AssemblyName> @@ -16,11 +15,9 @@ <DefaultTargetSchema>IE50</DefaultTargetSchema> <DelaySign>false</DelaySign> <OutputType>Library</OutputType> - <AppDesignerFolder> - </AppDesignerFolder> + <AppDesignerFolder></AppDesignerFolder> <RootNamespace>OpenSim.RegionServer</RootNamespace> - <StartupObject> - </StartupObject> + <StartupObject></StartupObject> <FileUpgradeFlags> </FileUpgradeFlags> </PropertyGroup> @@ -31,8 +28,7 @@ <ConfigurationOverrideFile> </ConfigurationOverrideFile> <DefineConstants>TRACE;DEBUG</DefineConstants> - <DocumentationFile> - </DocumentationFile> + <DocumentationFile></DocumentationFile> <DebugSymbols>True</DebugSymbols> <FileAlignment>4096</FileAlignment> <Optimize>False</Optimize> @@ -41,8 +37,7 @@ <RemoveIntegerChecks>False</RemoveIntegerChecks> <TreatWarningsAsErrors>False</TreatWarningsAsErrors> <WarningLevel>4</WarningLevel> - <NoWarn> - </NoWarn> + <NoWarn></NoWarn> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <AllowUnsafeBlocks>False</AllowUnsafeBlocks> @@ -51,8 +46,7 @@ <ConfigurationOverrideFile> </ConfigurationOverrideFile> <DefineConstants>TRACE</DefineConstants> - <DocumentationFile> - </DocumentationFile> + <DocumentationFile></DocumentationFile> <DebugSymbols>False</DebugSymbols> <FileAlignment>4096</FileAlignment> <Optimize>True</Optimize> @@ -61,58 +55,60 @@ <RemoveIntegerChecks>False</RemoveIntegerChecks> <TreatWarningsAsErrors>False</TreatWarningsAsErrors> <WarningLevel>4</WarningLevel> - <NoWarn> - </NoWarn> + <NoWarn></NoWarn> </PropertyGroup> <ItemGroup> - <Reference Include="System"> + <Reference Include="System" > <HintPath>System.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="System.Data" /> - <Reference Include="System.Xml"> + <Reference Include="System.Xml" > <HintPath>System.Xml.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="libsecondlife.dll"> + <Reference Include="libsecondlife.dll" > <HintPath>..\bin\libsecondlife.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Axiom.MathLib.dll"> + <Reference Include="Axiom.MathLib.dll" > <HintPath>..\bin\Axiom.MathLib.dll</HintPath> <Private>False</Private> </Reference> - <Reference Include="Db4objects.Db4o.dll"> + <Reference Include="Db4objects.Db4o.dll" > <HintPath>..\bin\Db4objects.Db4o.dll</HintPath> <Private>False</Private> </Reference> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\OpenSim.Framework\OpenSim.Framework.csproj"> + <Name>OpenSim.Framework</Name> + <Project>{BD7866A4-04BA-47F0-905F-B2359118F5B2}</Project> + <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> + <Private>False</Private> + </ProjectReference> <ProjectReference Include="..\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj"> <Name>OpenSim.Framework.Console</Name> - <Project>{7AED7536-7D6B-4E28-8016-B5A554C663B4}</Project> + <Project>{4B0A7290-36C2-4C74-B9B4-07775B031CF2}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> - <Private>False</Private> + <Private>False</Private> </ProjectReference> <ProjectReference Include="..\OpenSim.Physics\Manager\OpenSim.Physics.Manager.csproj"> <Name>OpenSim.Physics.Manager</Name> - <Project>{0AAA0EEB-1F2C-4B4B-9BFA-7C3E45BCD348}</Project> + <Project>{2EAB18A1-8187-4C79-9947-A671F9C007D9}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> - <Private>False</Private> + <Private>False</Private> </ProjectReference> - <ProjectReference Include="..\OpenSim.Framework\OpenSim.Framework.csproj"> - <Name>OpenSim.Framework</Name> - <Project>{90D4F7AF-D75E-4DE8-A0E1-70CC242B31A1}</Project> + <ProjectReference Include="..\Servers\OpenSim.Servers.csproj"> + <Name>OpenSim.Servers</Name> + <Project>{B9D6A5F0-3BD2-4161-8AF1-90C03295D4EE}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> - <Private>False</Private> + <Private>False</Private> </ProjectReference> </ItemGroup> <ItemGroup> <Compile Include="AgentAssetUpload.cs"> <SubType>Code</SubType> </Compile> - <Compile Include="CAPS\AdminWebFront.cs" /> - <Compile Include="CAPS\IRestHandler.cs" /> <Compile Include="ConsoleCmds.cs"> <SubType>Code</SubType> </Compile> @@ -146,6 +142,12 @@ <Compile Include="Assets\InventoryCache.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="CAPS\AdminWebFront.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="CAPS\IRestHandler.cs"> + <SubType>Code</SubType> + </Compile> <Compile Include="CAPS\SimHttp.cs"> <SubType>Code</SubType> </Compile> @@ -193,4 +195,4 @@ <PostBuildEvent> </PostBuildEvent> </PropertyGroup> -</Project> \ No newline at end of file +</Project> diff --git a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build index 4e44c4b..04e86bc 100644 --- a/OpenSim.RegionServer/OpenSim.RegionServer.dll.build +++ b/OpenSim.RegionServer/OpenSim.RegionServer.dll.build @@ -49,9 +49,10 @@ <include name="../bin/libsecondlife.dll" /> <include name="../bin/Axiom.MathLib.dll" /> <include name="../bin/Db4objects.Db4o.dll" /> - <include name="../OpenSim.Framework.Console/${build.dir}/OpenSim.Framework.Console.dll" /> - <include name="../OpenSim.Physics/Manager/${build.dir}/OpenSim.Physics.Manager.dll" /> - <include name="../OpenSim.Framework/${build.dir}/OpenSim.Framework.dll" /> + <include name="../bin/OpenSim.Framework.dll" /> + <include name="../bin/OpenSim.Framework.Console.dll" /> + <include name="../bin/OpenSim.Physics.Manager.dll" /> + <include name="../bin/OpenSim.Servers.dll" /> </references> </csc> <echo message="Copying from [${project::get-base-directory()}/${build.dir}/] to [${project::get-base-directory()}/../bin/" /> diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs index 7425fca..d6453e2 100644 --- a/OpenSim.RegionServer/OpenSimMain.cs +++ b/OpenSim.RegionServer/OpenSimMain.cs @@ -91,7 +91,7 @@ namespace OpenSim OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - We are " + OpenSimRoot.Instance.Cfg.RegionName + " at " + OpenSimRoot.Instance.Cfg.RegionLocX.ToString() + "," + OpenSimRoot.Instance.Cfg.RegionLocY.ToString()); OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Initialising world"); - OpenSimRoot.Instance.LocalWorld = new World(); + OpenSimRoot.Instance.LocalWorld = new World(OpenSimRoot.Instance.ClientThreads, OpenSimRoot.Instance.Cfg.RegionHandle, OpenSimRoot.Instance.Cfg.RegionName, OpenSimRoot.Instance.Cfg); OpenSimRoot.Instance.LocalWorld.LandMap = OpenSimRoot.Instance.Cfg.LoadWorld(); this.physManager = new OpenSim.Physics.Manager.PhysicsManager(); @@ -113,8 +113,8 @@ namespace OpenSim } OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting CAPS HTTP server"); - OpenSimRoot.Instance.HttpServer = new SimCAPSHTTPServer(); - OpenSimRoot.Instance.HttpServer.AddRestHandler("Admin", new AdminWebFront("Admin")); + OpenSimRoot.Instance.HttpServer = new SimCAPSHTTPServer(OpenSimRoot.Instance.GridServers.GridServer, OpenSimRoot.Instance.Cfg.IPListenPort); + OpenSimRoot.Instance.HttpServer.AddRestHandler("Admin", new AdminWebFront("Admin", OpenSimRoot.Instance.LocalWorld)); timer1.Enabled = true; timer1.Interval = 100; @@ -172,7 +172,7 @@ namespace OpenSim { // new client UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); - SimClient newuser = new SimClient(epSender, useCircuit); + SimClient newuser = new SimClient(epSender, useCircuit, OpenSimRoot.Instance.LocalWorld, OpenSimRoot.Instance.ClientThreads, OpenSimRoot.Instance.AssetCache, OpenSimRoot.Instance.GridServers.GridServer, OpenSimRoot.Instance.Application, OpenSimRoot.Instance.InventoryCache, OpenSimRoot.Instance.Sandbox); //OpenSimRoot.Instance.ClientThreads.Add(epSender, newuser); OpenSimRoot.Instance.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser); } diff --git a/OpenSim.RegionServer/SimClient.cs b/OpenSim.RegionServer/SimClient.cs index d463c75..698053d 100644 --- a/OpenSim.RegionServer/SimClient.cs +++ b/OpenSim.RegionServer/SimClient.cs @@ -71,6 +71,13 @@ namespace OpenSim private AgentAssetUpload UploadAssets; private LLUUID newAssetFolder = LLUUID.Zero; private bool debug = false; + private World m_world; + private Dictionary<uint, SimClient> m_clientThreads; + private AssetCache m_assetCache; + private IGridServer m_gridServer; + private OpenSimApplication m_application; + private InventoryCache m_inventoryCache; + private bool m_sandboxMode; private void ack_pack(Packet Pack) { @@ -105,15 +112,15 @@ namespace OpenSim switch (Pack.Type) { case PacketType.CompleteAgentMovement: - ClientAvatar.CompleteMovement(OpenSimRoot.Instance.LocalWorld); + ClientAvatar.CompleteMovement(m_world); ClientAvatar.SendInitialPosition(); break; case PacketType.RegionHandshakeReply: - OpenSimRoot.Instance.LocalWorld.SendLayerData(this); + m_world.SendLayerData(this); break; case PacketType.AgentWearablesRequest: ClientAvatar.SendInitialAppearance(); - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { if (client.AgentID != this.AgentID) { @@ -122,7 +129,7 @@ namespace OpenSim client.ClientAvatar.SendAppearanceToOtherAgent(this); } } - OpenSimRoot.Instance.LocalWorld.GetInitialPrims(this); + m_world.GetInitialPrims(this); break; case PacketType.AgentIsNowWearing: AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; @@ -134,7 +141,7 @@ namespace OpenSim this.ClientAvatar.SetAppearance(appear); break; case PacketType.ObjectAdd: - OpenSimRoot.Instance.LocalWorld.AddNewPrim((ObjectAddPacket)Pack, this); + m_world.AddNewPrim((ObjectAddPacket)Pack, this); break; case PacketType.ObjectLink: OpenSim.Framework.Console.MainConsole.Instance.WriteLine(Pack.ToString()); @@ -146,7 +153,7 @@ namespace OpenSim ObjectShapePacket shape = (ObjectShapePacket)Pack; for (int i = 0; i < shape.ObjectData.Length; i++) { - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == shape.ObjectData[i].ObjectLocalID) { @@ -163,7 +170,7 @@ namespace OpenSim if (multipleupdate.ObjectData[i].Type == 9) //change position { libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID) { @@ -177,7 +184,7 @@ namespace OpenSim else if (multipleupdate.ObjectData[i].Type == 10)//rotation { libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID) { @@ -190,7 +197,7 @@ namespace OpenSim { libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID) { @@ -204,13 +211,13 @@ namespace OpenSim RequestImagePacket imageRequest = (RequestImagePacket)Pack; for (int i = 0; i < imageRequest.RequestImage.Length; i++) { - OpenSimRoot.Instance.AssetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image); + m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image); } break; case PacketType.TransferRequest: //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request"); TransferRequestPacket transfer = (TransferRequestPacket)Pack; - OpenSimRoot.Instance.AssetCache.AddAssetRequest(this, transfer); + m_assetCache.AddAssetRequest(this, transfer); break; case PacketType.AgentUpdate: ClientAvatar.HandleUpdate((AgentUpdatePacket)Pack); @@ -230,18 +237,18 @@ namespace OpenSim kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); kill.ObjectData[0].ID = this.ClientAvatar.localid; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(kill); } - OpenSimRoot.Instance.GridServers.GridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode); - lock (OpenSimRoot.Instance.LocalWorld.Entities) + m_gridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode); + lock (m_world.Entities) { - OpenSimRoot.Instance.LocalWorld.Entities.Remove(this.AgentID); + m_world.Entities.Remove(this.AgentID); } //need to do other cleaning up here too - OpenSimRoot.Instance.ClientThreads.Remove(this.CircuitCode); //this.userEP); - OpenSimRoot.Instance.Application.RemoveClientCircuit(this.CircuitCode); + m_clientThreads.Remove(this.CircuitCode); //this.userEP); + m_application.RemoveClientCircuit(this.CircuitCode); this.ClientThread.Abort(); break; case PacketType.ChatFromViewer: @@ -258,7 +265,7 @@ namespace OpenSim reply.ChatData.FromName = _enc.GetBytes(this.ClientAvatar.firstname + " " + this.ClientAvatar.lastname + "\0"); reply.ChatData.OwnerID = this.AgentID; reply.ChatData.SourceID = this.AgentID; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(reply); } @@ -267,7 +274,7 @@ namespace OpenSim ObjectImagePacket imagePack = (ObjectImagePacket)Pack; for (int i = 0; i < imagePack.ObjectData.Length; i++) { - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == imagePack.ObjectData[i].ObjectLocalID) { @@ -278,7 +285,7 @@ namespace OpenSim break; case PacketType.ObjectFlagUpdate: ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack; - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in m_world.Entities.Values) { if (ent.localid == flags.AgentData.ObjectLocalID) { @@ -306,7 +313,7 @@ namespace OpenSim break; case PacketType.CreateInventoryFolder: CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack; - OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type); + m_inventoryCache.CreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type); Console.WriteLine(Pack.ToString()); break; case PacketType.CreateInventoryItem: @@ -320,11 +327,11 @@ namespace OpenSim case PacketType.FetchInventory: //Console.WriteLine("fetch item packet"); FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack; - OpenSimRoot.Instance.InventoryCache.FetchInventory(this, FetchInventory); + m_inventoryCache.FetchInventory(this, FetchInventory); break; case PacketType.FetchInventoryDescendents: FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack; - OpenSimRoot.Instance.InventoryCache.FetchInventoryDescendents(this, Fetch); + m_inventoryCache.FetchInventoryDescendents(this, Fetch); break; case PacketType.UpdateInventoryItem: UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack; @@ -332,17 +339,17 @@ namespace OpenSim { if (update.InventoryData[i].TransactionID != LLUUID.Zero) { - AssetBase asset = OpenSimRoot.Instance.AssetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID)); + AssetBase asset = m_assetCache.GetAsset(update.InventoryData[i].TransactionID.Combine(this.SecureSessionID)); if (asset != null) { - OpenSimRoot.Instance.InventoryCache.UpdateInventoryItem(this, update.InventoryData[i].ItemID, asset); + m_inventoryCache.UpdateInventoryItem(this, update.InventoryData[i].ItemID, asset); } else { asset = this.UploadAssets.AddUploadToAssetCache(update.InventoryData[i].TransactionID); if (asset != null) { - OpenSimRoot.Instance.InventoryCache.UpdateInventoryItem(this, update.InventoryData[i].ItemID, asset); + m_inventoryCache.UpdateInventoryItem(this, update.InventoryData[i].ItemID, asset); } } } @@ -350,7 +357,7 @@ namespace OpenSim break; case PacketType.ViewerEffect: ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { if (client.AgentID != this.AgentID) { @@ -362,7 +369,7 @@ namespace OpenSim break; case PacketType.DeRezObject: //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Received DeRezObject packet"); - OpenSimRoot.Instance.LocalWorld.DeRezObject((DeRezObjectPacket)Pack, this); + m_world.DeRezObject((DeRezObjectPacket)Pack, this); break; } } @@ -501,11 +508,11 @@ namespace OpenSim if (Pack.Header.Zerocoded) { int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); - OpenSimRoot.Instance.Application.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP); + m_application.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP); } else { - OpenSimRoot.Instance.Application.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP); + m_application.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP); } } catch (Exception) @@ -569,14 +576,22 @@ namespace OpenSim this.PacketQueue.Enqueue(item); } - public SimClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack) + public SimClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, World world, Dictionary<uint, SimClient> clientThreads, AssetCache assetCache, IGridServer gridServer, OpenSimApplication application, InventoryCache inventoryCache, bool sandboxMode) { + m_world = world; + m_clientThreads = clientThreads; + m_assetCache = assetCache; + m_gridServer = gridServer; + m_application = application; + m_inventoryCache = inventoryCache; + m_sandboxMode = sandboxMode; + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs - Started up new client thread to handle incoming request"); cirpack = initialcirpack; userEP = remoteEP; PacketQueue = new BlockingQueue<QueItem>(); - this.UploadAssets = new AgentAssetUpload(this); + this.UploadAssets = new AgentAssetUpload(this, m_assetCache, m_inventoryCache ); AckTimer = new System.Timers.Timer(500); AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed); AckTimer.Start(); @@ -608,14 +623,16 @@ namespace OpenSim protected virtual void InitNewClient() { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs:InitNewClient() - Adding viewer agent to world"); - OpenSimRoot.Instance.LocalWorld.AddViewerAgent(this); - world.Entity tempent = OpenSimRoot.Instance.LocalWorld.Entities[this.AgentID]; + + m_world.AddViewerAgent(this); + world.Entity tempent = m_world.Entities[this.AgentID]; + this.ClientAvatar = (world.Avatar)tempent; } protected virtual void AuthUser() { - AuthenticateResponse sessionInfo = OpenSimRoot.Instance.GridServers.GridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code); + AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code); if (!sessionInfo.Authorised) { //session/circuit not authorised @@ -638,23 +655,23 @@ namespace OpenSim } // Create Inventory, currently only works for sandbox mode - if (OpenSimRoot.Instance.Sandbox) + if (m_sandboxMode) { if (sessionInfo.LoginInfo.InventoryFolder != null) { this.CreateInventory(sessionInfo.LoginInfo.InventoryFolder); if (sessionInfo.LoginInfo.BaseFolder != null) { - OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder); + m_inventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder); this.newAssetFolder = sessionInfo.LoginInfo.BaseFolder; - AssetBase[] inventorySet = OpenSimRoot.Instance.AssetCache.CreateNewInventorySet(this.AgentID); + AssetBase[] inventorySet = m_assetCache.CreateNewInventorySet(this.AgentID); if (inventorySet != null) { for (int i = 0; i < inventorySet.Length; i++) { if (inventorySet[i] != null) { - OpenSimRoot.Instance.InventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]); + m_inventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]); } } } @@ -670,8 +687,8 @@ namespace OpenSim { AgentInventory inventory = new AgentInventory(); inventory.AgentID = this.AgentID; - OpenSimRoot.Instance.InventoryCache.AddNewAgentsInventory(inventory); - OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, baseFolder); + m_inventoryCache.AddNewAgentsInventory(inventory); + m_inventoryCache.CreateNewInventoryFolder(this, baseFolder); } } } diff --git a/OpenSim.RegionServer/UserServer/LocalUserProfileManager.cs b/OpenSim.RegionServer/UserServer/LocalUserProfileManager.cs index 83e340b..eee1c3a 100644 --- a/OpenSim.RegionServer/UserServer/LocalUserProfileManager.cs +++ b/OpenSim.RegionServer/UserServer/LocalUserProfileManager.cs @@ -12,11 +12,15 @@ namespace OpenSim.UserServer { class LocalUserProfileManager : UserProfileManager { - private IGridServer _gridServer; + private IGridServer m_gridServer; + private int m_port; + private string m_ipAddr; - public LocalUserProfileManager(IGridServer gridServer) + public LocalUserProfileManager(IGridServer gridServer, int simPort, string ipAddr) { - _gridServer = gridServer; + m_gridServer = gridServer; + m_port = simPort; + m_ipAddr = ipAddr; } public override void InitUserProfiles() @@ -29,8 +33,8 @@ namespace OpenSim.UserServer uint circode = (uint)response["circuit_code"]; theUser.AddSimCircuit(circode, LLUUID.Random()); response["home"] = "{'region_handle':[r" + (997 * 256).ToString() + ",r" + (996 * 256).ToString() + "], 'position':[r" + theUser.homepos.X.ToString() + ",r" + theUser.homepos.Y.ToString() + ",r" + theUser.homepos.Z.ToString() + "], 'look_at':[r" + theUser.homelookat.X.ToString() + ",r" + theUser.homelookat.Y.ToString() + ",r" + theUser.homelookat.Z.ToString() + "]}"; - response["sim_port"] = OpenSimRoot.Instance.Cfg.IPListenPort; - response["sim_ip"] = OpenSimRoot.Instance.Cfg.IPListenAddr; + response["sim_port"] = m_port; + response["sim_ip"] = m_ipAddr; response["region_y"] = (Int32)996 * 256; response["region_x"] = (Int32)997* 256; @@ -67,9 +71,9 @@ namespace OpenSim.UserServer _login.InventoryFolder = new LLUUID((string)Inventory1["folder_id"]); //working on local computer if so lets add to the gridserver's list of sessions? - if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Local") + if (m_gridServer.GetName() == "Local") { - ((LocalGridBase)this._gridServer).AddNewSession(_login); + ((LocalGridBase)this.m_gridServer).AddNewSession(_login); } } } diff --git a/OpenSim.RegionServer/UserServer/LoginServer.cs b/OpenSim.RegionServer/UserServer/LoginServer.cs index 86b098a..47af8a8 100644 --- a/OpenSim.RegionServer/UserServer/LoginServer.cs +++ b/OpenSim.RegionServer/UserServer/LoginServer.cs @@ -52,7 +52,7 @@ namespace OpenSim.UserServer /// </summary> public class LoginServer : LoginService , IUserServer { - private IGridServer _gridServer; + private IGridServer m_gridServer; private ushort _loginPort = 8080; public IPAddress clientAddress = IPAddress.Loopback; public IPAddress remoteAddress = IPAddress.Any; @@ -63,10 +63,14 @@ namespace OpenSim.UserServer private string _mpasswd; private bool _needPasswd = false; private LocalUserProfileManager userManager; + private int m_simPort; + private string m_simAddr; - public LoginServer(IGridServer gridServer) + public LoginServer(IGridServer gridServer, string simAddr, int simPort) { - _gridServer = gridServer; + m_gridServer = gridServer; + m_simPort = simPort; + m_simAddr = simAddr; } // InitializeLogin: initialize the login @@ -89,7 +93,7 @@ namespace OpenSim.UserServer SR.Close(); this._mpasswd = EncodePassword("testpass"); - userManager = new LocalUserProfileManager(this._gridServer); + userManager = new LocalUserProfileManager(this.m_gridServer, m_simPort, m_simAddr ); userManager.InitUserProfiles(); userManager.SetKeys("", "", "", "Welcome to OpenSim"); @@ -289,8 +293,8 @@ namespace OpenSim.UserServer XmlRpcResponse response = (XmlRpcResponse)(new XmlRpcResponseDeserializer()).Deserialize(this._defaultResponse); Hashtable responseData = (Hashtable)response.Value; - responseData["sim_port"] = OpenSimRoot.Instance.Cfg.IPListenPort; - responseData["sim_ip"] = OpenSimRoot.Instance.Cfg.IPListenAddr; + responseData["sim_port"] = m_simPort; + responseData["sim_ip"] = m_simAddr; responseData["agent_id"] = Agent.ToStringHyphenated(); responseData["session_id"] = Session.ToStringHyphenated(); responseData["secure_session_id"]= secureSess.ToStringHyphenated(); @@ -327,9 +331,9 @@ namespace OpenSim.UserServer _login.InventoryFolder = InventoryFolderID; //working on local computer if so lets add to the gridserver's list of sessions? - if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Local") + if (m_gridServer.GetName() == "Local") { - ((LocalGridBase)this._gridServer).AddNewSession(_login); + ((LocalGridBase)m_gridServer).AddNewSession(_login); } // forward the XML-RPC response to the client diff --git a/OpenSim.RegionServer/world/Avatar.cs b/OpenSim.RegionServer/world/Avatar.cs index 75f2cff..2ae9992 100644 --- a/OpenSim.RegionServer/world/Avatar.cs +++ b/OpenSim.RegionServer/world/Avatar.cs @@ -30,14 +30,23 @@ namespace OpenSim.world private byte[] visualParams; private AvatarWearable[] Wearables; private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); + private World m_world; + private ulong m_regionHandle; + private Dictionary<uint, SimClient> m_clientThreads; + private string m_regionName; - public Avatar(SimClient TheClient) + public Avatar(SimClient TheClient, World world, string regionName, Dictionary<uint, SimClient> clientThreads, ulong regionHandle) { + m_world = world; + m_clientThreads = clientThreads; + m_regionName = regionName; + m_regionHandle = regionHandle; + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs - Loading details from grid (DUMMY)"); ControllingClient = TheClient; - localid = 8880000 + (OpenSimRoot.Instance.LocalWorld._localNumber++); + localid = 8880000 + (m_world._localNumber++); position = new LLVector3(100.0f, 100.0f, 30.0f); - position.Z = OpenSimRoot.Instance.LocalWorld.LandMap[(int)position.Y * 256 + (int)position.X] + 1; + position.Z = m_world.LandMap[(int)position.Y * 256 + (int)position.X] + 1; visualParams = new byte[218]; for (int i = 0; i < 218; i++) { @@ -52,7 +61,7 @@ namespace OpenSim.world this.Wearables[0].ItemID = LLUUID.Random(); this.avatarAppearanceTexture = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005")); - + } public PhysicsActor PhysActor @@ -96,11 +105,11 @@ namespace OpenSim.world //use CreateTerseBlock() ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); - terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME + terse.RegionData.RegionHandle = m_regionHandle; // FIXME terse.RegionData.TimeDilation = 64096; terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; terse.ObjectData[0] = terseBlock; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(terse); } @@ -119,11 +128,11 @@ namespace OpenSim.world //It has been a while since last update was sent so lets send one. ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock(); ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); - terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME + terse.RegionData.RegionHandle = m_regionHandle; // FIXME terse.RegionData.TimeDilation = 64096; terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; terse.ObjectData[0] = terseBlock; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(terse); } @@ -172,7 +181,7 @@ namespace OpenSim.world AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); mov.AgentData.SessionID = this.ControllingClient.SessionID; mov.AgentData.AgentID = this.ControllingClient.AgentID; - mov.Data.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; + mov.Data.RegionHandle = m_regionHandle; // TODO - dynamicalise this stuff mov.Data.Timestamp = 1172750370; mov.Data.Position = new LLVector3(100f, 100f, 23f); @@ -187,7 +196,7 @@ namespace OpenSim.world System.Text.Encoding _enc = System.Text.Encoding.ASCII; //send a objectupdate packet with information about the clients avatar ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); - objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; + objupdate.RegionData.RegionHandle = m_regionHandle; objupdate.RegionData.TimeDilation = 64096; objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; @@ -202,9 +211,9 @@ namespace OpenSim.world byte[] pb = pos2.GetBytes(); Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); - OpenSimRoot.Instance.LocalWorld._localNumber++; + m_world._localNumber++; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(objupdate); if (client.AgentID != ControllingClient.AgentID) @@ -241,7 +250,7 @@ namespace OpenSim.world System.Text.Encoding _enc = System.Text.Encoding.ASCII; //send a objectupdate packet with information about the clients avatar ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); - objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; + objupdate.RegionData.RegionHandle = m_regionHandle; objupdate.RegionData.TimeDilation = 64096; objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; @@ -293,7 +302,7 @@ namespace OpenSim.world this.visualParams[i] = appear.VisualParam[i].ParamValue; } - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { if (client.AgentID != ControllingClient.AgentID) { @@ -490,7 +499,7 @@ namespace OpenSim.world handshake.RegionInfo.SimAccess = 13; handshake.RegionInfo.WaterHeight = 20; handshake.RegionInfo.RegionFlags = 72458694; - handshake.RegionInfo.SimName = _enc.GetBytes(OpenSimRoot.Instance.Cfg.RegionName + "\0"); + handshake.RegionInfo.SimName = _enc.GetBytes(m_regionName + "\0"); handshake.RegionInfo.SimOwner = new LLUUID("00000000-0000-0000-0000-000000000000"); handshake.RegionInfo.TerrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); handshake.RegionInfo.TerrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); diff --git a/OpenSim.RegionServer/world/Primitive.cs b/OpenSim.RegionServer/world/Primitive.cs index 6ff66a3..a185f0b 100644 --- a/OpenSim.RegionServer/world/Primitive.cs +++ b/OpenSim.RegionServer/world/Primitive.cs @@ -22,6 +22,9 @@ namespace OpenSim.world private PhysicsActor _physActor; private bool physicsEnabled = false; private bool physicstest = false; //just added for testing + private Dictionary<uint, SimClient> m_clientThreads; + private ulong m_regionHandle; + private World m_world; public bool PhysicsEnabled { @@ -65,10 +68,14 @@ namespace OpenSim.world } } - public Primitive() + public Primitive(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) { mesh_cutbegin = 0.0f; mesh_cutend = 1.0f; + + m_clientThreads = clientThreads; + m_regionHandle = regionHandle; + m_world = world; } public override Mesh getMesh() @@ -99,7 +106,7 @@ namespace OpenSim.world { if (this.newPrimFlag) { - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(OurPacket); } @@ -108,11 +115,11 @@ namespace OpenSim.world else if (this.updateFlag) { ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); - terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME + terse.RegionData.RegionHandle = m_regionHandle; // FIXME terse.RegionData.TimeDilation = 64096; terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; terse.ObjectData[0] = this.CreateImprovedBlock(); - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(terse); } @@ -120,7 +127,7 @@ namespace OpenSim.world } else if (this.dirtyFlag) { - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { UpdateClient(client); } @@ -131,11 +138,11 @@ namespace OpenSim.world if (this._physActor != null && this.physicsEnabled) { ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); - terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME + terse.RegionData.RegionHandle = m_regionHandle; // FIXME terse.RegionData.TimeDilation = 64096; terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; terse.ObjectData[0] = this.CreateImprovedBlock(); - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(terse); } @@ -255,7 +262,7 @@ namespace OpenSim.world public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID) { ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); - objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; + objupdate.RegionData.RegionHandle = m_regionHandle; objupdate.RegionData.TimeDilation = 64096; objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; @@ -323,7 +330,7 @@ namespace OpenSim.world { //need to clean this up as it shares a lot of code with CreateFromPacket() ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); - objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; + objupdate.RegionData.RegionHandle = m_regionHandle; objupdate.RegionData.TimeDilation = 64096; objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; @@ -480,7 +487,7 @@ namespace OpenSim.world this.primData.LocalID = this.localid; this.primData.Position = this.position; this.primData.Rotation = new LLQuaternion(this.rotation.x, this.rotation.y, this.rotation.z, this.rotation.w); - OpenSimRoot.Instance.LocalWorld.localStorage.StorePrim(this.primData); + m_world.localStorage.StorePrim(this.primData); } } diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index e6d8921..0d126e6 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs @@ -25,10 +25,19 @@ namespace OpenSim.world private Random Rand = new Random(); private uint _primCount = 702000; private int storageCount; + private Dictionary<uint, SimClient> m_clientThreads; + private ulong m_regionHandle; + private string m_regionName; + private SimConfig m_cfg; - public World() + public World(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, string regionName, SimConfig cfg) { - OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating new entitities instance"); + m_clientThreads = clientThreads; + m_regionHandle = regionHandle; + m_regionName = regionName; + m_cfg = cfg; + + OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating new entitities instance"); Entities = new Dictionary<libsecondlife.LLUUID, Entity>(); OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs - creating LandMap"); @@ -115,9 +124,9 @@ namespace OpenSim.world HeightmapGenHills hills = new HeightmapGenHills(); this.LandMap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false); this.phyScene.SetTerrain(this.LandMap); - OpenSimRoot.Instance.Cfg.SaveMap(this.LandMap); + m_cfg.SaveMap(this.LandMap); - foreach(SimClient client in OpenSimRoot.Instance.ClientThreads.Values) { + foreach(SimClient client in m_clientThreads.Values) { this.SendLayerData(client); } } @@ -134,7 +143,7 @@ namespace OpenSim.world _primCount = prim.LocalID + 1; } OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs: PrimFromStorage() - Reloading prim (localId "+ prim.LocalID+ " ) from storage"); - Primitive nPrim = new Primitive(); + Primitive nPrim = new Primitive(m_clientThreads, m_regionHandle, this); nPrim.CreateFromStorage(prim); this.Entities.Add(nPrim.uuid, nPrim); } @@ -175,7 +184,7 @@ namespace OpenSim.world 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); + 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); @@ -187,7 +196,7 @@ namespace OpenSim.world public void AddNewPrim(ObjectAddPacket addPacket, SimClient AgentClient) { OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs: AddNewPrim() - Creating new prim"); - Primitive prim = new Primitive(); + Primitive prim = new Primitive(m_clientThreads, m_regionHandle, this ); prim.CreateFromPacket(addPacket, AgentClient.AgentID, this._primCount); PhysicsVector pVec = new PhysicsVector(prim.position.X, prim.position.Y, prim.position.Z); PhysicsVector pSize = new PhysicsVector( 0.255f, 0.255f, 0.255f); @@ -210,7 +219,7 @@ namespace OpenSim.world foreach( DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData ) { //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); - foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values) + foreach (Entity ent in this.Entities.Values) { if (ent.localid == Data.ObjectLocalID) { @@ -220,7 +229,7 @@ namespace OpenSim.world kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); kill.ObjectData[0].ID = ent.localid; - foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values) + foreach (SimClient client in m_clientThreads.Values) { client.OutPacket(kill); } @@ -234,9 +243,9 @@ namespace OpenSim.world } foreach( libsecondlife.LLUUID uuid in DeRezEnts ) { - lock (OpenSimRoot.Instance.LocalWorld.Entities) + lock (this.Entities) { - OpenSimRoot.Instance.LocalWorld.Entities.Remove(uuid); + this.Entities.Remove(uuid); } } -- cgit v1.1