Yet more refactoring

zircon
MW 2007-03-20 18:14:15 +00:00
parent e7295a1af0
commit 7a31585d5a
16 changed files with 265 additions and 140 deletions

View File

@ -31,6 +31,7 @@
<Reference Include="Axiom.MathLib, Version=0.7.0.25497, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\Axiom.MathLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />

View File

@ -27,6 +27,7 @@
<Reference Include="Axiom.MathLib, Version=0.7.0.25497, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\Axiom.MathLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />

View File

@ -27,10 +27,12 @@
<Reference Include="Axiom.MathLib, Version=0.7.0.25497, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\Axiom.MathLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="PhysX_Wrapper_Dotnet, Version=1.0.2628.28883, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\PhysX_Wrapper_Dotnet.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Xml" />

View File

@ -63,7 +63,7 @@ namespace OpenSim.CAPS
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SimHttp.cs:StartHTTP() - Spawned main thread OK");
Listener = new HttpListener();
Listener.Prefixes.Add("http://+:" + OpenSimMain.Instance.Cfg.IPListenPort + "/");
Listener.Prefixes.Add("http://+:" + OpenSimRoot.Instance.Cfg.IPListenPort + "/");
Listener.Start();
HttpListenerContext context;
@ -96,9 +96,9 @@ 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 (OpenSimMain.Instance.GridServers.GridServer.GetName() == "Remote")
if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Remote")
{
((RemoteGridBase)OpenSimMain.Instance.GridServers.GridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data);
((RemoteGridBase)OpenSimRoot.Instance.GridServers.GridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data);
}
return "<?xml version=\"1.0\"?><methodResponse><params /></methodResponse>";
break;

View File

@ -18,12 +18,13 @@ namespace OpenSim
{
}
public void LoadPlugins()
public virtual void Initialise()
{
//load the dlls
this.AssetServer = this.LoadAssetDll(this.AssetDll);
this.GridServer = this.LoadGridDll(this.GridDll);
}
public void Close()
public virtual void Close()
{
this.AssetServer.Close();
this.GridServer.Close();

View File

@ -58,6 +58,8 @@
<ItemGroup>
<Compile Include="Assets\InventoryCache.cs" />
<Compile Include="Grid.cs" />
<Compile Include="OpenSimApplication.cs" />
<Compile Include="OpenSimRoot.cs" />
<Compile Include="UserServer\LocalUserProfileManager.cs" />
<Compile Include="OpenSimMain.cs" />
<Compile Include="QueItem.cs" />

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace OpenSim
{
public abstract class OpenSimApplication
{
public abstract void StartUp();
public abstract void Shutdown();
public abstract void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender);
public abstract void RemoveClientCircuit(uint circuitcode);
}
}

View File

