diff options
author | gareth | 2007-04-15 02:31:34 +0000 |
---|---|---|
committer | gareth | 2007-04-15 02:31:34 +0000 |
commit | f9b7cc53deb93fc3528929385d3f76519083c927 (patch) | |
tree | ae3fbc308febed796772525be7d9a55e4ce24b8e | |
parent | In the grid, there is life! (diff) | |
download | opensim-SC-f9b7cc53deb93fc3528929385d3f76519083c927.zip opensim-SC-f9b7cc53deb93fc3528929385d3f76519083c927.tar.gz opensim-SC-f9b7cc53deb93fc3528929385d3f76519083c927.tar.bz2 opensim-SC-f9b7cc53deb93fc3528929385d3f76519083c927.tar.xz |
W00t! multiple sims!
Misc bugfixes
Child agents!!!!!!
General sexy stuff
-rw-r--r-- | OpenGridServices.GridServer/SimProfiles.cs | 4 | ||||
-rw-r--r-- | OpenSim.Framework/IGridServer.cs | 3 | ||||
-rw-r--r-- | OpenSim.Framework/RemoteGridBase.cs | 10 | ||||
-rw-r--r-- | OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs | 2 | ||||
-rw-r--r-- | OpenSim.GridInterfaces/Remote/RemoteGridServer.cs | 22 | ||||
-rw-r--r-- | OpenSim.RegionServer/OpenSimMain.cs | 61 | ||||
-rw-r--r-- | OpenSim.RegionServer/SimClient.cs | 32 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/AvatarUpdate.cs | 3 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/World.cs | 29 |
9 files changed, 129 insertions, 37 deletions
diff --git a/OpenGridServices.GridServer/SimProfiles.cs b/OpenGridServices.GridServer/SimProfiles.cs index 7fcfb8c..bd91d5b 100644 --- a/OpenGridServices.GridServer/SimProfiles.cs +++ b/OpenGridServices.GridServer/SimProfiles.cs | |||
@@ -158,13 +158,15 @@ namespace OpenGridServices.GridServer | |||
158 | if (GetProfileByHandle(Helpers.UIntsToLong((uint)((TheSim.RegionLocX + x) * 256), (uint)(TheSim.RegionLocY + y) * 256)) != null) | 158 | if (GetProfileByHandle(Helpers.UIntsToLong((uint)((TheSim.RegionLocX + x) * 256), (uint)(TheSim.RegionLocY + y) * 256)) != null) |
159 | { | 159 | { |
160 | neighbour = GetProfileByHandle(Helpers.UIntsToLong((uint)((TheSim.RegionLocX + x) * 256), (uint)(TheSim.RegionLocY + y) * 256)); | 160 | neighbour = GetProfileByHandle(Helpers.UIntsToLong((uint)((TheSim.RegionLocX + x) * 256), (uint)(TheSim.RegionLocY + y) * 256)); |
161 | |||
161 | NeighbourBlock = new Hashtable(); | 162 | NeighbourBlock = new Hashtable(); |
162 | NeighbourBlock["sim_ip"] = neighbour.sim_ip; | 163 | NeighbourBlock["sim_ip"] = neighbour.sim_ip; |
163 | NeighbourBlock["sim_port"] = neighbour.sim_port.ToString(); | 164 | NeighbourBlock["sim_port"] = neighbour.sim_port.ToString(); |
164 | NeighbourBlock["region_locx"] = neighbour.RegionLocX.ToString(); | 165 | NeighbourBlock["region_locx"] = neighbour.RegionLocX.ToString(); |
165 | NeighbourBlock["region_locy"] = neighbour.RegionLocY.ToString(); | 166 | NeighbourBlock["region_locy"] = neighbour.RegionLocY.ToString(); |
166 | NeighbourBlock["UUID"] = neighbour.UUID.ToString(); | 167 | NeighbourBlock["UUID"] = neighbour.UUID.ToString(); |
167 | SimNeighboursData.Add(NeighbourBlock); | 168 | |
169 | if(neighbour.UUID!=TheSim.UUID) SimNeighboursData.Add(NeighbourBlock); | ||
168 | } | 170 | } |
169 | } | 171 | } |
170 | 172 | ||
diff --git a/OpenSim.Framework/IGridServer.cs b/OpenSim.Framework/IGridServer.cs index 001ce3b..9c06a6b 100644 --- a/OpenSim.Framework/IGridServer.cs +++ b/OpenSim.Framework/IGridServer.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
30 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
31 | using System.Net; | 32 | using System.Net; |
32 | using System.Net.Sockets; | 33 | using System.Net.Sockets; |
@@ -50,7 +51,7 @@ namespace OpenSim.Framework.Interfaces | |||
50 | string GetName(); | 51 | string GetName(); |
51 | bool RequestConnection(LLUUID SimUUID, string sim_ip, uint sim_port); | 52 | bool RequestConnection(LLUUID SimUUID, string sim_ip, uint sim_port); |
52 | void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); | 53 | void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); |
53 | void Close(); | 54 | void Close(); |
54 | } | 55 | } |
55 | 56 | ||
56 | public struct UUIDBlock | 57 | public struct UUIDBlock |
diff --git a/OpenSim.Framework/RemoteGridBase.cs b/OpenSim.Framework/RemoteGridBase.cs index e1f0b9b..0b72b9f 100644 --- a/OpenSim.Framework/RemoteGridBase.cs +++ b/OpenSim.Framework/RemoteGridBase.cs | |||
@@ -1,4 +1,5 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections; | ||
2 | using System.Collections.Generic; | 3 | using System.Collections.Generic; |
3 | using System.Text; | 4 | using System.Text; |
4 | using libsecondlife; | 5 | using libsecondlife; |
@@ -21,5 +22,14 @@ namespace OpenSim.Framework.Interfaces | |||
21 | public abstract bool RequestConnection(LLUUID SimUUID, string sim_ip, uint sim_port); | 22 | public abstract bool RequestConnection(LLUUID SimUUID, string sim_ip, uint sim_port); |
22 | public abstract void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); | 23 | public abstract void SetServerInfo(string ServerUrl, string SendKey, string RecvKey); |
23 | public abstract void Close(); | 24 | public abstract void Close(); |
25 | public abstract Hashtable GridData { | ||
26 | get; | ||
27 | set; | ||
28 | } | ||
29 | |||
30 | public abstract ArrayList neighbours { | ||
31 | get; | ||
32 | set; | ||
33 | } | ||
24 | } | 34 | } |
25 | } | 35 | } |
diff --git a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs index 528e9fa..71fca57 100644 --- a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs +++ b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs | |||
@@ -65,7 +65,7 @@ namespace OpenSim.GridInterfaces.Remote | |||
65 | //we need to add support for the asset server not knowing about a requested asset | 65 | //we need to add support for the asset server not knowing about a requested asset |
66 | ARequest req = this._assetRequests.Dequeue(); | 66 | ARequest req = this._assetRequests.Dequeue(); |
67 | LLUUID assetID = req.AssetID; | 67 | LLUUID assetID = req.AssetID; |
68 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(" RemoteAssetServer- Got a AssetServer request, processing it"); | 68 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(" RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "getasset/" + AssetSendKey + "/" + assetID + "/data"); |
69 | WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "getasset/" + AssetSendKey + "/" + assetID + "/data"); | 69 | WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "getasset/" + AssetSendKey + "/" + assetID + "/data"); |
70 | WebResponse AssetResponse = AssetLoad.GetResponse(); | 70 | WebResponse AssetResponse = AssetLoad.GetResponse(); |
71 | byte[] idata = new byte[(int)AssetResponse.ContentLength]; | 71 | byte[] idata = new byte[(int)AssetResponse.ContentLength]; |
diff --git a/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs b/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs index d51d212..7cd68df 100644 --- a/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs +++ b/OpenSim.GridInterfaces/Remote/RemoteGridServer.cs | |||
@@ -44,13 +44,28 @@ namespace OpenSim.GridInterfaces.Remote | |||
44 | private string GridSendKey; | 44 | private string GridSendKey; |
45 | private string GridRecvKey; | 45 | private string GridRecvKey; |
46 | private Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>(); | 46 | private Dictionary<uint, AgentCircuitData> AgentCircuits = new Dictionary<uint, AgentCircuitData>(); |
47 | private ArrayList simneighbours = new ArrayList(); | ||
48 | private Hashtable griddatahash; | ||
47 | 49 | ||
48 | public override Dictionary<uint, AgentCircuitData> agentcircuits | 50 | public override Dictionary<uint, AgentCircuitData> agentcircuits |
49 | { | 51 | { |
50 | get { return AgentCircuits; } | 52 | get { return AgentCircuits; } |
51 | set { AgentCircuits = value; } | 53 | set { AgentCircuits = value; } |
52 | } | 54 | } |
55 | |||
56 | public override ArrayList neighbours | ||
57 | { | ||
58 | get { return simneighbours; } | ||
59 | set { simneighbours = value; } | ||
60 | } | ||
53 | 61 | ||
62 | public override Hashtable GridData | ||
63 | { | ||
64 | get { return griddatahash; } | ||
65 | set { griddatahash = value; } | ||
66 | } | ||
67 | |||
68 | |||
54 | public RemoteGridServer() | 69 | public RemoteGridServer() |
55 | { | 70 | { |
56 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Remote Grid Server class created"); | 71 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Remote Grid Server class created"); |
@@ -69,13 +84,16 @@ namespace OpenSim.GridInterfaces.Remote | |||
69 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); | 84 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); |
70 | XmlRpcResponse GridResp = GridReq.Send(this.GridServerUrl, 3000); | 85 | XmlRpcResponse GridResp = GridReq.Send(this.GridServerUrl, 3000); |
71 | Hashtable GridRespData = (Hashtable)GridResp.Value; | 86 | Hashtable GridRespData = (Hashtable)GridResp.Value; |
72 | 87 | this.griddatahash=GridRespData; | |
88 | |||
73 | if(GridRespData.ContainsKey("error")) { | 89 | if(GridRespData.ContainsKey("error")) { |
74 | string errorstring = (string)GridRespData["error"]; | 90 | string errorstring = (string)GridRespData["error"]; |
75 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Error connecting to grid:"); | 91 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Error connecting to grid:"); |
76 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(errorstring); | 92 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(errorstring); |
77 | return false; | 93 | return false; |
78 | } | 94 | } |
95 | this.neighbours = (ArrayList)GridRespData["neighbours"]; | ||
96 | Console.WriteLine(simneighbours.Count); | ||
79 | return true; | 97 | return true; |
80 | } | 98 | } |
81 | 99 | ||
diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs index 8c93128..f10ca34 100644 --- a/OpenSim.RegionServer/OpenSimMain.cs +++ b/OpenSim.RegionServer/OpenSimMain.cs | |||
@@ -48,7 +48,7 @@ using OpenSim.Framework.Console; | |||
48 | using OpenSim.Physics.Manager; | 48 | using OpenSim.Physics.Manager; |
49 | using Nwc.XmlRpc; | 49 | using Nwc.XmlRpc; |
50 | using OpenSim.Servers; | 50 | using OpenSim.Servers; |
51 | using OpenSim.GenericConfig; | 51 | using OpenSim.GenericConfig; |
52 | 52 | ||
53 | namespace OpenSim | 53 | namespace OpenSim |
54 | { | 54 | { |
@@ -164,6 +164,18 @@ namespace OpenSim | |||
164 | GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey); | 164 | GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey); |
165 | IGridServer gridServer = GridServers.GridServer; | 165 | IGridServer gridServer = GridServers.GridServer; |
166 | gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey); | 166 | gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey); |
167 | |||
168 | if(!m_sandbox) { | ||
169 | if(GridServers.GridServer.RequestConnection(regionData.SimUUID,regionData.IPListenAddr,(uint)regionData.IPListenPort)) { | ||
170 | m_console.WriteLine("Main.cs:Startup() - Got a grid connection OK!"); | ||
171 | } else { | ||
172 | m_console.WriteLine("AAAAAAAAAAAAARRRRRRRRRRGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!"); | ||
173 | m_console.WriteLine("I LOST MY GRID!!!!!!!!!!!!! AAAAAAAARRRRRRRRGGGGGGGGHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!"); | ||
174 | Shutdown(); | ||
175 | } | ||
176 | } | ||
177 | |||
178 | GridServers.AssetServer.SetServerInfo((string)((RemoteGridBase)GridServers.GridServer).GridData["asset_url"], (string)((RemoteGridBase)GridServers.GridServer).GridData["asset_sendkey"]); | ||
167 | 179 | ||
168 | LocalWorld.LoadPrimsFromStorage(); | 180 | LocalWorld.LoadPrimsFromStorage(); |
169 | 181 | ||
@@ -190,9 +202,11 @@ namespace OpenSim | |||
190 | agent_data.firstname = (string)requestData["firstname"]; | 202 | agent_data.firstname = (string)requestData["firstname"]; |
191 | agent_data.lastname = (string)requestData["lastname"]; | 203 | agent_data.lastname = (string)requestData["lastname"]; |
192 | agent_data.AgentID = new LLUUID((string)requestData["agent_id"]); | 204 | agent_data.AgentID = new LLUUID((string)requestData["agent_id"]); |
193 | agent_data.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); | 205 | agent_data.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); |
194 | 206 | if(requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) { | |
195 | ((RemoteGridBase)gridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data); | 207 | agent_data.child=true; |
208 | } | ||
209 | ((RemoteGridBase)gridServer).agentcircuits.Add((uint)agent_data.circuitcode, agent_data); | ||
196 | 210 | ||
197 | return new XmlRpcResponse(); | 211 | return new XmlRpcResponse(); |
198 | }); | 212 | }); |
@@ -288,15 +302,52 @@ namespace OpenSim | |||
288 | } | 302 | } |
289 | else if (packet.Type == PacketType.UseCircuitCode) | 303 | else if (packet.Type == PacketType.UseCircuitCode) |
290 | { // new client | 304 | { // new client |
305 | |||
291 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; | 306 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; |
292 | this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); | 307 | this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); |
293 | SimClient newuser = new SimClient(epSender, useCircuit, LocalWorld, _packetServer.ClientThreads, AssetCache, GridServers.GridServer, this, InventoryCache, m_sandbox); | 308 | SimClient newuser = new SimClient(epSender, useCircuit, LocalWorld, _packetServer.ClientThreads, AssetCache, GridServers.GridServer, this, InventoryCache, m_sandbox,((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].child); |
294 | if ((this.GridServers.UserServer != null) && (user_accounts)) | 309 | if ((this.GridServers.UserServer != null) && (user_accounts)) |
295 | { | 310 | { |
296 | newuser.UserServer = this.GridServers.UserServer; | 311 | newuser.UserServer = this.GridServers.UserServer; |
297 | } | 312 | } |
298 | //OpenSimRoot.Instance.ClientThreads.Add(epSender, newuser); | 313 | //OpenSimRoot.Instance.ClientThreads.Add(epSender, newuser); |
299 | this._packetServer.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser); | 314 | this._packetServer.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser); |
315 | |||
316 | if(!((RemoteGridBase)GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].child) { | ||
317 | Hashtable SimParams; | ||
318 | ArrayList SendParams; | ||
319 | XmlRpcRequest GridReq; | ||
320 | XmlRpcResponse GridResp; | ||
321 | foreach (Hashtable neighbour in ((RemoteGridBase)this.GridServers.GridServer).neighbours) { | ||
322 | m_console.WriteLine("http://" + neighbour["sim_ip"] + ":" + neighbour["sim_port"]); | ||
323 | SimParams = new Hashtable(); | ||
324 | SimParams["session_id"] = ((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].SessionID.ToString(); | ||
325 | SimParams["secure_session_id"] = ((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].SecureSessionID.ToString(); | ||
326 | SimParams["firstname"] = ((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].firstname; | ||
327 | SimParams["lastname"] = ((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].lastname; | ||
328 | SimParams["agent_id"] = ((RemoteGridBase)this.GridServers.GridServer).agentcircuits[useCircuit.CircuitCode.Code].AgentID.ToString(); | ||
329 | SimParams["circuit_code"] = (Int32)useCircuit.CircuitCode.Code; | ||
330 | SimParams["child_agent"]="1"; | ||
331 | SendParams = new ArrayList(); | ||
332 | SendParams.Add(SimParams); | ||
333 | |||
334 | GridReq = new XmlRpcRequest("expect_user", SendParams); | ||
335 | GridResp = GridReq.Send("http://" + neighbour["sim_ip"] + ":" + neighbour["sim_port"], 3000); | ||
336 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); | ||
337 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); | ||
338 | enablesimpacket.SimulatorInfo.Handle=Helpers.UIntsToLong((uint)(Convert.ToInt32(neighbour["region_locx"]) * 256), (uint)(Convert.ToInt32(neighbour["region_locy"]) * 256)); | ||
339 | System.Net.IPAddress neighbourIP = System.Net.IPAddress.Parse((string)neighbour["sim_ip"]); | ||
340 | byte[] byteIP = neighbourIP.GetAddressBytes(); | ||
341 | enablesimpacket.SimulatorInfo.IP=(uint)byteIP[3]<<24; | ||
342 | enablesimpacket.SimulatorInfo.IP+=(uint)byteIP[2]<<16; | ||
343 | enablesimpacket.SimulatorInfo.IP+=(uint)byteIP[1]<<8; | ||
344 | enablesimpacket.SimulatorInfo.IP+=(uint)byteIP[0]; | ||
345 | enablesimpacket.SimulatorInfo.Port=(ushort)Convert.ToInt32(neighbour["sim_port"]); | ||
346 | Thread.Sleep(3000); | ||
347 | _packetServer.ClientThreads[useCircuit.CircuitCode.Code].OutPacket(enablesimpacket); | ||
348 | } | ||
349 | } | ||
350 | |||
300 | } | 351 | } |
301 | else | 352 | else |
302 | { // invalid client | 353 | { // invalid client |
diff --git a/OpenSim.RegionServer/SimClient.cs b/OpenSim.RegionServer/SimClient.cs index 6d174c8..c478d92 100644 --- a/OpenSim.RegionServer/SimClient.cs +++ b/OpenSim.RegionServer/SimClient.cs | |||
@@ -54,6 +54,7 @@ namespace OpenSim | |||
54 | public LLUUID AgentID; | 54 | public LLUUID AgentID; |
55 | public LLUUID SessionID; | 55 | public LLUUID SessionID; |
56 | public LLUUID SecureSessionID = LLUUID.Zero; | 56 | public LLUUID SecureSessionID = LLUUID.Zero; |
57 | public bool m_child; | ||
57 | public uint CircuitCode; | 58 | public uint CircuitCode; |
58 | public world.Avatar ClientAvatar; | 59 | public world.Avatar ClientAvatar; |
59 | private UseCircuitCodePacket cirpack; | 60 | private UseCircuitCodePacket cirpack; |
@@ -94,7 +95,7 @@ namespace OpenSim | |||
94 | } | 95 | } |
95 | } | 96 | } |
96 | 97 | ||
97 | public SimClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, World world, Dictionary<uint, SimClient> clientThreads, AssetCache assetCache, IGridServer gridServer, OpenSimNetworkHandler application, InventoryCache inventoryCache, bool sandboxMode) | 98 | public SimClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, World world, Dictionary<uint, SimClient> clientThreads, AssetCache assetCache, IGridServer gridServer, OpenSimNetworkHandler application, InventoryCache inventoryCache, bool sandboxMode, bool child) |
98 | { | 99 | { |
99 | m_world = world; | 100 | m_world = world; |
100 | m_clientThreads = clientThreads; | 101 | m_clientThreads = clientThreads; |
@@ -103,6 +104,7 @@ namespace OpenSim | |||
103 | m_application = application; | 104 | m_application = application; |
104 | m_inventoryCache = inventoryCache; | 105 | m_inventoryCache = inventoryCache; |
105 | m_sandboxMode = sandboxMode; | 106 | m_sandboxMode = sandboxMode; |
107 | m_child=child; | ||
106 | 108 | ||
107 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs - Started up new client thread to handle incoming request"); | 109 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("OpenSimClient.cs - Started up new client thread to handle incoming request"); |
108 | cirpack = initialcirpack; | 110 | cirpack = initialcirpack; |
@@ -228,8 +230,10 @@ namespace OpenSim | |||
228 | switch (Pack.Type) | 230 | switch (Pack.Type) |
229 | { | 231 | { |
230 | case PacketType.CompleteAgentMovement: | 232 | case PacketType.CompleteAgentMovement: |
231 | ClientAvatar.CompleteMovement(m_world); | 233 | if(!m_child) { |
232 | ClientAvatar.SendInitialPosition(); | 234 | ClientAvatar.CompleteMovement(m_world); |
235 | ClientAvatar.SendInitialPosition(); | ||
236 | } | ||
233 | break; | 237 | break; |
234 | case PacketType.RegionHandshakeReply: | 238 | case PacketType.RegionHandshakeReply: |
235 | m_world.SendLayerData(this); | 239 | m_world.SendLayerData(this); |
@@ -476,16 +480,18 @@ namespace OpenSim | |||
476 | } | 480 | } |
477 | break; | 481 | break; |
478 | case PacketType.AgentAnimation: | 482 | case PacketType.AgentAnimation: |
479 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; | 483 | if(!m_child) { |
480 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) | 484 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; |
481 | { | 485 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) |
482 | if (AgentAni.AnimationList[i].StartAnim) | 486 | { |
483 | { | 487 | if (AgentAni.AnimationList[i].StartAnim) |
484 | ClientAvatar.current_anim = AgentAni.AnimationList[i].AnimID; | 488 | { |
485 | ClientAvatar.anim_seq = 1; | 489 | ClientAvatar.current_anim = AgentAni.AnimationList[i].AnimID; |
486 | ClientAvatar.SendAnimPack(); | 490 | ClientAvatar.anim_seq = 1; |
487 | } | 491 | ClientAvatar.SendAnimPack(); |
488 | } | 492 | } |
493 | } | ||
494 | } | ||
489 | break; | 495 | break; |
490 | case PacketType.ObjectSelect: | 496 | case PacketType.ObjectSelect: |
491 | ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; | 497 | ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; |
diff --git a/OpenSim.RegionServer/world/AvatarUpdate.cs b/OpenSim.RegionServer/world/AvatarUpdate.cs index d315de7..453f419 100644 --- a/OpenSim.RegionServer/world/AvatarUpdate.cs +++ b/OpenSim.RegionServer/world/AvatarUpdate.cs | |||
@@ -89,7 +89,8 @@ namespace OpenSim.world | |||
89 | { | 89 | { |
90 | System.Text.Encoding _enc = System.Text.Encoding.ASCII; | 90 | System.Text.Encoding _enc = System.Text.Encoding.ASCII; |
91 | //send a objectupdate packet with information about the clients avatar | 91 | //send a objectupdate packet with information about the clients avatar |
92 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); | 92 | |
93 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); | ||
93 | objupdate.RegionData.RegionHandle = m_regionHandle; | 94 | objupdate.RegionData.RegionHandle = m_regionHandle; |
94 | objupdate.RegionData.TimeDilation = 64096; | 95 | objupdate.RegionData.TimeDilation = 64096; |
95 | objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; | 96 | objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; |
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index a973c6c..425a135 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs | |||
@@ -371,19 +371,22 @@ namespace OpenSim.world | |||
371 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Adding new avatar to world"); | 371 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Adding new avatar to world"); |
372 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Starting RegionHandshake "); | 372 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine("World.cs:AddViewerAgent() - Starting RegionHandshake "); |
373 | newAvatar.SendRegionHandshake(this); | 373 | newAvatar.SendRegionHandshake(this); |
374 | PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); | 374 | if(!agentClient.m_child) { |
375 | lock (this.LockPhysicsEngine) | 375 | PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); |
376 | { | 376 | lock (this.LockPhysicsEngine) |
377 | newAvatar.PhysActor = this.phyScene.AddAvatar(pVec); | 377 | { |
378 | } | 378 | newAvatar.PhysActor = this.phyScene.AddAvatar(pVec); |
379 | lock (Entities) | 379 | } |
380 | { | 380 | } |
381 | this.Entities.Add(agentClient.AgentID, newAvatar); | 381 | lock (Entities) |
382 | } | 382 | { |
383 | lock (Avatars) | 383 | this.Entities.Add(agentClient.AgentID, newAvatar); |
384 | { | 384 | } |
385 | this.Avatars.Add(agentClient.AgentID, newAvatar); | 385 | lock (Avatars) |
386 | } | 386 | { |
387 | this.Avatars.Add(agentClient.AgentID, newAvatar); | ||
388 | } | ||
389 | |||
387 | } | 390 | } |
388 | 391 | ||
389 | public void RemoveViewerAgent(SimClient agentClient) | 392 | public void RemoveViewerAgent(SimClient agentClient) |