diff options
Diffstat (limited to 'OpenSim/Region/Framework')
4 files changed, 22 insertions, 14 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs index 61d199f..d172780 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | |||
@@ -35,7 +35,7 @@ using OpenSim.Region.Framework.Scenes; | |||
35 | 35 | ||
36 | namespace OpenSim.Region.Framework.Interfaces | 36 | namespace OpenSim.Region.Framework.Interfaces |
37 | { | 37 | { |
38 | public delegate ScenePresence CrossAgentToNewRegionDelegate(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, string version); | 38 | public delegate ScenePresence CrossAgentToNewRegionDelegate(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx); |
39 | public delegate ScenePresence CrossAsyncDelegate(ScenePresence agent, bool isFlying); | 39 | public delegate ScenePresence CrossAsyncDelegate(ScenePresence agent, bool isFlying); |
40 | 40 | ||
41 | public interface IEntityTransferModule | 41 | public interface IEntityTransferModule |
@@ -93,13 +93,14 @@ namespace OpenSim.Region.Framework.Interfaces | |||
93 | 93 | ||
94 | void EnableChildAgent(ScenePresence agent, GridRegion region); | 94 | void EnableChildAgent(ScenePresence agent, GridRegion region); |
95 | 95 | ||
96 | GridRegion GetDestination(Scene scene, UUID agentID, Vector3 pos, out string version, out Vector3 newpos); | 96 | GridRegion GetDestination(Scene scene, UUID agentID, Vector3 pos, EntityTransferContext ctx, |
97 | GridRegion GetObjectDestination(SceneObjectGroup grp, Vector3 targetPosition, out Vector3 newpos); | 97 | out Vector3 newpos, out string reason); |
98 | bool checkAgentAccessToRegion(ScenePresence agent, GridRegion destiny, Vector3 position, out string version, out string reason); | 98 | GridRegion GetObjectDestination(SceneObjectGroup grp, Vector3 targetPosition, out Vector3 newpos); |
99 | // void Cross(SceneObjectGroup sog, Vector3 position, bool silent); | 99 | bool checkAgentAccessToRegion(ScenePresence agent, GridRegion destiny, Vector3 position, EntityTransferContext ctx, out string reason); |
100 | |||
100 | bool CrossPrimGroupIntoNewRegion(GridRegion destination, Vector3 newPosition, SceneObjectGroup grp, bool silent, bool removeScripts); | 101 | bool CrossPrimGroupIntoNewRegion(GridRegion destination, Vector3 newPosition, SceneObjectGroup grp, bool silent, bool removeScripts); |
101 | 102 | ||
102 | ScenePresence CrossAgentToNewRegionAsync(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, string version); | 103 | ScenePresence CrossAgentToNewRegionAsync(ScenePresence agent, Vector3 pos, GridRegion neighbourRegion, bool isFlying, EntityTransferContext ctx); |
103 | 104 | ||
104 | bool HandleIncomingSceneObject(SceneObjectGroup so, Vector3 newPosition); | 105 | bool HandleIncomingSceneObject(SceneObjectGroup so, Vector3 newPosition); |
105 | } | 106 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index c97c838..e780f86 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -42,6 +42,7 @@ using OpenSim.Region.Framework.Interfaces; | |||
42 | using OpenSim.Region.PhysicsModules.SharedBase; | 42 | using OpenSim.Region.PhysicsModules.SharedBase; |
43 | using OpenSim.Region.Framework.Scenes.Serialization; | 43 | using OpenSim.Region.Framework.Scenes.Serialization; |
44 | using PermissionMask = OpenSim.Framework.PermissionMask; | 44 | using PermissionMask = OpenSim.Framework.PermissionMask; |
45 | using OpenSim.Services.Interfaces; | ||
45 | 46 | ||
46 | namespace OpenSim.Region.Framework.Scenes | 47 | namespace OpenSim.Region.Framework.Scenes |
47 | { | 48 | { |
@@ -534,7 +535,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
534 | /// <returns></returns> | 535 | /// <returns></returns> |
535 | public bool IsAttachmentCheckFull() | 536 | public bool IsAttachmentCheckFull() |
536 | { | 537 | { |
537 | return (IsAttachment || (m_rootPart.Shape.PCode == (byte)PCodeEnum.Primitive && m_rootPart.Shape.State != 0)); | 538 | return (IsAttachment || |
539 | (m_rootPart.Shape.PCode == (byte)PCodeEnum.Primitive && m_rootPart.Shape.State != 0)); | ||
538 | } | 540 | } |
539 | 541 | ||
540 | private struct avtocrossInfo | 542 | private struct avtocrossInfo |
@@ -679,7 +681,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
679 | } | 681 | } |
680 | 682 | ||
681 | string reason = String.Empty; | 683 | string reason = String.Empty; |
682 | string version = String.Empty; | 684 | EntityTransferContext ctx = new EntityTransferContext(); |
683 | 685 | ||
684 | foreach (ScenePresence av in sog.m_sittingAvatars) | 686 | foreach (ScenePresence av in sog.m_sittingAvatars) |
685 | { | 687 | { |
@@ -691,7 +693,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
691 | 693 | ||
692 | // We set the avatar position as being the object | 694 | // We set the avatar position as being the object |
693 | // position to get the region to send to | 695 | // position to get the region to send to |
694 | if(!entityTransfer.checkAgentAccessToRegion(av, destination, newpos, out version, out reason)) | 696 | if(!entityTransfer.checkAgentAccessToRegion(av, destination, newpos, ctx, out reason)) |
695 | { | 697 | { |
696 | return sog; | 698 | return sog; |
697 | } | 699 | } |
@@ -731,7 +733,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
731 | 733 | ||
732 | // CrossAgentToNewRegionDelegate d = entityTransfer.CrossAgentToNewRegionAsync; | 734 | // CrossAgentToNewRegionDelegate d = entityTransfer.CrossAgentToNewRegionAsync; |
733 | // d.BeginInvoke(av, val, destination, av.Flying, version, CrossAgentToNewRegionCompleted, d); | 735 | // d.BeginInvoke(av, val, destination, av.Flying, version, CrossAgentToNewRegionCompleted, d); |
734 | entityTransfer.CrossAgentToNewRegionAsync(av, newpos, destination, av.Flying, version); | 736 | entityTransfer.CrossAgentToNewRegionAsync(av, newpos, destination, av.Flying, ctx); |
735 | if (av.IsChildAgent) | 737 | if (av.IsChildAgent) |
736 | { | 738 | { |
737 | // avatar crossed do some extra cleanup | 739 | // avatar crossed do some extra cleanup |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 65511bc..52f9b51 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -2121,8 +2121,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2121 | } | 2121 | } |
2122 | else | 2122 | else |
2123 | { | 2123 | { |
2124 | if ((!isPhantom || isPhysical || _VolumeDetectActive) && !ParentGroup.IsAttachment | 2124 | if ((!isPhantom || isPhysical || _VolumeDetectActive) |
2125 | && !(Shape.PathCurve == (byte)Extrusion.Flexible)) | 2125 | && !ParentGroup.IsAttachmentCheckFull() |
2126 | && !(Shape.PathCurve == (byte)Extrusion.Flexible)) | ||
2126 | { | 2127 | { |
2127 | AddToPhysics(isPhysical, isPhantom, building, isPhysical); | 2128 | AddToPhysics(isPhysical, isPhantom, building, isPhysical); |
2128 | UpdatePhysicsSubscribedEvents(); // not sure if appliable here | 2129 | UpdatePhysicsSubscribedEvents(); // not sure if appliable here |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs index 226ed6e..b8f7458 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs | |||
@@ -105,6 +105,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
105 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); | 105 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); |
106 | } | 106 | } |
107 | 107 | ||
108 | /* | ||
108 | [Test] | 109 | [Test] |
109 | public void TestSameSimulatorIsolatedRegionsV1() | 110 | public void TestSameSimulatorIsolatedRegionsV1() |
110 | { | 111 | { |
@@ -136,7 +137,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
136 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); | 137 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); |
137 | 138 | ||
138 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour | 139 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour |
139 | lscm.ServiceVersion = "SIMULATION/0.1"; | 140 | lscm.ServiceVersion = 0.1f; |
140 | 141 | ||
141 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 142 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
142 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 143 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
@@ -178,6 +179,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
178 | // position instead). | 179 | // position instead). |
179 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); | 180 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); |
180 | } | 181 | } |
182 | */ | ||
181 | 183 | ||
182 | [Test] | 184 | [Test] |
183 | public void TestSameSimulatorIsolatedRegionsV2() | 185 | public void TestSameSimulatorIsolatedRegionsV2() |
@@ -488,6 +490,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
488 | // TestHelpers.DisableLogging(); | 490 | // TestHelpers.DisableLogging(); |
489 | } | 491 | } |
490 | 492 | ||
493 | /* | ||
491 | [Test] | 494 | [Test] |
492 | public void TestSameSimulatorNeighbouringRegionsV1() | 495 | public void TestSameSimulatorNeighbouringRegionsV1() |
493 | { | 496 | { |
@@ -519,7 +522,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
519 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB); | 522 | SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB); |
520 | 523 | ||
521 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour | 524 | // FIXME: Hack - this is here temporarily to revert back to older entity transfer behaviour |
522 | lscm.ServiceVersion = "SIMULATION/0.1"; | 525 | lscm.ServiceVersion = 0.1f; |
523 | 526 | ||
524 | Vector3 teleportPosition = new Vector3(10, 11, 12); | 527 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
525 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | 528 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
@@ -573,6 +576,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
573 | 576 | ||
574 | // TestHelpers.DisableLogging(); | 577 | // TestHelpers.DisableLogging(); |
575 | } | 578 | } |
579 | */ | ||
576 | 580 | ||
577 | [Test] | 581 | [Test] |
578 | public void TestSameSimulatorNeighbouringRegionsV2() | 582 | public void TestSameSimulatorNeighbouringRegionsV2() |