@ -51,11 +51,11 @@ namespace OpenSim
/// <summary>
/// Description of MainForm.
/// </summary>
public class OpenSimMain
public class OpenSimMain : OpenSimApplication
{
private static OpenSimMain instance = null;
/* private static OpenSimRoot instance = null;
public static OpenSimMain Instance
public static OpenSimRoot Instance
{
get
{
@ -69,6 +69,11 @@ namespace OpenSim
public SimCAPSHTTPServer HttpServer;
public AssetCache AssetCache;
public InventoryCache InventoryCache;
public Dictionary<EndPoint, SimClient> ClientThreads = new Dictionary<EndPoint, SimClient>();
public DateTime startuptime;
*/
private Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
private PhysicsManager physManager;
public Socket Server;
private IPEndPoint ServerIncoming;
@ -78,9 +83,6 @@ namespace OpenSim
private EndPoint epSender;
private AsyncCallback ReceivedData;
public DateTime startuptime;
public Dictionary<EndPoint, SimClient> ClientThreads = new Dictionary<EndPoint, SimClient>();
private PhysicsManager physManager;
private System.Timers.Timer timer1 = new System.Timers.Timer();
private string ConfigDll = "SimConfig.dll";
private string _physicsEngine = "basicphysics";
@ -94,55 +96,58 @@ namespace OpenSim
Console.WriteLine("Starting...\n");
OpenSim.Framework.Console.MainConsole.Instance = new SimConsole(OpenSim.Framework.Console.ConsoleBase.ConsoleType.Local, "", 0);
instance = new OpenSimMain();
//OpenSimRoot.instance = new OpenSimRoot();
OpenSimMain sim = new OpenSimMain();
OpenSimRoot.Instance.Application = sim;
Instance.sandbox = false;
Instance.loginserver = false;
Instance._physicsEngine = "basicphysics";
sim.sandbox = false;
sim.loginserver = false;
sim._physicsEngine = "basicphysics";
for (int i = 0; i < args.Length; i++)
{
if (args[i] == "-sandbox")
{
Instance.sandbox = true;
sim.sandbox = true;
OpenSimRoot.Instance.Sandbox = true;
}
if (args[i] == "-loginserver")
{
Instance.loginserver = true;
sim.loginserver = true;
}
if (args[i] == "-realphysx")
{
Instance._physicsEngine = "RealPhysX";
sim._physicsEngine = "RealPhysX";
OpenSim.world.Avatar.PhysicsEngineFlying = true;
}
}
OpenSimMain.Instance.GridServers = new Grid();
if (Instance.sandbox)
OpenSimRoot.Instance.GridServers = new Grid();
if (sim.sandbox)
{
OpenSimMain.Instance.GridServers.AssetDll = "LocalGridServers.dll";
OpenSimMain.Instance.GridServers.GridDll = "LocalGridServers.dll";
OpenSimMain.Instance.GridServers.LoadPlugins();
OpenSimRoot.Instance.GridServers.AssetDll = "LocalGridServers.dll";
OpenSimRoot.Instance.GridServers.GridDll = "LocalGridServers.dll";
OpenSimRoot.Instance.GridServers.Initialise();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Starting in Sandbox mode");
}
else
{
OpenSimMain.Instance.GridServers.AssetDll = "RemoteGridServers.dll";
OpenSimMain.Instance.GridServers.GridDll = "RemoteGridServers.dll";
OpenSimMain.Instance.GridServers.LoadPlugins();
OpenSimRoot.Instance.GridServers.AssetDll = "RemoteGridServers.dll";
OpenSimRoot.Instance.GridServers.GridDll = "RemoteGridServers.dll";
OpenSimRoot.Instance.GridServers.Initialise();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Starting in Grid mode");
}
if (Instance.loginserver && Instance.sandbox)
if (sim.loginserver && sim.sandbox)
{
LoginServer loginServer = new LoginServer(OpenSimMain.Instance.GridServers.GridServer);
LoginServer loginServer = new LoginServer(OpenSimRoot.Instance.GridServers.GridServer);
loginServer.Startup();
}
Instance.AssetCache = new AssetCache(OpenSimMain.Instance.GridServers.AssetServer);
Instance.InventoryCache = new InventoryCache();
OpenSimRoot.Instance.AssetCache = new AssetCache(OpenSimRoot.Instance.GridServers.AssetServer);
OpenSimRoot.Instance.InventoryCache = new InventoryCache();
Instance.Startup();
OpenSimRoot.Instance.StartUp();
while (true)
{
@ -154,41 +159,41 @@ namespace OpenSim
{
}
private void Startup()
public override void StartUp()
{
startuptime = DateTime.Now;
OpenSimRoot.Instance.startuptime = DateTime.Now;
// We check our local database first, then the grid for config options
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - Loading configuration");
Cfg = this.LoadConfigDll(this.ConfigDll);
Cfg.InitConfig(this.sandbox);
OpenSimRoot.Instance.Cfg = this.LoadConfigDll(this.ConfigDll);
OpenSimRoot.Instance.Cfg.InitConfig(this.sandbox);
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - Contacting gridserver");
Cfg.LoadFromGrid();
OpenSimRoot.Instance.Cfg.LoadFromGrid();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - We are " + Cfg.RegionName + " at " + Cfg.RegionLocX.ToString() + "," + Cfg.RegionLocY.ToString());
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");
Instance.LocalWorld = new World();
Instance.LocalWorld.LandMap = Cfg.LoadWorld();
OpenSimRoot.Instance.LocalWorld = new World();
OpenSimRoot.Instance.LocalWorld.LandMap = OpenSimRoot.Instance.Cfg.LoadWorld();
this.physManager = new OpenSim.Physics.Manager.PhysicsManager();
this.physManager.LoadPlugins();
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting up messaging system");
Instance.LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this._physicsEngine); //should be reading from the config file what physics engine to use
Instance.LocalWorld.PhysScene.SetTerrain(Instance.LocalWorld.LandMap);
OpenSimRoot.Instance.LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this._physicsEngine); //should be reading from the config file what physics engine to use
OpenSimRoot.Instance.LocalWorld.PhysScene.SetTerrain(OpenSimRoot.Instance.LocalWorld.LandMap);
OpenSimMain.Instance.GridServers.AssetServer.SetServerInfo(OpenSimMain.Instance.Cfg.AssetURL, OpenSimMain.Instance.Cfg.AssetSendKey);
OpenSimMain.Instance.GridServers.GridServer.SetServerInfo(OpenSimMain.Instance.Cfg.GridURL, OpenSimMain.Instance.Cfg.GridSendKey, OpenSimMain.Instance.Cfg.GridRecvKey);
OpenSimRoot.Instance.GridServers.AssetServer.SetServerInfo(OpenSimRoot.Instance.Cfg.AssetURL, OpenSimRoot.Instance.Cfg.AssetSendKey);
OpenSimRoot.Instance.GridServers.GridServer.SetServerInfo(OpenSimRoot.Instance.Cfg.GridURL, OpenSimRoot.Instance.Cfg.GridSendKey, OpenSimRoot.Instance.Cfg.GridRecvKey);
Instance.LocalWorld.LoadStorageDLL("Db4LocalStorage.dll"); //all these dll names shouldn't be hard coded.
Instance.LocalWorld.LoadPrimsFromStorage();
OpenSimRoot.Instance.LocalWorld.LoadStorageDLL("Db4LocalStorage.dll"); //all these dll names shouldn't be hard coded.
OpenSimRoot.Instance.LocalWorld.LoadPrimsFromStorage();
if (this.sandbox)
{
this.AssetCache.LoadDefaultTextureSet();
OpenSimRoot.Instance.AssetCache.LoadDefaultTextureSet();
}
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Startup() - Starting CAPS HTTP server");
HttpServer = new SimCAPSHTTPServer();
OpenSimRoot.Instance.HttpServer = new SimCAPSHTTPServer();
timer1.Enabled = true;
timer1.Interval = 100;
@ -233,16 +238,20 @@ namespace OpenSim
int numBytes = Server.EndReceiveFrom(result, ref epSender);
int packetEnd = numBytes - 1;
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
// This is either a new client or a packet to send to an old one
if (ClientThreads.ContainsKey(epSender))
// if (OpenSimRoot.Instance.ClientThreads.ContainsKey(epSender))
if(this.clientCircuits.ContainsKey(epSender))
{
ClientThreads[epSender].InPacket(packet);
OpenSimRoot.Instance.ClientThreads[this.clientCircuits[epSender]].InPacket(packet);
}
else if (packet.Type == PacketType.UseCircuitCode)
{ // new client
SimClient newuser = new SimClient(epSender, (UseCircuitCodePacket)packet);
ClientThreads.Add(epSender, newuser);
UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet;
this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
SimClient newuser = new SimClient(epSender, useCircuit);
//OpenSimRoot.Instance.ClientThreads.Add(epSender, newuser);
OpenSimRoot.Instance.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser);
}
else
{ // invalid client
@ -254,9 +263,9 @@ namespace OpenSim
private void MainServerListener()
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:MainServerListener() - New thread started");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:MainServerListener() - Opening UDP socket on " + Cfg.IPListenAddr + ":" + Cfg.IPListenPort);
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:MainServerListener() - Opening UDP socket on " + OpenSimRoot.Instance.Cfg.IPListenAddr + ":" + OpenSimRoot.Instance.Cfg.IPListenPort);
ServerIncoming = new IPEndPoint(IPAddress.Any, Cfg.IPListenPort);
ServerIncoming = new IPEndPoint(IPAddress.Any, OpenSimRoot.Instance.Cfg.IPListenPort);
Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Server.Bind(ServerIncoming);
@ -271,15 +280,44 @@ namespace OpenSim
}
public static void Shutdown()
public override void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode )//EndPoint packetSender)
{
EndPoint sendto = null;
foreach(KeyValuePair<EndPoint, uint> p in this.clientCircuits)
{
if (p.Value == circuitcode)
{
sendto = p.Key;
break;
}
}
if (sendto != null)
{
this.Server.SendTo(buffer, size, flags, sendto);
}
}
public override void RemoveClientCircuit(uint circuitcode)
{
foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits)
{
if (p.Value == circuitcode)
{
this.clientCircuits.Remove(p.Key);
break;
}
}
}
public override void Shutdown()
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Shutdown() - Closing all threads");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Shutdown() - Killing listener thread");
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Shutdown() - Killing clients");
// IMPLEMENT THIS
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Main.cs:Shutdown() - Closing console and terminating");
OpenSimMain.Instance.LocalWorld.Close();
OpenSimMain.Instance.GridServers.Close();
OpenSimRoot.Instance.LocalWorld.Close();
OpenSimRoot.Instance.GridServers.Close();
OpenSim.Framework.Console.MainConsole.Instance.Close();
Environment.Exit(0);
}
@ -287,7 +325,7 @@ namespace OpenSim
void Timer1Tick(object sender, System.EventArgs e)
{
Instance.LocalWorld.Update();
OpenSimRoot.Instance.LocalWorld.Update();
}
}

