aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-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;