diff options
author | Justin Clark-Casey (justincc) | 2011-09-21 19:28:41 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-09-21 19:28:41 +0100 |
commit | 8159fd7110459246ff61a41800899f5d854eceee (patch) | |
tree | afd9ec10e0ec922c668422101a460ec319b23522 /OpenSim/Region/OptionalModules/World | |
parent | Remove vestigal OpenSim.Data mono addins extension points that don't look lik... (diff) | |
download | opensim-SC_OLD-8159fd7110459246ff61a41800899f5d854eceee.zip opensim-SC_OLD-8159fd7110459246ff61a41800899f5d854eceee.tar.gz opensim-SC_OLD-8159fd7110459246ff61a41800899f5d854eceee.tar.bz2 opensim-SC_OLD-8159fd7110459246ff61a41800899f5d854eceee.tar.xz |
When calling osNpcMoveTo(), rotate the avatar in the direction of travel.
This stops the npc walking backwards if the target is directly behind.
This means that the npc no longer returns to its original rotation once movement has finished.
If you want this behaviour, please store and reset the original rotation after movement.
This is somewhat to address http://opensimulator.org/mantis/view.php?id=5678
Diffstat (limited to 'OpenSim/Region/OptionalModules/World')
-rw-r--r-- | OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs index 246bc34..1a0d0c7 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs | |||
@@ -182,18 +182,21 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
182 | scene.Update(); | 182 | scene.Update(); |
183 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); | 183 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); |
184 | 184 | ||
185 | Vector3 targetPos = startPos + new Vector3(0, 0, 10); | 185 | Vector3 targetPos = startPos + new Vector3(0, 10, 0); |
186 | npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false); | 186 | npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false); |
187 | 187 | ||
188 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); | 188 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); |
189 | //Assert.That(npc.Rotation, Is.EqualTo(new Quaternion(0, 0, 0.7071068f, 0.7071068f))); | ||
190 | Assert.That( | ||
191 | npc.Rotation, new QuaternionToleranceConstraint(new Quaternion(0, 0, 0.7071068f, 0.7071068f), 0.000001)); | ||
189 | 192 | ||
190 | scene.Update(); | 193 | scene.Update(); |
191 | 194 | ||
192 | // We should really check the exact figure. | 195 | // We should really check the exact figure. |
193 | Assert.That(npc.AbsolutePosition.X, Is.EqualTo(startPos.X)); | 196 | Assert.That(npc.AbsolutePosition.X, Is.EqualTo(startPos.X)); |
194 | Assert.That(npc.AbsolutePosition.Y, Is.EqualTo(startPos.Y)); | 197 | Assert.That(npc.AbsolutePosition.Y, Is.GreaterThan(startPos.Y)); |
195 | Assert.That(npc.AbsolutePosition.Z, Is.GreaterThan(startPos.Z)); | 198 | Assert.That(npc.AbsolutePosition.Z, Is.EqualTo(startPos.Z)); |
196 | Assert.That(npc.AbsolutePosition.Z, Is.LessThan(targetPos.Z)); | 199 | Assert.That(npc.AbsolutePosition.Z, Is.LessThan(targetPos.X)); |
197 | 200 | ||
198 | for (int i = 0; i < 10; i++) | 201 | for (int i = 0; i < 10; i++) |
199 | scene.Update(); | 202 | scene.Update(); |
@@ -208,6 +211,11 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
208 | targetPos = startPos + new Vector3(10, 0, 0); | 211 | targetPos = startPos + new Vector3(10, 0, 0); |
209 | npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false); | 212 | npcModule.MoveToTarget(npc.UUID, scene, targetPos, false, false); |
210 | 213 | ||
214 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); | ||
215 | // Assert.That(npc.Rotation, Is.EqualTo(new Quaternion(0, 0, 0, 1))); | ||
216 | Assert.That( | ||
217 | npc.Rotation, new QuaternionToleranceConstraint(new Quaternion(0, 0, 0, 1), 0.000001)); | ||
218 | |||
211 | scene.Update(); | 219 | scene.Update(); |
212 | 220 | ||
213 | // We should really check the exact figure. | 221 | // We should really check the exact figure. |