aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares2008-03-30 08:01:47 +0000
committerTeravus Ovares2008-03-30 08:01:47 +0000
commitfd2caf5f1673ad14702d89db9804f841c5cb861a (patch)
tree18fd4ae03180b14df41f93544afa0cc9d5ec5309
parent* Stop the grid inventory service sending all folder and item details twice (diff)
downloadopensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.zip
opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.gz
opensim-SC_OLD-fd2caf5f1673ad14702d89db9804f841c5cb861a.tar.bz2
opensim-SC_OLD-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.
-rw-r--r--OpenSim/Framework/Communications/IInterRegionCommunications.cs2
-rw-r--r--OpenSim/Framework/IClientAPI.cs8
-rw-r--r--OpenSim/Framework/IRegionCommsListener.cs2
-rw-r--r--OpenSim/Framework/RegionCommsListener.cs4
-rw-r--r--OpenSim/Framework/RegionInfo.cs17
-rw-r--r--OpenSim/Framework/RegionUpData.cs40
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs21
-rw-r--r--OpenSim/Region/Communications/Local/LocalBackEndServices.cs14
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs32
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs16
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs17
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs16
-rw-r--r--OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs2
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 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace 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;