View File

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
//using System.Net.Sockets;
using libsecondlife;
using libsecondlife.Packets;
using OpenSim.world;
using OpenSim.Framework.Interfaces;
using OpenSim.UserServer;
using OpenSim.Assets;
using OpenSim.CAPS;
using OpenSim.Framework.Console;
using OpenSim.Physics.Manager;
namespace OpenSim
{
public class OpenSimRoot
{
private static OpenSimRoot instance = new OpenSimRoot(); //null;
public static OpenSimRoot Instance
{
get
{
return instance;
}
}
private OpenSimRoot()
{
}
public World LocalWorld;
public Grid GridServers;
public SimConfig Cfg;
public SimCAPSHTTPServer HttpServer;
public AssetCache AssetCache;
public InventoryCache InventoryCache;
//public Dictionary<EndPoint, SimClient> ClientThreads = new Dictionary<EndPoint, SimClient>();
public Dictionary<uint, SimClient> ClientThreads = new Dictionary<uint, SimClient>();
public DateTime startuptime;
public OpenSimApplication Application;
public bool Sandbox = false;
public void StartUp()
{
if (this.Application != null)
{
this.Application.StartUp();
}
}
public void Shutdown()
{
if (this.Application != null)
{
this.Application.Shutdown();
}
}
}
}

