diff options
author | Justin Clark-Casey (justincc) | 2011-08-10 23:56:19 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-08-10 23:56:19 +0100 |
commit | 7f499ff3f386d57bcd81ebb3f58f110011100604 (patch) | |
tree | bab34762e4a9cb9e739df591360cec3405bb4e57 /OpenSim/Region/ScriptEngine/Shared/Api/Implementation | |
parent | fly and no fly constants for osNpcMoveToTarget() (diff) | |
download | opensim-SC_OLD-7f499ff3f386d57bcd81ebb3f58f110011100604.zip opensim-SC_OLD-7f499ff3f386d57bcd81ebb3f58f110011100604.tar.gz opensim-SC_OLD-7f499ff3f386d57bcd81ebb3f58f110011100604.tar.bz2 opensim-SC_OLD-7f499ff3f386d57bcd81ebb3f58f110011100604.tar.xz |
Add a OS_NPC_LAND_AT_TARGET option to osMoveToTarget()
Default for this function is now not to automatically land.
This allows better control by scripts when an avatar is going to be landing on a prim rather than the ground.
Stopping the avatar involves faking a collision, to avoid the pid controller making it overshoot.
A better approach would be to gradually slow the avatar as we near the target
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 9b5d8d9..f83304b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -2209,11 +2209,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2209 | if (module != null) | 2209 | if (module != null) |
2210 | { | 2210 | { |
2211 | Vector3 pos = new Vector3((float) position.x, (float) position.y, (float) position.z); | 2211 | Vector3 pos = new Vector3((float) position.x, (float) position.y, (float) position.z); |
2212 | module.MoveToTarget(new UUID(npc.m_string), World, pos, false); | 2212 | module.MoveToTarget(new UUID(npc.m_string), World, pos, false, true); |
2213 | } | 2213 | } |
2214 | } | 2214 | } |
2215 | 2215 | ||
2216 | public void osNpcMoveToTarget(LSL_Key npc, LSL_Vector position, int noFly) | 2216 | public void osNpcMoveToTarget(LSL_Key npc, LSL_Vector position, int moveParams) |
2217 | { | 2217 | { |
2218 | CheckThreatLevel(ThreatLevel.High, "osNpcMoveToTarget"); | 2218 | CheckThreatLevel(ThreatLevel.High, "osNpcMoveToTarget"); |
2219 | 2219 | ||
@@ -2221,7 +2221,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2221 | if (module != null) | 2221 | if (module != null) |
2222 | { | 2222 | { |
2223 | Vector3 pos = new Vector3((float)position.x, (float)position.y, (float)position.z); | 2223 | Vector3 pos = new Vector3((float)position.x, (float)position.y, (float)position.z); |
2224 | module.MoveToTarget(new UUID(npc.m_string), World, pos, noFly != 0); | 2224 | module.MoveToTarget( |
2225 | new UUID(npc.m_string), | ||
2226 | World, | ||
2227 | pos, | ||
2228 | (moveParams & ScriptBaseClass.OS_NPC_NO_FLY) != 0, | ||
2229 | (moveParams & ScriptBaseClass.OS_NPC_LAND_AT_TARGET) != 0); | ||
2225 | } | 2230 | } |
2226 | } | 2231 | } |
2227 | 2232 | ||