diff options
3 files changed, 7 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 54ef039..ba10423 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1575,6 +1575,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1575 | if (distanceToTarget <= 1) | 1575 | if (distanceToTarget <= 1) |
1576 | { | 1576 | { |
1577 | // We are close enough to the target | 1577 | // We are close enough to the target |
1578 | AbsolutePosition = MoveToPositionTarget; | ||
1578 | ResetMoveToTarget(); | 1579 | ResetMoveToTarget(); |
1579 | updated = true; | 1580 | updated = true; |
1580 | } | 1581 | } |
@@ -1713,7 +1714,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1713 | /// </summary> | 1714 | /// </summary> |
1714 | public void ResetMoveToTarget() | 1715 | public void ResetMoveToTarget() |
1715 | { | 1716 | { |
1716 | // m_log.DebugFormat("[SCENE PRESENCE]: Resetting move to target for {0}", Name); | 1717 | m_log.DebugFormat("[SCENE PRESENCE]: Resetting move to target for {0}", Name); |
1717 | 1718 | ||
1718 | m_moveToPositionInProgress = false; | 1719 | m_moveToPositionInProgress = false; |
1719 | MoveToPositionTarget = Vector3.Zero; | 1720 | MoveToPositionTarget = Vector3.Zero; |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index dd94240..fdc3485 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -70,12 +70,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
70 | // presence.Name, presence.AbsolutePosition, presence.MoveToPositionTarget, distanceToTarget); | 70 | // presence.Name, presence.AbsolutePosition, presence.MoveToPositionTarget, distanceToTarget); |
71 | 71 | ||
72 | // Check the error term of the current position in relation to the target position | 72 | // Check the error term of the current position in relation to the target position |
73 | if (distanceToTarget <= 1) | 73 | if (distanceToTarget <= 2) |
74 | { | 74 | { |
75 | // m_log.DebugFormat("[NPC MODULE]: Stopping movement of npc {0} {1}", presence.Name, presence.UUID); | 75 | // m_log.DebugFormat("[NPC MODULE]: Stopping movement of npc {0} {1}", presence.Name, presence.UUID); |
76 | // We are close enough to the target for now | 76 | // We are close enough to the target for now |
77 | presence.ResetMoveToTarget(); | ||
78 | presence.Velocity = Vector3.Zero; | 77 | presence.Velocity = Vector3.Zero; |
78 | presence.AbsolutePosition = presence.MoveToPositionTarget; | ||
79 | presence.ResetMoveToTarget(); | ||
79 | 80 | ||
80 | // FIXME: This doesn't work | 81 | // FIXME: This doesn't work |
81 | if (presence.PhysicsActor.Flying) | 82 | if (presence.PhysicsActor.Flying) |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs index 545819f..c9dddba 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs | |||
@@ -130,6 +130,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
130 | 130 | ||
131 | double distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos); | 131 | double distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos); |
132 | Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on first move"); | 132 | Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on first move"); |
133 | Assert.That(npc.AbsolutePosition, Is.EqualTo(targetPos)); | ||
133 | 134 | ||
134 | // Try a second movement | 135 | // Try a second movement |
135 | startPos = npc.AbsolutePosition; | 136 | startPos = npc.AbsolutePosition; |
@@ -149,6 +150,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
149 | 150 | ||
150 | distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos); | 151 | distanceToTarget = Util.GetDistanceTo(npc.AbsolutePosition, targetPos); |
151 | Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on second move"); | 152 | Assert.That(distanceToTarget, Is.LessThan(1), "NPC not within 1 unit of target position on second move"); |
153 | Assert.That(npc.AbsolutePosition, Is.EqualTo(targetPos)); | ||
152 | } | 154 | } |
153 | } | 155 | } |
154 | } \ No newline at end of file | 156 | } \ No newline at end of file |