View File

@ -60,7 +60,7 @@ namespace OpenSim
private BlockingQueue<QueItem> PacketQueue;
private Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>();
private Dictionary<uint, Packet> NeedAck = new Dictionary<uint, Packet>();
private Dictionary<LLUUID, AssetBase> UploadedAssets = new Dictionary<LLUUID, AssetBase>();
//private Dictionary<LLUUID, AssetBase> UploadedAssets = new Dictionary<LLUUID, AssetBase>();
private System.Timers.Timer AckTimer;
private uint Sequence = 0;
private object SequenceLock = new object();
@ -70,7 +70,7 @@ namespace OpenSim
private LLUUID newAssetFolder = LLUUID.Zero;
private bool debug = false;
public void ack_pack(Packet Pack)
private void ack_pack(Packet Pack)
{
//libsecondlife.Packets.PacketAckPacket ack_it = new PacketAckPacket();
//ack_it.Packets = new PacketAckPacket.PacketsBlock[1];
@ -90,7 +90,7 @@ namespace OpenSim
}
}
public void ProcessInPacket(Packet Pack)
protected virtual void ProcessInPacket(Packet Pack)
{
ack_pack(Pack);
if (debug)
@ -103,15 +103,15 @@ namespace OpenSim
switch (Pack.Type)
{
case PacketType.CompleteAgentMovement:
ClientAvatar.CompleteMovement(OpenSimMain.Instance.LocalWorld);
ClientAvatar.CompleteMovement(OpenSimRoot.Instance.LocalWorld);
ClientAvatar.SendInitialPosition();
break;
case PacketType.RegionHandshakeReply:
OpenSimMain.Instance.LocalWorld.SendLayerData(this);
OpenSimRoot.Instance.LocalWorld.SendLayerData(this);
break;
case PacketType.AgentWearablesRequest:
ClientAvatar.SendInitialAppearance();
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
if (client.AgentID != this.AgentID)
{
@ -120,10 +120,10 @@ namespace OpenSim
client.ClientAvatar.SendAppearanceToOtherAgent(this);
}
}
OpenSimMain.Instance.LocalWorld.GetInitialPrims(this);
OpenSimRoot.Instance.LocalWorld.GetInitialPrims(this);
break;
case PacketType.ObjectAdd:
OpenSimMain.Instance.LocalWorld.AddNewPrim((ObjectAddPacket)Pack, this);
OpenSimRoot.Instance.LocalWorld.AddNewPrim((ObjectAddPacket)Pack, this);
break;
case PacketType.ObjectLink:
OpenSim.Framework.Console.MainConsole.Instance.WriteLine(Pack.ToString());
@ -135,7 +135,7 @@ namespace OpenSim
ObjectShapePacket shape = (ObjectShapePacket)Pack;
for (int i = 0; i < shape.ObjectData.Length; i++)
{
foreach (Entity ent in OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == shape.ObjectData[i].ObjectLocalID)
{
@ -152,7 +152,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 OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID)
{
@ -166,7 +166,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 OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID)
{
@ -179,7 +179,7 @@ namespace OpenSim
{
libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
foreach (Entity ent in OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == multipleupdate.ObjectData[i].ObjectLocalID)
{
@ -193,13 +193,13 @@ namespace OpenSim
RequestImagePacket imageRequest = (RequestImagePacket)Pack;
for (int i = 0; i < imageRequest.RequestImage.Length; i++)
{
OpenSimMain.Instance.AssetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image);
OpenSimRoot.Instance.AssetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image);
}
break;
case PacketType.TransferRequest:
//Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
TransferRequestPacket transfer = (TransferRequestPacket)Pack;
OpenSimMain.Instance.AssetCache.AddAssetRequest(this, transfer);
OpenSimRoot.Instance.AssetCache.AddAssetRequest(this, transfer);
break;
case PacketType.AgentUpdate:
ClientAvatar.HandleUpdate((AgentUpdatePacket)Pack);
@ -219,17 +219,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 OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(kill);
}
OpenSimMain.Instance.GridServers.GridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode);
lock (OpenSimMain.Instance.LocalWorld.Entities)
OpenSimRoot.Instance.GridServers.GridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode);
lock (OpenSimRoot.Instance.LocalWorld.Entities)
{
OpenSimMain.Instance.LocalWorld.Entities.Remove(this.AgentID);
OpenSimRoot.Instance.LocalWorld.Entities.Remove(this.AgentID);
}
//need to do other cleaning up here too
OpenSimMain.Instance.ClientThreads.Remove(this.userEP);
OpenSimRoot.Instance.ClientThreads.Remove(this.CircuitCode); //this.userEP);
OpenSimRoot.Instance.Application.RemoveClientCircuit(this.CircuitCode);
this.ClientThread.Abort();
break;
case PacketType.ChatFromViewer:
@ -246,7 +247,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 OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(reply);
}
@ -255,7 +256,7 @@ namespace OpenSim
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
for (int i = 0; i < imagePack.ObjectData.Length; i++)
{
foreach (Entity ent in OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == imagePack.ObjectData[i].ObjectLocalID)
{
@ -266,7 +267,7 @@ namespace OpenSim
break;
case PacketType.ObjectFlagUpdate:
ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
foreach (Entity ent in OpenSimMain.Instance.LocalWorld.Entities.Values)
foreach (Entity ent in OpenSimRoot.Instance.LocalWorld.Entities.Values)
{
if (ent.localid == flags.AgentData.ObjectLocalID)
{
@ -313,19 +314,19 @@ namespace OpenSim
} */
break;
case PacketType.CreateInventoryFolder:
Console.WriteLine(Pack.ToString());
//Console.WriteLine(Pack.ToString());
break;
case PacketType.CreateInventoryItem:
Console.WriteLine(Pack.ToString());
//Console.WriteLine(Pack.ToString());
break;
case PacketType.FetchInventory:
Console.WriteLine("fetch item packet");
FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
OpenSimMain.Instance.InventoryCache.FetchInventory(this, FetchInventory);
OpenSimRoot.Instance.InventoryCache.FetchInventory(this, FetchInventory);
break;
case PacketType.FetchInventoryDescendents:
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
OpenSimMain.Instance.InventoryCache.FetchInventoryDescendents(this, Fetch);
OpenSimRoot.Instance.InventoryCache.FetchInventoryDescendents(this, Fetch);
break;
}
}
@ -391,7 +392,7 @@ namespace OpenSim
ResendUnacked();
}
public void ProcessOutPacket(Packet Pack)
protected virtual void ProcessOutPacket(Packet Pack)
{
// Keep track of when this packet was sent out
@ -464,11 +465,11 @@ namespace OpenSim
if (Pack.Header.Zerocoded)
{
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
OpenSimMain.Instance.Server.SendTo(ZeroOutBuffer, packetsize, SocketFlags.None, userEP);
OpenSimRoot.Instance.Application.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, CircuitCode);//userEP);
}
else
{
OpenSimMain.Instance.Server.SendTo(sendbuffer, sendbuffer.Length, SocketFlags.None, userEP);
OpenSimRoot.Instance.Application.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, CircuitCode); //userEP);
}
}
catch (Exception)
@ -479,7 +480,7 @@ namespace OpenSim
}
public void InPacket(Packet NewPack)
public virtual void InPacket(Packet NewPack)
{
// Handle appended ACKs
if (NewPack.Header.AppendedAcks)
@ -524,7 +525,7 @@ namespace OpenSim
}
public void OutPacket(Packet NewPack)
public virtual void OutPacket(Packet NewPack)
{
QueItem item = new QueItem();
item.Packet = NewPack;
@ -547,7 +548,7 @@ namespace OpenSim
ClientThread.Start();
}
private void ClientLoop()
protected virtual void ClientLoop()
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs:ClientLoop() - Entered loop");
while (true)
@ -566,17 +567,17 @@ namespace OpenSim
}
}
private void InitNewClient()
protected virtual void InitNewClient()
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs:InitNewClient() - Adding viewer agent to world");
OpenSimMain.Instance.LocalWorld.AddViewerAgent(this);
world.Entity tempent = OpenSimMain.Instance.LocalWorld.Entities[this.AgentID];
OpenSimRoot.Instance.LocalWorld.AddViewerAgent(this);
world.Entity tempent = OpenSimRoot.Instance.LocalWorld.Entities[this.AgentID];
this.ClientAvatar = (world.Avatar)tempent;
}
private void AuthUser()
protected virtual void AuthUser()
{
AuthenticateResponse sessionInfo = OpenSimMain.Instance.GridServers.GridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
AuthenticateResponse sessionInfo = OpenSimRoot.Instance.GridServers.GridServer.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
if (!sessionInfo.Authorised)
{
//session/circuit not authorised
@ -590,29 +591,28 @@ namespace OpenSim
this.AgentID = cirpack.CircuitCode.ID;
this.SessionID = cirpack.CircuitCode.SessionID;
this.CircuitCode = cirpack.CircuitCode.Code;
InitNewClient();
InitNewClient(); //shouldn't be called here as we might be a child agent and not want a full avatar
this.ClientAvatar.firstname = sessionInfo.LoginInfo.First;
this.ClientAvatar.lastname = sessionInfo.LoginInfo.Last;
// Create Inventory, currently only works for sandbox mode
if (OpenSimMain.Instance.sandbox)
if (OpenSimRoot.Instance.Sandbox)
{
if (sessionInfo.LoginInfo.InventoryFolder != null)
{
this.CreateInventory(sessionInfo.LoginInfo.InventoryFolder);
if (sessionInfo.LoginInfo.BaseFolder != null)
{
OpenSimMain.Instance.InventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder);
OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, sessionInfo.LoginInfo.BaseFolder);
this.newAssetFolder = sessionInfo.LoginInfo.BaseFolder;
AssetBase[] inventorySet = OpenSimMain.Instance.AssetCache.CreateNewInventorySet(this.AgentID);
AssetBase[] inventorySet = OpenSimRoot.Instance.AssetCache.CreateNewInventorySet(this.AgentID);
if (inventorySet != null)
{
for (int i = 0; i < inventorySet.Length; i++)
{
if (inventorySet[i] != null)
{
Console.WriteLine(Helpers.FieldToString(inventorySet[i].Data));
OpenSimMain.Instance.InventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]);
OpenSimRoot.Instance.InventoryCache.AddNewInventoryItem(this, sessionInfo.LoginInfo.BaseFolder, inventorySet[i]);
}
}
}
@ -628,8 +628,8 @@ namespace OpenSim
{
AgentInventory inventory = new AgentInventory();
inventory.AgentID = this.AgentID;
OpenSimMain.Instance.InventoryCache.AddNewAgentsInventory(inventory);
OpenSimMain.Instance.InventoryCache.CreateNewInventoryFolder(this, baseFolder);
OpenSimRoot.Instance.InventoryCache.AddNewAgentsInventory(inventory);
OpenSimRoot.Instance.InventoryCache.CreateNewInventoryFolder(this, baseFolder);
}
}
}

