diff options
author | Teravus Ovares | 2008-03-30 08:01:47 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-03-30 08:01:47 +0000 |
commit | fd2caf5f1673ad14702d89db9804f841c5cb861a (patch) | |
tree | 18fd4ae03180b14df41f93544afa0cc9d5ec5309 /OpenSim | |
parent | * Stop the grid inventory service sending all folder and item details twice (diff) | |
download | opensim-SC-fd2caf5f1673ad14702d89db9804f841c5cb861a.zip opensim-SC-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.gz opensim-SC-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.bz2 opensim-SC-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.xz |
This update has good news and bad news, first the bad.
* This update breaks inter-region communications, sorry.
* You will need to run prebuild.
Next, the good;
* This update solves the unexpected binary element when Linux simulators inform windows simulators and vice versa. So Linux Simulators and Windows simulators are 100% compatible again.
* This update introduces an Integer in the prim crossing method to tell the receiving simulator which XML method to use to load the prim that crossed the border. If the receiving prim doesn't support the method, the prim crossing fails and no prims are lost.
That being said, it's best to update all your simulators to this revision at once.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Communications/IInterRegionCommunications.cs | 2 | ||||
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 8 | ||||
-rw-r--r-- | OpenSim/Framework/IRegionCommsListener.cs | 2 | ||||
-rw-r--r-- | OpenSim/Framework/RegionCommsListener.cs | 4 | ||||
-rw-r--r-- | OpenSim/Framework/RegionInfo.cs | 17 | ||||
-rw-r--r-- | OpenSim/Framework/RegionUpData.cs | 40 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 21 | ||||
-rw-r--r-- | OpenSim/Region/Communications/Local/LocalBackEndServices.cs | 14 | ||||
-rw-r--r-- | OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | 32 | ||||
-rw-r--r-- | OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs | 16 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | 16 | ||||
-rw-r--r-- | OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | 2 |
13 files changed, 155 insertions, 36 deletions
diff --git a/OpenSim/Framework/Communications/IInterRegionCommunications.cs b/OpenSim/Framework/Communications/IInterRegionCommunications.cs index e7e1737..f018dd6 100644 --- a/OpenSim/Framework/Communications/IInterRegionCommunications.cs +++ b/OpenSim/Framework/Communications/IInterRegionCommunications.cs | |||
@@ -35,7 +35,7 @@ namespace OpenSim.Framework.Communications | |||
35 | bool Available { get; } | 35 | bool Available { get; } |
36 | void CheckRegion(string address, uint port); | 36 | void CheckRegion(string address, uint port); |
37 | bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData); | 37 | bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData); |
38 | bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData); | 38 | bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod); |
39 | bool RegionUp(SearializableRegionInfo region, ulong regionhandle); | 39 | bool RegionUp(SearializableRegionInfo region, ulong regionhandle); |
40 | bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData); | 40 | bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData); |
41 | 41 | ||
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 518659f..9dd17f9 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -302,6 +302,13 @@ namespace OpenSim.Framework | |||
302 | 302 | ||
303 | public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags, LLUUID AgentID, LLUUID GroupID); | 303 | public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags, LLUUID AgentID, LLUUID GroupID); |
304 | 304 | ||
305 | public delegate void ObjectDuplicateOnRay(uint localID, uint dupeFlags, LLUUID AgentID, LLUUID GroupID, | ||
306 | LLUUID RayTargetObj, LLVector3 RayEnd, LLVector3 RayStart, | ||
307 | bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates); | ||
308 | |||
309 | |||
310 | |||
311 | |||
305 | public delegate void StatusChange(bool status); | 312 | public delegate void StatusChange(bool status); |
306 | 313 | ||
307 | public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status); | 314 | public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status); |
@@ -463,6 +470,7 @@ namespace OpenSim.Framework | |||
463 | event GodKickUser OnGodKickUser; | 470 | event GodKickUser OnGodKickUser; |
464 | 471 | ||
465 | event ObjectDuplicate OnObjectDuplicate; | 472 | event ObjectDuplicate OnObjectDuplicate; |
473 | event ObjectDuplicateOnRay OnObjectDuplicateOnRay; | ||
466 | event UpdateVector OnGrabObject; | 474 | event UpdateVector OnGrabObject; |
467 | event ObjectSelect OnDeGrabObject; | 475 | event ObjectSelect OnDeGrabObject; |
468 | event MoveObject OnGrabUpdate; | 476 | event MoveObject OnGrabUpdate; |
diff --git a/OpenSim/Framework/IRegionCommsListener.cs b/OpenSim/Framework/IRegionCommsListener.cs index c10353b..7726634 100644 --- a/OpenSim/Framework/IRegionCommsListener.cs +++ b/OpenSim/Framework/IRegionCommsListener.cs | |||
@@ -32,7 +32,7 @@ namespace OpenSim.Framework | |||
32 | { | 32 | { |
33 | public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent); | 33 | public delegate void ExpectUserDelegate(ulong regionHandle, AgentCircuitData agent); |
34 | 34 | ||
35 | public delegate void ExpectPrimDelegate(ulong regionHandle, LLUUID primID, string objData); | 35 | public delegate bool ExpectPrimDelegate(ulong regionHandle, LLUUID primID, string objData, int XMLMethod); |
36 | 36 | ||
37 | public delegate void UpdateNeighbours(List<RegionInfo> neighbours); | 37 | public delegate void UpdateNeighbours(List<RegionInfo> neighbours); |
38 | 38 | ||
diff --git a/OpenSim/Framework/RegionCommsListener.cs b/OpenSim/Framework/RegionCommsListener.cs index 13d1d28..ee2079b 100644 --- a/OpenSim/Framework/RegionCommsListener.cs +++ b/OpenSim/Framework/RegionCommsListener.cs | |||
@@ -78,12 +78,12 @@ namespace OpenSim.Framework | |||
78 | } | 78 | } |
79 | 79 | ||
80 | 80 | ||
81 | public virtual bool TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData) | 81 | public virtual bool TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
82 | { | 82 | { |
83 | handlerExpectPrim = OnExpectPrim; | 83 | handlerExpectPrim = OnExpectPrim; |
84 | if (handlerExpectPrim != null) | 84 | if (handlerExpectPrim != null) |
85 | { | 85 | { |
86 | handlerExpectPrim(regionHandle, primID, objData); | 86 | handlerExpectPrim(regionHandle, primID, objData, XMLMethod); |
87 | return true; | 87 | return true; |
88 | } | 88 | } |
89 | return false; | 89 | return false; |
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index fc6da57..095740d 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -101,6 +101,12 @@ namespace OpenSim.Framework | |||
101 | public bool m_allow_alternate_ports; | 101 | public bool m_allow_alternate_ports; |
102 | 102 | ||
103 | protected string m_serverURI; | 103 | protected string m_serverURI; |
104 | |||
105 | public int getInternalEndPointPort() | ||
106 | { | ||
107 | return m_internalEndPoint.Port; | ||
108 | } | ||
109 | |||
104 | public string ServerURI | 110 | public string ServerURI |
105 | { | 111 | { |
106 | get | 112 | get |
@@ -279,6 +285,17 @@ namespace OpenSim.Framework | |||
279 | RegionID = LLUUID.Zero; | 285 | RegionID = LLUUID.Zero; |
280 | ServerURI = ConvertFrom.ServerURI; | 286 | ServerURI = ConvertFrom.ServerURI; |
281 | } | 287 | } |
288 | public int getInternalEndPointPort() | ||
289 | { | ||
290 | return m_internalEndPoint.Port; | ||
291 | } | ||
292 | public void SetEndPoint(string ipaddr, int port) | ||
293 | { | ||
294 | IPAddress tmpIP = IPAddress.Parse(ipaddr); | ||
295 | IPEndPoint tmpEPE= new IPEndPoint(tmpIP, port); | ||
296 | m_internalEndPoint = tmpEPE; | ||
297 | |||
298 | } | ||
282 | 299 | ||
283 | //not in use, should swap to nini though. | 300 | //not in use, should swap to nini though. |
284 | public void LoadFromNiniSource(IConfigSource source) | 301 | public void LoadFromNiniSource(IConfigSource source) |
diff --git a/OpenSim/Framework/RegionUpData.cs b/OpenSim/Framework/RegionUpData.cs new file mode 100644 index 0000000..dbb805f --- /dev/null +++ b/OpenSim/Framework/RegionUpData.cs | |||
@@ -0,0 +1,40 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | namespace OpenSim.Framework | ||
6 | { | ||
7 | [Serializable] | ||
8 | public class RegionUpData | ||
9 | { | ||
10 | private uint m_X = 0; | ||
11 | private uint m_Y = 0; | ||
12 | private string m_ipaddr = ""; | ||
13 | private int m_port = 0; | ||
14 | public RegionUpData(uint X, uint Y, string ipaddr, int port) | ||
15 | { | ||
16 | m_X = X; | ||
17 | m_Y = Y; | ||
18 | m_ipaddr = ipaddr; | ||
19 | m_port = port; | ||
20 | } | ||
21 | |||
22 | public uint X | ||
23 | { | ||
24 | get { return m_X; } | ||
25 | } | ||
26 | public uint Y | ||
27 | { | ||
28 | get { return m_Y; } | ||
29 | } | ||
30 | public string IPADDR | ||
31 | { | ||
32 | get { return m_ipaddr; } | ||
33 | } | ||
34 | public int PORT | ||
35 | { | ||
36 | get { return m_port; } | ||
37 | } | ||
38 | |||
39 | } | ||
40 | } | ||
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index a8762e4..10d052e 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -158,6 +158,7 @@ namespace OpenSim.Region.ClientStack | |||
158 | private UpdateShape handlerUpdatePrimShape = null; //null; | 158 | private UpdateShape handlerUpdatePrimShape = null; //null; |
159 | private ObjectExtraParams handlerUpdateExtraParams = null; //OnUpdateExtraParams; | 159 | private ObjectExtraParams handlerUpdateExtraParams = null; //OnUpdateExtraParams; |
160 | private ObjectDuplicate handlerObjectDuplicate = null; | 160 | private ObjectDuplicate handlerObjectDuplicate = null; |
161 | private ObjectDuplicateOnRay handlerObjectDuplicateOnRay = null; | ||
161 | private ObjectSelect handlerObjectSelect = null; | 162 | private ObjectSelect handlerObjectSelect = null; |
162 | private ObjectDeselect handlerObjectDeselect = null; | 163 | private ObjectDeselect handlerObjectDeselect = null; |
163 | private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags; | 164 | private UpdatePrimFlags handlerUpdatePrimFlags = null; //OnUpdatePrimFlags; |
@@ -675,6 +676,7 @@ namespace OpenSim.Region.ClientStack | |||
675 | public event UpdateVector OnGrabObject; | 676 | public event UpdateVector OnGrabObject; |
676 | public event ObjectSelect OnDeGrabObject; | 677 | public event ObjectSelect OnDeGrabObject; |
677 | public event ObjectDuplicate OnObjectDuplicate; | 678 | public event ObjectDuplicate OnObjectDuplicate; |
679 | public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; | ||
678 | public event MoveObject OnGrabUpdate; | 680 | public event MoveObject OnGrabUpdate; |
679 | public event AddNewPrim OnAddPrim; | 681 | public event AddNewPrim OnAddPrim; |
680 | public event RequestGodlikePowers OnRequestGodlikePowers; | 682 | public event RequestGodlikePowers OnRequestGodlikePowers; |
@@ -3590,7 +3592,26 @@ namespace OpenSim.Region.ClientStack | |||
3590 | // That means multiple object perms may be updated in a single packet. | 3592 | // That means multiple object perms may be updated in a single packet. |
3591 | 3593 | ||
3592 | break; | 3594 | break; |
3595 | case PacketType.ObjectDuplicateOnRay: | ||
3596 | ObjectDuplicateOnRayPacket dupeOnRay = (ObjectDuplicateOnRayPacket)Pack; | ||
3593 | 3597 | ||
3598 | handlerObjectDuplicateOnRay = null; | ||
3599 | |||
3600 | |||
3601 | for (int i = 0; i < dupeOnRay.ObjectData.Length; i++) | ||
3602 | { | ||
3603 | handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay; | ||
3604 | if (handlerObjectDuplicateOnRay != null) | ||
3605 | { | ||
3606 | handlerObjectDuplicateOnRay(dupeOnRay.ObjectData[i].ObjectLocalID, dupeOnRay.AgentData.DuplicateFlags, | ||
3607 | dupeOnRay.AgentData.AgentID, dupeOnRay.AgentData.GroupID, dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd, | ||
3608 | dupeOnRay.AgentData.RayStart, dupeOnRay.AgentData.BypassRaycast, dupeOnRay.AgentData.RayEndIsIntersection, | ||
3609 | dupeOnRay.AgentData.CopyCenters, dupeOnRay.AgentData.CopyRotates); | ||
3610 | } | ||
3611 | } | ||
3612 | |||
3613 | break; | ||
3614 | break; | ||
3594 | case PacketType.RequestObjectPropertiesFamily: | 3615 | case PacketType.RequestObjectPropertiesFamily: |
3595 | //This powers the little tooltip that appears when you move your mouse over an object | 3616 | //This powers the little tooltip that appears when you move your mouse over an object |
3596 | RequestObjectPropertiesFamilyPacket packToolTip = (RequestObjectPropertiesFamilyPacket)Pack; | 3617 | RequestObjectPropertiesFamilyPacket packToolTip = (RequestObjectPropertiesFamilyPacket)Pack; |
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs index de891a2..f5a5e83 100644 --- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs +++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs | |||
@@ -225,6 +225,12 @@ namespace OpenSim.Region.Communications.Local | |||
225 | public virtual bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) | 225 | public virtual bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) |
226 | { | 226 | { |
227 | RegionInfo region = new RegionInfo(sregion); | 227 | RegionInfo region = new RegionInfo(sregion); |
228 | |||
229 | //region.RegionLocX = sregion.X; | ||
230 | //region.RegionLocY = sregion.Y; | ||
231 | //region.SetEndPoint(sregion.IPADDR, sregion.PORT); | ||
232 | |||
233 | //sregion); | ||
228 | if (m_regionListeners.ContainsKey(regionhandle)) | 234 | if (m_regionListeners.ContainsKey(regionhandle)) |
229 | { | 235 | { |
230 | return m_regionListeners[regionhandle].TriggerRegionUp(region); | 236 | return m_regionListeners[regionhandle].TriggerRegionUp(region); |
@@ -316,11 +322,11 @@ namespace OpenSim.Region.Communications.Local | |||
316 | return false; | 322 | return false; |
317 | } | 323 | } |
318 | 324 | ||
319 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 325 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
320 | { | 326 | { |
321 | if (m_regionListeners.ContainsKey(regionHandle)) | 327 | if (m_regionListeners.ContainsKey(regionHandle)) |
322 | { | 328 | { |
323 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData); | 329 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
324 | return true; | 330 | return true; |
325 | } | 331 | } |
326 | return false; | 332 | return false; |
@@ -408,11 +414,11 @@ namespace OpenSim.Region.Communications.Local | |||
408 | } | 414 | } |
409 | } | 415 | } |
410 | 416 | ||
411 | public void TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData) | 417 | public void TriggerExpectPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
412 | { | 418 | { |
413 | if (m_regionListeners.ContainsKey(regionHandle)) | 419 | if (m_regionListeners.ContainsKey(regionHandle)) |
414 | { | 420 | { |
415 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData); | 421 | m_regionListeners[regionHandle].TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
416 | } | 422 | } |
417 | } | 423 | } |
418 | 424 | ||
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index d19752c..22bb0f0 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -857,6 +857,8 @@ namespace OpenSim.Region.Communications.OGS1 | |||
857 | // The region asking the grid services about itself.. | 857 | // The region asking the grid services about itself.. |
858 | // And, surprisingly, the reason is.. it doesn't know | 858 | // And, surprisingly, the reason is.. it doesn't know |
859 | // it's own remoting port! How special. | 859 | // it's own remoting port! How special. |
860 | RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port); | ||
861 | |||
860 | region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle)); | 862 | region = new SearializableRegionInfo(RequestNeighbourInfo(region.RegionHandle)); |
861 | region.RemotingAddress = region.ExternalHostName; | 863 | region.RemotingAddress = region.ExternalHostName; |
862 | region.RemotingPort = NetworkServersInfo.RemotingListenerPort; | 864 | region.RemotingPort = NetworkServersInfo.RemotingListenerPort; |
@@ -885,7 +887,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
885 | 887 | ||
886 | if (remObject != null) | 888 | if (remObject != null) |
887 | { | 889 | { |
888 | retValue = remObject.RegionUp(region, regionhandle); | 890 | retValue = remObject.RegionUp(regiondata, regionhandle); |
889 | } | 891 | } |
890 | else | 892 | else |
891 | { | 893 | { |
@@ -962,7 +964,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
962 | /// <param name="regionHandle"></param> | 964 | /// <param name="regionHandle"></param> |
963 | /// <param name="agentData"></param> | 965 | /// <param name="agentData"></param> |
964 | /// <returns></returns> | 966 | /// <returns></returns> |
965 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 967 | public bool InformRegionOfPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
966 | { | 968 | { |
967 | int failures = 0; | 969 | int failures = 0; |
968 | lock (m_deadRegionCache) | 970 | lock (m_deadRegionCache) |
@@ -977,7 +979,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
977 | RegionInfo regInfo = null; | 979 | RegionInfo regInfo = null; |
978 | try | 980 | try |
979 | { | 981 | { |
980 | if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData)) | 982 | if (m_localBackend.InformRegionOfPrimCrossing(regionHandle, primID, objData, XMLMethod)) |
981 | { | 983 | { |
982 | return true; | 984 | return true; |
983 | } | 985 | } |
@@ -996,7 +998,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
996 | 998 | ||
997 | if (remObject != null) | 999 | if (remObject != null) |
998 | { | 1000 | { |
999 | retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData); | 1001 | retValue = remObject.InformRegionOfPrimCrossing(regionHandle, primID.UUID, objData, XMLMethod); |
1000 | } | 1002 | } |
1001 | else | 1003 | else |
1002 | { | 1004 | { |
@@ -1325,23 +1327,29 @@ namespace OpenSim.Region.Communications.OGS1 | |||
1325 | } | 1327 | } |
1326 | } | 1328 | } |
1327 | 1329 | ||
1328 | public bool TriggerRegionUp(SearializableRegionInfo regionData, ulong regionhandle) | 1330 | public bool TriggerRegionUp(RegionUpData regionData, ulong regionhandle) |
1329 | { | 1331 | { |
1330 | m_log.Info("[OGS1 GRID SERVICES]: " + | 1332 | m_log.Info("[OGS1 GRID SERVICES]: " + |
1331 | gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.RegionLocX + | 1333 | gdebugRegionName + "Incoming OGS1 RegionUpReport: " + "(" + regionData.X + |
1332 | "," + regionData.RegionLocY + "). Giving this region a fresh set of 'dead' tries"); | 1334 | "," + regionData.Y + "). Giving this region a fresh set of 'dead' tries"); |
1335 | RegionInfo nRegionInfo = new RegionInfo(); | ||
1336 | nRegionInfo.SetEndPoint("127.0.0.1", regionData.PORT); | ||
1337 | nRegionInfo.ExternalHostName = regionData.IPADDR; | ||
1338 | nRegionInfo.RegionLocX = regionData.X; | ||
1339 | nRegionInfo.RegionLocY = regionData.Y; | ||
1333 | 1340 | ||
1341 | |||
1334 | try | 1342 | try |
1335 | { | 1343 | { |
1336 | lock (m_deadRegionCache) | 1344 | lock (m_deadRegionCache) |
1337 | { | 1345 | { |
1338 | if (m_deadRegionCache.ContainsKey(regionData.RegionHandle)) | 1346 | if (m_deadRegionCache.ContainsKey(nRegionInfo.RegionHandle)) |
1339 | { | 1347 | { |
1340 | m_deadRegionCache.Remove(regionData.RegionHandle); | 1348 | m_deadRegionCache.Remove(nRegionInfo.RegionHandle); |
1341 | } | 1349 | } |
1342 | } | 1350 | } |
1343 | 1351 | ||
1344 | return m_localBackend.TriggerRegionUp(new RegionInfo(regionData), regionhandle); | 1352 | return m_localBackend.TriggerRegionUp(nRegionInfo, regionhandle); |
1345 | } | 1353 | } |
1346 | 1354 | ||
1347 | catch (RemotingException e) | 1355 | catch (RemotingException e) |
@@ -1372,12 +1380,12 @@ namespace OpenSim.Region.Communications.OGS1 | |||
1372 | /// <param name="regionHandle"></param> | 1380 | /// <param name="regionHandle"></param> |
1373 | /// <param name="agentData"></param> | 1381 | /// <param name="agentData"></param> |
1374 | /// <returns></returns> | 1382 | /// <returns></returns> |
1375 | public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData) | 1383 | public bool IncomingPrim(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
1376 | { | 1384 | { |
1377 | // Is this necessary? | 1385 | // Is this necessary? |
1378 | try | 1386 | try |
1379 | { | 1387 | { |
1380 | m_localBackend.TriggerExpectPrim(regionHandle, primID, objData); | 1388 | m_localBackend.TriggerExpectPrim(regionHandle, primID, objData, XMLMethod); |
1381 | return true; | 1389 | return true; |
1382 | //m_localBackend. | 1390 | //m_localBackend. |
1383 | } | 1391 | } |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs index c282464..2e106d7 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs | |||
@@ -38,9 +38,9 @@ namespace OpenSim.Region.Communications.OGS1 | |||
38 | 38 | ||
39 | public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical); | 39 | public delegate bool InformRegionPrimGroup(ulong regionHandle, LLUUID primID, LLVector3 Positon, bool isPhysical); |
40 | 40 | ||
41 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData); | 41 | public delegate bool PrimGroupArrival(ulong regionHandle, LLUUID primID, string objData, int XMLMethod); |
42 | 42 | ||
43 | public delegate bool RegionUp(SearializableRegionInfo region, ulong regionhandle); | 43 | public delegate bool RegionUp(RegionUpData region, ulong regionhandle); |
44 | 44 | ||
45 | public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate); | 45 | public delegate bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate childUpdate); |
46 | 46 | ||
@@ -90,7 +90,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
90 | return false; | 90 | return false; |
91 | } | 91 | } |
92 | 92 | ||
93 | public bool RegionUp(SearializableRegionInfo sregion, ulong regionhandle) | 93 | public bool RegionUp(RegionUpData sregion, ulong regionhandle) |
94 | { | 94 | { |
95 | handlerRegionUp = OnRegionUp; | 95 | handlerRegionUp = OnRegionUp; |
96 | if (handlerRegionUp != null) | 96 | if (handlerRegionUp != null) |
@@ -130,12 +130,12 @@ namespace OpenSim.Region.Communications.OGS1 | |||
130 | return false; | 130 | return false; |
131 | } | 131 | } |
132 | 132 | ||
133 | public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData) | 133 | public bool ExpectPrimCrossing(ulong regionHandle, LLUUID primID, string objData, int XMLMethod) |
134 | { | 134 | { |
135 | handlerPrimGroupArrival = OnPrimGroupArrival; | 135 | handlerPrimGroupArrival = OnPrimGroupArrival; |
136 | if (handlerPrimGroupArrival != null) | 136 | if (handlerPrimGroupArrival != null) |
137 | { | 137 | { |
138 | return handlerPrimGroupArrival(regionHandle, primID, objData); | 138 | return handlerPrimGroupArrival(regionHandle, primID, objData, XMLMethod); |
139 | } | 139 | } |
140 | return false; | 140 | return false; |
141 | } | 141 | } |
@@ -173,7 +173,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
173 | } | 173 | } |
174 | } | 174 | } |
175 | 175 | ||
176 | public bool RegionUp(SearializableRegionInfo region, ulong regionhandle) | 176 | public bool RegionUp(RegionUpData region, ulong regionhandle) |
177 | { | 177 | { |
178 | try | 178 | try |
179 | { | 179 | { |
@@ -232,11 +232,11 @@ namespace OpenSim.Region.Communications.OGS1 | |||
232 | } | 232 | } |
233 | } | 233 | } |
234 | 234 | ||
235 | public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData) | 235 | public bool InformRegionOfPrimCrossing(ulong regionHandle, Guid primID, string objData, int XMLMethod) |
236 | { | 236 | { |
237 | try | 237 | try |
238 | { | 238 | { |
239 | return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData); | 239 | return InterRegionSingleton.Instance.ExpectPrimCrossing(regionHandle, new LLUUID(primID), objData, XMLMethod); |
240 | } | 240 | } |
241 | catch (RemotingException e) | 241 | catch (RemotingException e) |
242 | { | 242 | { |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index c07f718..819815b 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1242,6 +1242,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1242 | m_log.Warn("Prim crossing: " + grp.UUID.ToString()); | 1242 | m_log.Warn("Prim crossing: " + grp.UUID.ToString()); |
1243 | int thisx = (int)RegionInfo.RegionLocX; | 1243 | int thisx = (int)RegionInfo.RegionLocX; |
1244 | int thisy = (int)RegionInfo.RegionLocY; | 1244 | int thisy = (int)RegionInfo.RegionLocY; |
1245 | |||
1246 | int primcrossingXMLmethod = 0; | ||
1247 | |||
1245 | ulong newRegionHandle = 0; | 1248 | ulong newRegionHandle = 0; |
1246 | LLVector3 pos = position; | 1249 | LLVector3 pos = position; |
1247 | 1250 | ||
@@ -1279,7 +1282,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1279 | if (newRegionHandle != 0) | 1282 | if (newRegionHandle != 0) |
1280 | { | 1283 | { |
1281 | bool successYN = false; | 1284 | bool successYN = false; |
1282 | successYN = m_sceneGridService.PrimCrossToNeighboringRegion(newRegionHandle, grp.UUID, m_sceneXmlLoader.SavePrimGroupToXML2String(grp)); | 1285 | successYN = m_sceneGridService.PrimCrossToNeighboringRegion(newRegionHandle, grp.UUID, m_sceneXmlLoader.SavePrimGroupToXML2String(grp), primcrossingXMLmethod); |
1283 | if (successYN) | 1286 | if (successYN) |
1284 | { | 1287 | { |
1285 | // We remove the object here | 1288 | // We remove the object here |
@@ -1306,10 +1309,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
1306 | } | 1309 | } |
1307 | } | 1310 | } |
1308 | 1311 | ||
1309 | public void IncomingInterRegionPrimGroup(ulong regionHandle, LLUUID primID, string objXMLData) | 1312 | public bool IncomingInterRegionPrimGroup(ulong regionHandle, LLUUID primID, string objXMLData, int XMLMethod) |
1310 | { | 1313 | { |
1311 | m_log.Warn("{[INTERREGION]: A new prim arrived from a neighbor"); | 1314 | m_log.Warn("{[INTERREGION]: A new prim arrived from a neighbor"); |
1312 | m_sceneXmlLoader.LoadGroupFromXml2String(objXMLData); | 1315 | if (XMLMethod == 0) |
1316 | { | ||
1317 | m_sceneXmlLoader.LoadGroupFromXml2String(objXMLData); | ||
1318 | return true; | ||
1319 | } | ||
1320 | else | ||
1321 | { | ||
1322 | return false; | ||
1323 | } | ||
1313 | 1324 | ||
1314 | } | 1325 | } |
1315 | 1326 | ||
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 7653bf4..db2327e 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -168,12 +168,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
168 | } | 168 | } |
169 | } | 169 | } |
170 | 170 | ||
171 | protected void IncomingPrimCrossing(ulong regionHandle, LLUUID primID, String objXMLData) | 171 | protected bool IncomingPrimCrossing(ulong regionHandle, LLUUID primID, String objXMLData, int XMLMethod) |
172 | { | 172 | { |
173 | handlerExpectPrim = OnExpectPrim; | 173 | handlerExpectPrim = OnExpectPrim; |
174 | if (handlerExpectPrim != null) | 174 | if (handlerExpectPrim != null) |
175 | { | 175 | { |
176 | handlerExpectPrim(regionHandle, primID, objXMLData); | 176 | return handlerExpectPrim(regionHandle, primID, objXMLData, XMLMethod); |
177 | } | ||
178 | else | ||
179 | { | ||
180 | return false; | ||
177 | } | 181 | } |
178 | 182 | ||
179 | } | 183 | } |
@@ -342,8 +346,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
342 | private void InformNeighboursThatRegionIsUpAsync(RegionInfo region, ulong regionhandle) | 346 | private void InformNeighboursThatRegionIsUpAsync(RegionInfo region, ulong regionhandle) |
343 | { | 347 | { |
344 | m_log.Info("[INTERGRID]: Starting to inform neighbors that I'm here"); | 348 | m_log.Info("[INTERGRID]: Starting to inform neighbors that I'm here"); |
349 | //RegionUpData regiondata = new RegionUpData(region.RegionLocX, region.RegionLocY, region.ExternalHostName, region.InternalEndPoint.Port); | ||
350 | |||
345 | bool regionAccepted = | 351 | bool regionAccepted = |
346 | m_commsProvider.InterRegion.RegionUp((new SearializableRegionInfo(region)), regionhandle); | 352 | m_commsProvider.InterRegion.RegionUp(new SearializableRegionInfo(region), regionhandle); |
347 | 353 | ||
348 | if (regionAccepted) | 354 | if (regionAccepted) |
349 | { | 355 | { |
@@ -605,9 +611,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
605 | return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); | 611 | return m_commsProvider.InterRegion.ExpectAvatarCrossing(regionhandle, agentID, position, isFlying); |
606 | } | 612 | } |
607 | 613 | ||
608 | public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, string objData) | 614 | public bool PrimCrossToNeighboringRegion(ulong regionhandle, LLUUID primID, string objData, int XMLMethod) |
609 | { | 615 | { |
610 | return m_commsProvider.InterRegion.InformRegionOfPrimCrossing(regionhandle, primID, objData); | 616 | return m_commsProvider.InterRegion.InformRegionOfPrimCrossing(regionhandle, primID, objData, XMLMethod); |
611 | } | 617 | } |
612 | 618 | ||
613 | 619 | ||
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 705f27e..39d05eb 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -148,6 +148,8 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
148 | public event RegionInfoRequest OnRegionInfoRequest; | 148 | public event RegionInfoRequest OnRegionInfoRequest; |
149 | public event EstateCovenantRequest OnEstateCovenantRequest; | 149 | public event EstateCovenantRequest OnEstateCovenantRequest; |
150 | 150 | ||
151 | public event ObjectDuplicateOnRay OnObjectDuplicateOnRay; | ||
152 | |||
151 | public event FriendActionDelegate OnApproveFriendRequest; | 153 | public event FriendActionDelegate OnApproveFriendRequest; |
152 | public event FriendActionDelegate OnDenyFriendRequest; | 154 | public event FriendActionDelegate OnDenyFriendRequest; |
153 | public event FriendshipTermination OnTerminateFriendship; | 155 | public event FriendshipTermination OnTerminateFriendship; |