Gird mode in sugilite should now work in so far as you should be able to login and move between regions in the same instance. Moving to regions in a different instance of opensim still needs implementing (working on it now).
Also trying to look at the map in grid mode will crash the server.Sugilite
parent
9f5f65c847
commit
7f03246653
|
@ -31,6 +31,7 @@ using libsecondlife.Packets;
|
|||
using OpenSim.Framework.Data;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Types;
|
||||
using OpenSim.Framework.Servers;
|
||||
|
||||
namespace OpenSim.Framework.Communications
|
||||
{
|
||||
|
@ -42,7 +43,7 @@ namespace OpenSim.Framework.Communications
|
|||
public IInterRegionCommunications InterRegion;
|
||||
|
||||
public NetworkServersInfo ServersInfo;
|
||||
public CommunicationsManager(NetworkServersInfo serversInfo)
|
||||
public CommunicationsManager(NetworkServersInfo serversInfo, BaseHttpServer httpServer)
|
||||
{
|
||||
ServersInfo = serversInfo;
|
||||
}
|
||||
|
|
|
@ -80,6 +80,10 @@ namespace OpenSim.Framework.Data
|
|||
public uint serverPort;
|
||||
public string serverURI = "";
|
||||
|
||||
public uint httpPort;
|
||||
public uint remotingPort;
|
||||
public string httpServerURI = "";
|
||||
|
||||
/// <summary>
|
||||
/// Set of optional overrides. Can be used to create non-eulicidean spaces.
|
||||
/// </summary>
|
||||
|
@ -143,7 +147,10 @@ namespace OpenSim.Framework.Data
|
|||
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
||||
simData.serverIP = (string)responseData["sim_ip"];
|
||||
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
||||
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
||||
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
||||
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
||||
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
||||
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
||||
simData.regionName = (string)responseData["region_name"];
|
||||
|
||||
|
@ -172,6 +179,9 @@ namespace OpenSim.Framework.Data
|
|||
simData.regionHandle = Helpers.UIntsToLong((simData.regionLocX * 256), (simData.regionLocY * 256));
|
||||
simData.serverIP = (string)responseData["sim_ip"];
|
||||
simData.serverPort = Convert.ToUInt32((string)responseData["sim_port"]);
|
||||
simData.httpPort = Convert.ToUInt32((string)responseData["http_port"]);
|
||||
simData.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
|
||||
simData.httpServerURI = "http://" + simData.serverIP + ":" + simData.httpPort.ToString() + "/";
|
||||
simData.serverURI = "http://" + simData.serverIP + ":" + simData.serverPort.ToString() + "/";
|
||||
simData.UUID = new LLUUID((string)responseData["region_UUID"]);
|
||||
simData.regionName = (string)responseData["region_name"];
|
||||
|
|
|
@ -261,12 +261,16 @@ namespace OpenSim.Grid.GridServer
|
|||
|
||||
TheSim.serverIP = (string)requestData["sim_ip"];
|
||||
TheSim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
|
||||
TheSim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
|
||||
TheSim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
|
||||
TheSim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
|
||||
TheSim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
|
||||
TheSim.regionLocZ = 0;
|
||||
|
||||
TheSim.regionHandle = Helpers.UIntsToLong((TheSim.regionLocX * 256), (TheSim.regionLocY * 256));
|
||||
System.Console.WriteLine("adding region " + TheSim.regionLocX + " , " + TheSim.regionLocY + " , " + TheSim.regionHandle);
|
||||
TheSim.serverURI = "http://" + TheSim.serverIP + ":" + TheSim.serverPort + "/";
|
||||
TheSim.httpServerURI = "http://" + TheSim.serverIP + ":" + TheSim.httpPort + "/";
|
||||
|
||||
Console.WriteLine("NEW SIM: " + TheSim.serverURI);
|
||||
TheSim.regionName = (string)requestData["sim_name"];
|
||||
|
@ -400,6 +404,8 @@ namespace OpenSim.Grid.GridServer
|
|||
{
|
||||
responseData["sim_ip"] = simData.serverIP;
|
||||
responseData["sim_port"] = simData.serverPort.ToString();
|
||||
responseData["http_port"] = simData.httpPort.ToString();
|
||||
responseData["remoting_port"] = simData.remotingPort.ToString();
|
||||
responseData["region_locx"] = simData.regionLocX.ToString() ;
|
||||
responseData["region_locy"] = simData.regionLocY.ToString();
|
||||
responseData["region_UUID"] = simData.UUID.UUID.ToString();
|
||||
|
@ -438,7 +444,7 @@ namespace OpenSim.Grid.GridServer
|
|||
response.Value = responseData;
|
||||
IList simProfileList = new ArrayList();
|
||||
|
||||
bool fastMode = true; // MySQL Only
|
||||
bool fastMode = false; // MySQL Only
|
||||
|
||||
if (fastMode)
|
||||
{
|
||||
|
@ -449,6 +455,7 @@ namespace OpenSim.Grid.GridServer
|
|||
Hashtable simProfileBlock = new Hashtable();
|
||||
simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
|
||||
simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
|
||||
System.Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " + aSim.Value.regionLocY.ToString());
|
||||
simProfileBlock["name"] = aSim.Value.regionName;
|
||||
simProfileBlock["access"] = 21;
|
||||
simProfileBlock["region-flags"] = 512;
|
||||
|
@ -470,11 +477,12 @@ namespace OpenSim.Grid.GridServer
|
|||
else
|
||||
{
|
||||
SimProfileData simProfile;
|
||||
for (int x = xmin; x < xmax; x++)
|
||||
for (int x = xmin; x < xmax+1; x++)
|
||||
{
|
||||
for (int y = ymin; y < ymax; y++)
|
||||
for (int y = ymin; y < ymax+1; y++)
|
||||
{
|
||||
simProfile = getRegion(Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256)));
|
||||
ulong regHandle = Helpers.UIntsToLong((uint)(x * 256), (uint)(y * 256));
|
||||
simProfile = getRegion(regHandle);
|
||||
if (simProfile != null)
|
||||
{
|
||||
Hashtable simProfileBlock = new Hashtable();
|
||||
|
|
|
@ -85,9 +85,10 @@ namespace OpenSim.Grid.UserServer
|
|||
theUser.currentAgent.currentRegion = SimInfo.UUID;
|
||||
theUser.currentAgent.currentHandle = SimInfo.regionHandle;
|
||||
|
||||
System.Console.WriteLine("sending reply");
|
||||
// Send
|
||||
XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
|
||||
XmlRpcResponse GridResp = GridReq.Send(SimInfo.serverURI, 3000);
|
||||
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 3000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,17 +93,17 @@ namespace OpenSim
|
|||
|
||||
ClientView.TerrainManager = new TerrainManager(new SecondLife());
|
||||
|
||||
this.SetupHttpListener();
|
||||
|
||||
if (m_sandbox)
|
||||
{
|
||||
this.SetupLocalGridServers();
|
||||
// this.checkServer = new CheckSumServer(12036);
|
||||
// this.checkServer.ServerListener();
|
||||
this.commsManager = new CommunicationsLocal(this.serversData);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SetupRemoteGridServers();
|
||||
this.commsManager = new CommunicationsOGS1(this.serversData);
|
||||
}
|
||||
|
||||
startuptime = DateTime.Now;
|
||||
|
@ -111,14 +111,10 @@ namespace OpenSim
|
|||
this.physManager = new PhysicsManager();
|
||||
this.physManager.LoadPlugins();
|
||||
|
||||
this.SetupHttpListener();
|
||||
|
||||
this.SetupWorld();
|
||||
|
||||
m_log.Verbose("Main.cs:Startup() - Initialising HTTP server");
|
||||
|
||||
|
||||
|
||||
if (m_sandbox)
|
||||
{
|
||||
httpServer.AddXmlRPCHandler("login_to_simulator", ((CommunicationsLocal)this.commsManager).UserServices.XmlRpcLoginMethod);
|
||||
|
@ -143,6 +139,7 @@ namespace OpenSim
|
|||
{
|
||||
AssetCache = new AssetCache("OpenSim.Region.GridInterfaces.Local.dll", this.serversData.AssetURL, this.serversData.AssetSendKey);
|
||||
InventoryCache = new InventoryCache();
|
||||
this.commsManager = new CommunicationsLocal(this.serversData, httpServer);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -156,8 +153,9 @@ namespace OpenSim
|
|||
{
|
||||
try
|
||||
{
|
||||
AssetCache = new AssetCache("OpenSim.Region.GridInterfaces.Remote.dll", this.serversData.AssetURL, this.serversData.AssetSendKey);
|
||||
AssetCache = new AssetCache("OpenSim.Region.GridInterfaces.Local.dll", this.serversData.AssetURL, this.serversData.AssetSendKey);
|
||||
InventoryCache = new InventoryCache();
|
||||
this.commsManager = new CommunicationsOGS1(this.serversData, httpServer);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -41,7 +41,6 @@ namespace OpenSim.Region.ClientStack
|
|||
protected override void ProcessInPacket(Packet Pack)
|
||||
{
|
||||
ack_pack(Pack);
|
||||
debug = true;
|
||||
if (debug)
|
||||
{
|
||||
if (Pack.Type != PacketType.AgentUpdate)
|
||||
|
|
|
@ -71,7 +71,8 @@ namespace OpenSim.Region.ClientStack
|
|||
// Keep track of when this packet was sent out
|
||||
Pack.TickCount = Environment.TickCount;
|
||||
|
||||
Console.WriteLine("OUT: " + Pack.Type.ToString());
|
||||
|
||||
// Console.WriteLine("OUT: " + Pack.Type.ToString());
|
||||
|
||||
if (!Pack.Header.Resent)
|
||||
{
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Types;
|
||||
using OpenSim.Framework.Servers;
|
||||
|
||||
namespace OpenSim.Region.Communications.Local
|
||||
{
|
||||
|
@ -35,8 +36,8 @@ namespace OpenSim.Region.Communications.Local
|
|||
public LocalBackEndServices SandBoxServices = new LocalBackEndServices();
|
||||
public LocalUserServices UserServices;
|
||||
|
||||
public CommunicationsLocal(NetworkServersInfo serversInfo)
|
||||
: base(serversInfo)
|
||||
public CommunicationsLocal(NetworkServersInfo serversInfo, BaseHttpServer httpServer )
|
||||
: base(serversInfo, httpServer)
|
||||
{
|
||||
UserServices = new LocalUserServices(this, serversInfo);
|
||||
UserServices.AddPlugin("OpenSim.Framework.Data.DB4o.dll");
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Types;
|
||||
using OpenSim.Framework.Servers;
|
||||
|
||||
namespace OpenSim.Region.Communications.OGS1
|
||||
{
|
||||
public class CommunicationsOGS1 : CommunicationsManager
|
||||
{
|
||||
|
||||
public CommunicationsOGS1(NetworkServersInfo serversInfo) :base(serversInfo)
|
||||
public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer ) :base(serversInfo, httpServer)
|
||||
{
|
||||
OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo);
|
||||
OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer);
|
||||
GridServer = gridInterComms;
|
||||
InterRegion = gridInterComms;
|
||||
UserServer = new OGS1UserServices(this);
|
||||
|
|
|
@ -18,40 +18,50 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
public class OGS1GridServices : IGridServices, IInterRegionCommunications
|
||||
{
|
||||
public Dictionary<ulong, RegionCommsListener> listeners = new Dictionary<ulong, RegionCommsListener>();
|
||||
protected Dictionary<ulong, RegionInfo> regions = new Dictionary<ulong, RegionInfo>();
|
||||
|
||||
public BaseHttpServer httpListener;
|
||||
public NetworkServersInfo serversInfo;
|
||||
public BaseHttpServer httpServer;
|
||||
|
||||
public OGS1GridServices(NetworkServersInfo servers_info)
|
||||
public OGS1GridServices(NetworkServersInfo servers_info, BaseHttpServer httpServe)
|
||||
{
|
||||
serversInfo = servers_info;
|
||||
httpServer = httpServe;
|
||||
httpServer.AddXmlRPCHandler("expect_user", this.ExpectUser);
|
||||
}
|
||||
|
||||
public RegionCommsListener RegisterRegion(RegionInfo regionInfo)
|
||||
{
|
||||
if (!this.regions.ContainsKey((uint)regionInfo.RegionHandle))
|
||||
{
|
||||
this.regions.Add(regionInfo.RegionHandle, regionInfo);
|
||||
}
|
||||
|
||||
Hashtable GridParams = new Hashtable();
|
||||
|
||||
|
||||
// Login / Authentication
|
||||
|
||||
GridParams["authkey"] = serversInfo.GridSendKey;
|
||||
|
||||
GridParams["authkey"] = serversInfo.GridSendKey;
|
||||
GridParams["UUID"] = regionInfo.SimUUID.ToStringHyphenated();
|
||||
GridParams["sim_ip"] = regionInfo.ExternalHostName;
|
||||
GridParams["sim_port"] = regionInfo.InternalEndPoint.Port.ToString();
|
||||
GridParams["region_locx"] = regionInfo.RegionLocX.ToString();
|
||||
GridParams["region_locy"] = regionInfo.RegionLocY.ToString();
|
||||
GridParams["sim_name"] = regionInfo.RegionName;
|
||||
GridParams["http_port"] = serversInfo.HttpListenerPort.ToString();
|
||||
GridParams["remoting_port"] = serversInfo.RemotingListenerPort.ToString();
|
||||
|
||||
// Package into an XMLRPC Request
|
||||
ArrayList SendParams = new ArrayList();
|
||||
ArrayList SendParams = new ArrayList();
|
||||
SendParams.Add(GridParams);
|
||||
|
||||
|
||||
|
||||
// Send Request
|
||||
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams);
|
||||
XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 3000);
|
||||
Hashtable GridRespData = (Hashtable)GridResp.Value;
|
||||
|
||||
|
||||
Hashtable griddatahash = GridRespData;
|
||||
|
||||
// Process Response
|
||||
|
@ -60,25 +70,34 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
string errorstring = (string)GridRespData["error"];
|
||||
MainLog.Instance.Error("Unable to connect to grid: " + errorstring);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!this.listeners.ContainsKey(regionInfo.RegionHandle))
|
||||
{
|
||||
MainLog.Instance.Verbose("OGS1 - Registering new HTTP listener on port " + regionInfo.InternalEndPoint.Port.ToString());
|
||||
// initialised = true;
|
||||
httpListener = new BaseHttpServer( regionInfo.InternalEndPoint.Port );
|
||||
httpListener.AddXmlRPCHandler("expect_user", this.ExpectUser);
|
||||
httpListener.Start();
|
||||
}
|
||||
|
||||
// Initialise the background listeners
|
||||
listeners[regionInfo.RegionHandle] = new RegionCommsListener();
|
||||
/* if (!this.listeners.ContainsKey(regionInfo.RegionHandle))
|
||||
{
|
||||
MainLog.Instance.Verbose("OGS1 - Registering new HTTP listener on port " + regionInfo.InternalEndPoint.Port.ToString());
|
||||
// initialised = true;
|
||||
httpListener = new BaseHttpServer( regionInfo.InternalEndPoint.Port );
|
||||
httpListener.AddXmlRPCHandler("expect_user", this.ExpectUser);
|
||||
httpListener.Start();
|
||||
}*/
|
||||
|
||||
return listeners[regionInfo.RegionHandle];
|
||||
// Initialise the background listeners
|
||||
RegionCommsListener regListener = new RegionCommsListener();
|
||||
if (this.listeners.ContainsKey(regionInfo.RegionHandle))
|
||||
{
|
||||
this.listeners.Add(regionInfo.RegionHandle, regListener);
|
||||
}
|
||||
else
|
||||
{
|
||||
listeners[regionInfo.RegionHandle] = regListener;
|
||||
}
|
||||
|
||||
return regListener;
|
||||
}
|
||||
|
||||
public List<RegionInfo> RequestNeighbours(RegionInfo regionInfo)
|
||||
{
|
||||
|
||||
Hashtable respData = MapBlockQuery((int)regionInfo.RegionLocX - 1, (int)regionInfo.RegionLocY - 1, (int)regionInfo.RegionLocX + 1, (int)regionInfo.RegionLocY + 1);
|
||||
|
||||
List<RegionInfo> neighbours = new List<RegionInfo>();
|
||||
|
@ -87,24 +106,28 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
{
|
||||
foreach (Hashtable n in a)
|
||||
{
|
||||
string internalIpStr = (string)n["sim_ip"];
|
||||
int port = (int)n["sim_port"];
|
||||
string externalUri = (string)n["sim_uri"];
|
||||
uint regX = Convert.ToUInt32(n["x"]);
|
||||
uint regY = Convert.ToUInt32(n["y"]);
|
||||
if ((regionInfo.RegionLocX != regX) || (regionInfo.RegionLocY != regY))
|
||||
{
|
||||
string internalIpStr = (string)n["sim_ip"];
|
||||
uint port = Convert.ToUInt32(n["sim_port"]);
|
||||
string externalUri = (string)n["sim_uri"];
|
||||
|
||||
IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), port);
|
||||
string neighbourExternalUri = externalUri;
|
||||
IPEndPoint neighbourInternalEndPoint = new IPEndPoint(IPAddress.Parse(internalIpStr), (int)port);
|
||||
string neighbourExternalUri = externalUri;
|
||||
RegionInfo neighbour = new RegionInfo(regX, regY, neighbourInternalEndPoint, internalIpStr);
|
||||
|
||||
RegionInfo neighbour = new RegionInfo((uint)n["x"], (uint)n["y"], neighbourInternalEndPoint, neighbourExternalUri);
|
||||
//OGS1
|
||||
//neighbour.RegionHandle = (ulong)n["regionhandle"]; is now calculated locally
|
||||
|
||||
//OGS1
|
||||
//neighbour.RegionHandle = (ulong)n["regionhandle"]; is now calculated locally
|
||||
neighbour.RegionName = (string)n["name"];
|
||||
|
||||
neighbour.RegionName = (string)n["name"];
|
||||
//OGS1+
|
||||
neighbour.SimUUID = (string)n["uuid"];
|
||||
|
||||
//OGS1+
|
||||
neighbour.SimUUID = (string)n["uuid"];
|
||||
|
||||
neighbours.Add(neighbour);
|
||||
neighbours.Add(neighbour);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,6 +136,11 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
|
||||
public RegionInfo RequestNeighbourInfo(ulong regionHandle)
|
||||
{
|
||||
if (this.regions.ContainsKey(regionHandle))
|
||||
{
|
||||
return this.regions[regionHandle];
|
||||
}
|
||||
//TODO not a region in this instance so ask remote grid server
|
||||
MainLog.Instance.Warn("Unimplemented - RequestNeighbourInfo()");
|
||||
return null;
|
||||
}
|
||||
|
@ -209,7 +237,7 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
TcpChannel ch = new TcpChannel(8895);
|
||||
ChannelServices.RegisterChannel(ch, true);
|
||||
|
||||
WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry( Type.GetType("OGS1InterRegionRemoting"), "InterRegions", WellKnownObjectMode.Singleton);
|
||||
WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry(Type.GetType("OGS1InterRegionRemoting"), "InterRegions", WellKnownObjectMode.Singleton);
|
||||
RemotingConfiguration.RegisterWellKnownServiceType(wellType);
|
||||
InterRegionSingleton.Instance.OnArrival += this.IncomingArrival;
|
||||
InterRegionSingleton.Instance.OnChildAgent += this.IncomingChildAgent;
|
||||
|
@ -225,6 +253,7 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
}
|
||||
//TODO need to see if we know about where this region is and use .net remoting
|
||||
// to inform it.
|
||||
Console.WriteLine("Inform remote region of child agent not implemented yet");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ namespace OpenSim.Region.Communications.OGS1
|
|||
}
|
||||
public UserProfileData GetUserProfile(string name)
|
||||
{
|
||||
|
||||
//try
|
||||
//{
|
||||
Hashtable param = new Hashtable();
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
protected Quaternion m_rotation = new Quaternion(0,0,1,0);
|
||||
|
||||
public virtual Quaternion rotation
|
||||
public virtual Quaternion Rotation
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -86,7 +86,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
m_pos = new LLVector3();
|
||||
m_velocity = new LLVector3();
|
||||
rotation = new Quaternion();
|
||||
Rotation = new Quaternion();
|
||||
m_name = "(basic entity)";
|
||||
children = new List<EntityBase>();
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
Primitive parentPrim = (Primitive)this.m_Parent;
|
||||
Axiom.Math.Vector3 offsetPos = new Vector3(this.m_pos.X, this.m_pos.Y, this.m_pos.Z);
|
||||
offsetPos = parentPrim.rotation * offsetPos;
|
||||
offsetPos = parentPrim.Rotation * offsetPos;
|
||||
return parentPrim.WorldPos + new LLVector3(offsetPos.x, offsetPos.y, offsetPos.z);
|
||||
}
|
||||
else
|
||||
|
@ -139,7 +139,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
this.m_isRootPrim = isRoot;
|
||||
this.m_RootParent = rootObject;
|
||||
this.CreateFromPacket(addPacket, ownerID, localID);
|
||||
this.rotation = Axiom.Math.Quaternion.Identity;
|
||||
this.Rotation = Axiom.Math.Quaternion.Identity;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -169,7 +169,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
dupe.LocalId = newLocalID;
|
||||
|
||||
dupe.Scale = new LLVector3(this.Scale.X, this.Scale.Y, this.Scale.Z);
|
||||
dupe.rotation = new Quaternion(this.rotation.w, this.rotation.x, this.rotation.y, this.rotation.z);
|
||||
dupe.Rotation = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z);
|
||||
dupe.Pos = new LLVector3(this.Pos.X, this.Pos.Y, this.Pos.Z);
|
||||
|
||||
return dupe;
|
||||
|
@ -278,10 +278,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
this.m_RootParent.AddChildToList(this);
|
||||
this.Pos = oldPos;
|
||||
Axiom.Math.Vector3 axPos = new Axiom.Math.Vector3(this.m_pos.X, m_pos.Y, m_pos.Z);
|
||||
axPos = this.m_Parent.rotation.Inverse() * axPos;
|
||||
axPos = this.m_Parent.Rotation.Inverse() * axPos;
|
||||
this.m_pos = new LLVector3(axPos.x, axPos.y, axPos.z);
|
||||
Axiom.Math.Quaternion oldRot = new Quaternion(this.rotation.w, this.rotation.x, this.rotation.y, this.rotation.z);
|
||||
this.rotation = this.m_Parent.rotation.Inverse() * this.rotation;
|
||||
Axiom.Math.Quaternion oldRot = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z);
|
||||
this.Rotation = this.m_Parent.Rotation.Inverse() * this.Rotation;
|
||||
this.updateFlag = 1;
|
||||
|
||||
foreach (Primitive child in children)
|
||||
|
@ -304,7 +304,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
axOldPos = oldParentRotation * axOldPos;
|
||||
oldPos = new LLVector3(axOldPos.x, axOldPos.y, axOldPos.z);
|
||||
oldPos += oldParentPosition;
|
||||
Axiom.Math.Quaternion oldRot = new Quaternion(this.rotation.w, this.rotation.x, this.rotation.y, this.rotation.z);
|
||||
Axiom.Math.Quaternion oldRot = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z);
|
||||
this.m_isRootPrim = false;
|
||||
this.m_Parent = newParent;
|
||||
this.ParentID = newParent.LocalId;
|
||||
|
@ -313,10 +313,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
this.m_RootParent.AddChildToList(this);
|
||||
this.Pos = oldPos;
|
||||
Axiom.Math.Vector3 axPos = new Axiom.Math.Vector3(this.m_pos.X, m_pos.Y, m_pos.Z);
|
||||
axPos = this.m_Parent.rotation.Inverse() * axPos;
|
||||
axPos = this.m_Parent.Rotation.Inverse() * axPos;
|
||||
this.m_pos = new LLVector3(axPos.x, axPos.y, axPos.z);
|
||||
this.rotation = oldParentRotation * this.rotation;
|
||||
this.rotation = this.m_Parent.rotation.Inverse()* this.rotation ;
|
||||
this.Rotation = oldParentRotation * this.Rotation;
|
||||
this.Rotation = this.m_Parent.Rotation.Inverse()* this.Rotation ;
|
||||
this.updateFlag = 1;
|
||||
foreach (Primitive child in children)
|
||||
{
|
||||
|
@ -401,7 +401,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
LLVector3 oldPos = new LLVector3(Pos.X, Pos.Y, Pos.Z);
|
||||
LLVector3 diff = oldPos - newPos;
|
||||
Axiom.Math.Vector3 axDiff = new Vector3(diff.X, diff.Y, diff.Z);
|
||||
axDiff = this.rotation.Inverse() * axDiff;
|
||||
axDiff = this.Rotation.Inverse() * axDiff;
|
||||
diff.X = axDiff.x;
|
||||
diff.Y = axDiff.y;
|
||||
diff.Z = axDiff.z;
|
||||
|
@ -431,7 +431,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// <param name="rot"></param>
|
||||
public void UpdateGroupRotation(LLQuaternion rot)
|
||||
{
|
||||
this.rotation = new Axiom.Math.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
|
||||
this.Rotation = new Axiom.Math.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
|
||||
this.updateFlag = 2;
|
||||
|
||||
}
|
||||
|
@ -443,7 +443,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// <param name="rot"></param>
|
||||
public void UpdateGroupMouseRotation(LLVector3 pos, LLQuaternion rot)
|
||||
{
|
||||
this.rotation = new Axiom.Math.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
|
||||
this.Rotation = new Axiom.Math.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
|
||||
this.Pos = pos;
|
||||
this.updateFlag = 2;
|
||||
}
|
||||
|
@ -456,16 +456,16 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
//Console.WriteLine("updating single prim rotation");
|
||||
Axiom.Math.Quaternion axRot = new Axiom.Math.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
|
||||
Axiom.Math.Quaternion oldParentRot = new Quaternion(this.rotation.w, this.rotation.x, this.rotation.y, this.rotation.z);
|
||||
this.rotation = axRot;
|
||||
Axiom.Math.Quaternion oldParentRot = new Quaternion(this.Rotation.w, this.Rotation.x, this.Rotation.y, this.Rotation.z);
|
||||
this.Rotation = axRot;
|
||||
foreach (Primitive prim in this.children)
|
||||
{
|
||||
Axiom.Math.Vector3 axPos = new Vector3(prim.m_pos.X, prim.m_pos.Y, prim.m_pos.Z);
|
||||
axPos = oldParentRot * axPos;
|
||||
axPos = axRot.Inverse() * axPos;
|
||||
prim.m_pos = new LLVector3(axPos.x, axPos.y, axPos.z);
|
||||
prim.rotation = oldParentRot * prim.rotation ;
|
||||
prim.rotation = axRot.Inverse()* prim.rotation;
|
||||
prim.Rotation = oldParentRot * prim.Rotation ;
|
||||
prim.Rotation = axRot.Inverse()* prim.Rotation;
|
||||
prim.updateFlag = 2;
|
||||
}
|
||||
this.updateFlag = 2;
|
||||
|
@ -528,7 +528,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
LLVector3 lPos;
|
||||
lPos = this.Pos;
|
||||
LLQuaternion lRot;
|
||||
lRot = new LLQuaternion(this.rotation.x, this.rotation.y, this.rotation.z, this.rotation.w);
|
||||
lRot = new LLQuaternion(this.Rotation.x, this.Rotation.y, this.Rotation.z, this.Rotation.w);
|
||||
|
||||
remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.m_Shape, lPos, lRot, new LLUUID("00000000-0000-0000-9999-000000000005"), this.m_flags, this.uuid, this.OwnerID, this.Text, this.ParentID);
|
||||
}
|
||||
|
@ -571,7 +571,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
Quaternion lRot;
|
||||
|
||||
lPos = this.Pos;
|
||||
lRot = this.rotation;
|
||||
lRot = this.Rotation;
|
||||
|
||||
LLQuaternion mRot = new LLQuaternion(lRot.x, lRot.y, lRot.z, lRot.w);
|
||||
RemoteClient.SendPrimTerseUpdate(this.m_regionHandle, 64096, this.LocalId, lPos, mRot);
|
||||
|
|
|
@ -445,7 +445,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
else
|
||||
{
|
||||
lPos = this.Pos;
|
||||
lRot = this.rotation;
|
||||
lRot = this.Rotation;
|
||||
}
|
||||
LLQuaternion mRot = new LLQuaternion(lRot.x, lRot.y, lRot.z, lRot.w);
|
||||
RemoteClient.SendPrimTerseUpdate(this.m_regionHandle, 64096, this.LocalId, lPos, mRot);
|
||||
|
|
|
@ -164,7 +164,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
case 1: // Say
|
||||
if ((dis < 30) && (dis > -30))
|
||||
{
|
||||
Console.WriteLine("sending chat");
|
||||
//Console.WriteLine("sending chat");
|
||||
client.SendChatMessage(message, type, fromPos, fromName,
|
||||
fromAgentID);
|
||||
}
|
||||
|
|
|
@ -685,15 +685,12 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// </summary>
|
||||
public void InformClientOfNeighbours(IClientAPI remoteClient)
|
||||
{
|
||||
// Console.WriteLine("informing client of neighbouring regions");
|
||||
List<RegionInfo> neighbours = this.commsManager.GridServer.RequestNeighbours(this.m_regInfo);
|
||||
|
||||
//Console.WriteLine("we have " + neighbours.Count + " neighbouring regions");
|
||||
if (neighbours != null)
|
||||
{
|
||||
for (int i = 0; i < neighbours.Count; i++)
|
||||
{
|
||||
// Console.WriteLine("sending neighbours data");
|
||||
AgentCircuitData agent = remoteClient.RequestClientInfo();
|
||||
agent.BaseFolder = LLUUID.Zero;
|
||||
agent.InventoryFolder = LLUUID.Zero;
|
||||
|
|
|
@ -124,7 +124,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
Wearables = AvatarWearable.DefaultWearables;
|
||||
Animations = new ScenePresence.AvatarAnimations();
|
||||
Animations.LoadAnims();
|
||||
|
||||
|
||||
this.avatarAppearanceTexture = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
|
||||
|
||||
//register for events
|
||||
|
@ -160,7 +160,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
this.Velocity = new LLVector3(0, 0, 0);
|
||||
this.Pos = new LLVector3(128, 128, 70);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -276,25 +276,31 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
this.AddNewMovement(agent_control_v3, q);
|
||||
}
|
||||
UpdateMovementAnimations(update_movementflag);
|
||||
UpdateMovementAnimations(update_movementflag);
|
||||
}
|
||||
|
||||
protected void UpdateMovementAnimations(bool update_movementflag)
|
||||
{
|
||||
if (update_movementflag)
|
||||
{
|
||||
if (movementflag != 0) {
|
||||
if (this._physActor.Flying) {
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["FLY"], 1);
|
||||
} else {
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["WALK"], 1);
|
||||
}
|
||||
} else {
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["STAND"], 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
protected void UpdateMovementAnimations(bool update_movementflag)
|
||||
{
|
||||
if (update_movementflag)
|
||||
{
|
||||
if (movementflag != 0)
|
||||
{
|
||||
if (this._physActor.Flying)
|
||||
{
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["FLY"], 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["WALK"], 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.SendAnimPack(Animations.AnimsLLUUID["STAND"], 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected void AddNewMovement(Vector3 vec, Quaternion rotation)
|
||||
|
@ -423,13 +429,13 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// <param name="seq"></param>
|
||||
public void SendAnimPack(LLUUID animID, int seq)
|
||||
{
|
||||
this.current_anim = animID;
|
||||
this.anim_seq = anim_seq;
|
||||
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
|
||||
for (int i = 0; i < avatars.Count; i++)
|
||||
{
|
||||
avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId);
|
||||
}
|
||||
this.current_anim = animID;
|
||||
this.anim_seq = anim_seq;
|
||||
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
|
||||
for (int i = 0; i < avatars.Count; i++)
|
||||
{
|
||||
avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -437,7 +443,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// </summary>
|
||||
public void SendAnimPack()
|
||||
{
|
||||
this.SendAnimPack(this.current_anim, this.anim_seq);
|
||||
this.SendAnimPack(this.current_anim, this.anim_seq);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -506,7 +512,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
if (res)
|
||||
{
|
||||
this.MakeChildAgent();
|
||||
this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.InternalEndPoint );
|
||||
this.ControllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.InternalEndPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,13 +47,13 @@ namespace SimpleApp
|
|||
udpServer.ServerListener();
|
||||
|
||||
ClientView.TerrainManager = new TerrainManager(new SecondLife());
|
||||
BaseHttpServer httpServer = new BaseHttpServer(internalEndPoint.Port);
|
||||
|
||||
NetworkServersInfo serverInfo = new NetworkServersInfo();
|
||||
CommunicationsLocal communicationsManager = new CommunicationsLocal(serverInfo);
|
||||
CommunicationsLocal communicationsManager = new CommunicationsLocal(serverInfo, httpServer);
|
||||
|
||||
RegionInfo regionInfo = new RegionInfo( 1000, 1000, internalEndPoint, "127.0.0.1" );
|
||||
|
||||
BaseHttpServer httpServer = new BaseHttpServer( internalEndPoint.Port );
|
||||
MyWorld world = new MyWorld(packetServer.ClientManager, regionInfo, m_circuitManager, communicationsManager, assetCache, httpServer);
|
||||
world.PhysScene = PhysicsScene.Null;
|
||||
udpServer.LocalWorld = world;
|
||||
|
|
|
@ -512,6 +512,7 @@
|
|||
<Reference name="System.Xml"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
<Reference name="OpenSim.Framework.Data" />
|
||||
<Reference name="OpenSim.Framework.Servers"/>
|
||||
<Reference name="libsecondlife.dll"/>
|
||||
|
||||
<Files>
|
||||
|
@ -567,6 +568,7 @@
|
|||
<Reference name="OpenSim.Framework.Communications"/>
|
||||
<Reference name="OpenSim.Framework.UserManagement" />
|
||||
<Reference name="OpenSim.Framework.Data" />
|
||||
<Reference name="OpenSim.Framework.Servers"/>
|
||||
<Reference name="libsecondlife.dll"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
|
||||
|
|
Loading…
Reference in New Issue