View File

@ -156,11 +156,11 @@ namespace OpenSim
break;
case "regenerate":
OpenSimMain.Instance.LocalWorld.RegenerateTerrain();
OpenSimRoot.Instance.LocalWorld.RegenerateTerrain();
break;
case "shutdown":
OpenSimMain.Shutdown();
OpenSimRoot.Instance.Shutdown();
break;
}
return null;
@ -170,16 +170,16 @@ namespace OpenSim
public override void ShowCommands(string ShowWhat) {
switch(ShowWhat) {
case "uptime":
this.WriteLine("OpenSim has been running since " + OpenSimMain.Instance.startuptime.ToString());
this.WriteLine("That is " + (DateTime.Now-OpenSimMain.Instance.startuptime).ToString());
this.WriteLine("OpenSim has been running since " + OpenSimRoot.Instance.startuptime.ToString());
this.WriteLine("That is " + (DateTime.Now-OpenSimRoot.Instance.startuptime).ToString());
break;
case "users":
OpenSim.world.Avatar TempAv;
this.WriteLine(String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}","Firstname", "Lastname","Agent ID", "Session ID", "Circuit", "IP"));
foreach (libsecondlife.LLUUID UUID in OpenSimMain.Instance.LocalWorld.Entities.Keys) {
if(OpenSimMain.Instance.LocalWorld.Entities[UUID].ToString()== "OpenSim.world.Avatar")
foreach (libsecondlife.LLUUID UUID in OpenSimRoot.Instance.LocalWorld.Entities.Keys) {
if(OpenSimRoot.Instance.LocalWorld.Entities[UUID].ToString()== "OpenSim.world.Avatar")
{
TempAv=(OpenSim.world.Avatar)OpenSimMain.Instance.LocalWorld.Entities[UUID];
TempAv=(OpenSim.world.Avatar)OpenSimRoot.Instance.LocalWorld.Entities[UUID];
this.WriteLine(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()));
}
}
@ -190,7 +190,7 @@ namespace OpenSim
// Displays a prompt to the user and then runs the command they entered
public override void MainConsolePrompt() {
string[] tempstrarray;
string tempstr = this.CmdPrompt("OpenSim-" + OpenSimMain.Instance.Cfg.RegionHandle.ToString() + " # ");
string tempstr = this.CmdPrompt("OpenSim-" + OpenSimRoot.Instance.Cfg.RegionHandle.ToString() + " # ");
tempstrarray = tempstr.Split(' ');
string cmd=tempstrarray[0];
Array.Reverse(tempstrarray);

View File

@ -29,8 +29,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"] = OpenSimMain.Instance.Cfg.IPListenPort;
response["sim_ip"] = OpenSimMain.Instance.Cfg.IPListenAddr;
response["sim_port"] = OpenSimRoot.Instance.Cfg.IPListenPort;
response["sim_ip"] = OpenSimRoot.Instance.Cfg.IPListenAddr;
response["region_y"] = (Int32)996 * 256;
response["region_x"] = (Int32)997* 256;
@ -67,7 +67,7 @@ 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 (OpenSimMain.Instance.GridServers.GridServer.GetName() == "Local")
if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Local")
{
((LocalGridBase)this._gridServer).AddNewSession(_login);
}

View File

@ -289,10 +289,11 @@ namespace OpenSim.UserServer
XmlRpcResponse response = (XmlRpcResponse)(new XmlRpcResponseDeserializer()).Deserialize(this._defaultResponse);
Hashtable responseData = (Hashtable)response.Value;
responseData["sim_port"] = OpenSimMain.Instance.Cfg.IPListenPort;
responseData["sim_ip"] = OpenSimMain.Instance.Cfg.IPListenAddr;
responseData["sim_port"] = OpenSimRoot.Instance.Cfg.IPListenPort;
responseData["sim_ip"] = OpenSimRoot.Instance.Cfg.IPListenAddr;
responseData["agent_id"] = Agent.ToStringHyphenated();
responseData["session_id"] = Session.ToStringHyphenated();
responseData["circuit_code"] = (Int32)(Util.RandomClass.Next());
responseData["seconds_since_epoch"] = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
responseData["login-flags"] = LoginFlags;
responseData["global-textures"] = GlobalTextures;
@ -324,7 +325,7 @@ namespace OpenSim.UserServer
_login.InventoryFolder = InventoryFolderID;
//working on local computer if so lets add to the gridserver's list of sessions?
if (OpenSimMain.Instance.GridServers.GridServer.GetName() == "Local")
if (OpenSimRoot.Instance.GridServers.GridServer.GetName() == "Local")
{
((LocalGridBase)this._gridServer).AddNewSession(_login);
}

View File

@ -27,9 +27,9 @@ namespace OpenSim.world
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs - Loading details from grid (DUMMY)");
ControllingClient = TheClient;
localid = 8880000 + (OpenSimMain.Instance.LocalWorld._localNumber++);
localid = 8880000 + (OpenSimRoot.Instance.LocalWorld._localNumber++);
position = new LLVector3(100.0f, 100.0f, 30.0f);
position.Z = OpenSimMain.Instance.LocalWorld.LandMap[(int)position.Y * 256 + (int)position.X] + 1;
position.Z = OpenSimRoot.Instance.LocalWorld.LandMap[(int)position.Y * 256 + (int)position.X] + 1;
}
public PhysicsActor PhysActor
@ -73,11 +73,11 @@ namespace OpenSim.world
//use CreateTerseBlock()
ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = CreateTerseBlock();
ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
terse.RegionData.RegionHandle = OpenSimMain.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.TimeDilation = 64096;
terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
terse.ObjectData[0] = terseBlock;
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(terse);
}
@ -95,11 +95,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 = OpenSimMain.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.TimeDilation = 64096;
terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
terse.ObjectData[0] = terseBlock;
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(terse);
}
@ -141,7 +141,7 @@ namespace OpenSim.world
AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
mov.AgentData.SessionID = this.ControllingClient.SessionID;
mov.AgentData.AgentID = this.ControllingClient.AgentID;
mov.Data.RegionHandle = OpenSimMain.Instance.Cfg.RegionHandle;
mov.Data.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle;
// TODO - dynamicalise this stuff
mov.Data.Timestamp = 1172750370;
mov.Data.Position = new LLVector3(100f, 100f, 23f);
@ -156,7 +156,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 = OpenSimMain.Instance.Cfg.RegionHandle;
objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle;
objupdate.RegionData.TimeDilation = 64096;
objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
@ -171,9 +171,9 @@ namespace OpenSim.world
byte[] pb = pos2.GetBytes();
Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
OpenSimMain.Instance.LocalWorld._localNumber++;
OpenSimRoot.Instance.LocalWorld._localNumber++;
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(objupdate);
if (client.AgentID != ControllingClient.AgentID)
@ -215,7 +215,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 = OpenSimMain.Instance.Cfg.RegionHandle;
objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle;
objupdate.RegionData.TimeDilation = 64096;
objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
@ -394,7 +394,7 @@ namespace OpenSim.world
handshake.RegionInfo.SimAccess = 13;
handshake.RegionInfo.WaterHeight = 20;
handshake.RegionInfo.RegionFlags = 72458694;
handshake.RegionInfo.SimName = _enc.GetBytes(OpenSimMain.Instance.Cfg.RegionName + "\0");
handshake.RegionInfo.SimName = _enc.GetBytes(OpenSimRoot.Instance.Cfg.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");

View File

@ -99,7 +99,7 @@ namespace OpenSim.world
{
if (this.newPrimFlag)
{
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(OurPacket);
}
@ -108,11 +108,11 @@ namespace OpenSim.world
else if (this.updateFlag)
{
ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
terse.RegionData.RegionHandle = OpenSimMain.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.TimeDilation = 64096;
terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
terse.ObjectData[0] = this.CreateImprovedBlock();
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(terse);
}
@ -120,7 +120,7 @@ namespace OpenSim.world
}
else if (this.dirtyFlag)
{
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
UpdateClient(client);
}
@ -131,11 +131,11 @@ namespace OpenSim.world
if (this._physActor != null && this.physicsEnabled)
{
ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
terse.RegionData.RegionHandle = OpenSimMain.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle; // FIXME
terse.RegionData.TimeDilation = 64096;
terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
terse.ObjectData[0] = this.CreateImprovedBlock();
foreach (SimClient client in OpenSimMain.Instance.ClientThreads.Values)
foreach (SimClient client in OpenSimRoot.Instance.ClientThreads.Values)
{
client.OutPacket(terse);
}
@ -254,7 +254,7 @@ namespace OpenSim.world
public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID)
{
ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
objupdate.RegionData.RegionHandle = OpenSimMain.Instance.Cfg.RegionHandle;
objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle;
objupdate.RegionData.TimeDilation = 64096;
objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
@ -322,7 +322,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 = OpenSimMain.Instance.Cfg.RegionHandle;
objupdate.RegionData.RegionHandle = OpenSimRoot.Instance.Cfg.RegionHandle;
objupdate.RegionData.TimeDilation = 64096;
objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
@ -478,7 +478,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);
OpenSimMain.Instance.LocalWorld.localStorage.StorePrim(this.primData);
OpenSimRoot.Instance.LocalWorld.localStorage.StorePrim(this.primData);
}
}

View File

@ -114,9 +114,9 @@ namespace OpenSim.world
HeightmapGenHills hills = new HeightmapGenHills();
this.LandMap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false);
this.phyScene.SetTerrain(this.LandMap);
OpenSimMain.Instance.Cfg.SaveMap(this.LandMap);
OpenSimRoot.Instance.Cfg.SaveMap(this.LandMap);
foreach(SimClient client in OpenSimMain.Instance.ClientThreads.Values) {
foreach(SimClient client in OpenSimRoot.Instance.ClientThreads.Values) {
this.SendLayerData(client);
}
}