diff options
author | Melanie | 2012-04-25 02:33:39 +0100 |
---|---|---|
committer | Melanie | 2012-04-25 02:33:39 +0100 |
commit | 9a235018247cb8dfe07043c354b31da155d19e1f (patch) | |
tree | db8c223bc505a0bf9437d3550f4a101d24874545 | |
parent | Merge branch 'master' into careminster (diff) | |
parent | refactor: Combine ScenePresence.Teleport() and TeleportWithMomentum() (diff) | |
download | opensim-SC-9a235018247cb8dfe07043c354b31da155d19e1f.zip opensim-SC-9a235018247cb8dfe07043c354b31da155d19e1f.tar.gz opensim-SC-9a235018247cb8dfe07043c354b31da155d19e1f.tar.bz2 opensim-SC-9a235018247cb8dfe07043c354b31da155d19e1f.tar.xz |
Merge branch 'master' into careminster
Conflicts:
OpenSim/Region/Framework/Scenes/ScenePresence.cs
5 files changed, 40 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 690edce..e640733 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -192,7 +192,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
192 | m_log.WarnFormat( | 192 | m_log.WarnFormat( |
193 | "[ENTITY TRANSFER MODULE]: RequestTeleportToLocation() was given an illegal position of {0} for avatar {1}, {2}. Substituting {3}", | 193 | "[ENTITY TRANSFER MODULE]: RequestTeleportToLocation() was given an illegal position of {0} for avatar {1}, {2}. Substituting {3}", |
194 | position, sp.Name, sp.UUID, emergencyPos); | 194 | position, sp.Name, sp.UUID, emergencyPos); |
195 | 195 | ||
196 | position = emergencyPos; | 196 | position = emergencyPos; |
197 | } | 197 | } |
198 | 198 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index f3f03f5..9e60c88 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1065,14 +1065,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1065 | /// <param name="pos"></param> | 1065 | /// <param name="pos"></param> |
1066 | public void Teleport(Vector3 pos) | 1066 | public void Teleport(Vector3 pos) |
1067 | { | 1067 | { |
1068 | bool isFlying = Flying; | 1068 | TeleportWithMomentum(pos, Vector3.Zero); |
1069 | RemoveFromPhysicalScene(); | ||
1070 | Velocity = Vector3.Zero; | ||
1071 | CheckLandingPoint(ref pos); | ||
1072 | AbsolutePosition = pos; | ||
1073 | AddToPhysicalScene(isFlying); | ||
1074 | |||
1075 | SendTerseUpdateToAllClients(); | ||
1076 | } | 1069 | } |
1077 | 1070 | ||
1078 | public void TeleportWithMomentum(Vector3 pos) | 1071 | public void TeleportWithMomentum(Vector3 pos) |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs index bebc10c..eb7bfbd 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs | |||
@@ -33,6 +33,7 @@ using OpenMetaverse; | |||
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications; | 34 | using OpenSim.Framework.Communications; |
35 | using OpenSim.Framework.Servers; | 35 | using OpenSim.Framework.Servers; |
36 | using OpenSim.Region.CoreModules.Framework.EntityTransfer; | ||
36 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; | 38 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; |
38 | using OpenSim.Tests.Common; | 39 | using OpenSim.Tests.Common; |
@@ -47,6 +48,41 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
47 | [TestFixture] | 48 | [TestFixture] |
48 | public class ScenePresenceTeleportTests | 49 | public class ScenePresenceTeleportTests |
49 | { | 50 | { |
51 | [Test] | ||
52 | public void TestSameRegionTeleport() | ||
53 | { | ||
54 | TestHelpers.InMethod(); | ||
55 | // log4net.Config.XmlConfigurator.Configure(); | ||
56 | |||
57 | EntityTransferModule etm = new EntityTransferModule(); | ||
58 | |||
59 | IConfigSource config = new IniConfigSource(); | ||
60 | config.AddConfig("Modules"); | ||
61 | // Not strictly necessary since FriendsModule assumes it is the default (!) | ||
62 | config.Configs["Modules"].Set("EntityTransferModule", etm.Name); | ||
63 | |||
64 | TestScene scene = SceneHelpers.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000); | ||
65 | SceneHelpers.SetupSceneModules(scene, config, etm); | ||
66 | |||
67 | Vector3 teleportPosition = new Vector3(10, 11, 12); | ||
68 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | ||
69 | |||
70 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | ||
71 | sp.AbsolutePosition = new Vector3(30, 31, 32); | ||
72 | scene.RequestTeleportLocation( | ||
73 | sp.ControllingClient, | ||
74 | scene.RegionInfo.RegionHandle, | ||
75 | teleportPosition, | ||
76 | teleportLookAt, | ||
77 | (uint)TeleportFlags.ViaLocation); | ||
78 | |||
79 | Assert.That(sp.AbsolutePosition, Is.EqualTo(teleportPosition)); | ||
80 | |||
81 | // Lookat is sent to the client only - sp.Lookat does not yield the same thing (calculation from camera | ||
82 | // position instead). | ||
83 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); | ||
84 | } | ||
85 | |||
50 | /// <summary> | 86 | /// <summary> |
51 | /// Test a teleport between two regions that are not neighbours and do not share any neighbours in common. | 87 | /// Test a teleport between two regions that are not neighbours and do not share any neighbours in common. |
52 | /// </summary> | 88 | /// </summary> |
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs index 922eaaf..d192309 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs | |||
@@ -68,7 +68,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule | |||
68 | public Vector3 WorldPosition | 68 | public Vector3 WorldPosition |
69 | { | 69 | { |
70 | get { return GetSP().AbsolutePosition; } | 70 | get { return GetSP().AbsolutePosition; } |
71 | set { GetSP().TeleportWithMomentum(value); } | 71 | set { GetSP().Teleport(value); } |
72 | } | 72 | } |
73 | 73 | ||
74 | public bool IsChildAgent | 74 | public bool IsChildAgent |
diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs index c59a9e0..423c781 100644 --- a/OpenSim/Services/AvatarService/AvatarService.cs +++ b/OpenSim/Services/AvatarService/AvatarService.cs | |||
@@ -93,7 +93,7 @@ namespace OpenSim.Services.AvatarService | |||
93 | if (kvp.Key.StartsWith("_")) | 93 | if (kvp.Key.StartsWith("_")) |
94 | count++; | 94 | count++; |
95 | 95 | ||
96 | m_log.DebugFormat("[AVATAR SERVICE]: SetAvatar for {0}, attachs={1}", principalID, count); | 96 | // m_log.DebugFormat("[AVATAR SERVICE]: SetAvatar for {0}, attachs={1}", principalID, count); |
97 | m_Database.Delete("PrincipalID", principalID.ToString()); | 97 | m_Database.Delete("PrincipalID", principalID.ToString()); |
98 | 98 | ||
99 | AvatarBaseData av = new AvatarBaseData(); | 99 | AvatarBaseData av = new AvatarBaseData(); |