diff options
Diffstat (limited to 'OpenSim/Region')
3 files changed, 22 insertions, 8 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index d46adb8..0a865ab 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -6601,8 +6601,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6601 | 6601 | ||
6602 | AgentRequestSit handlerAgentRequestSit = OnAgentRequestSit; | 6602 | AgentRequestSit handlerAgentRequestSit = OnAgentRequestSit; |
6603 | if (handlerAgentRequestSit != null) | 6603 | if (handlerAgentRequestSit != null) |
6604 | handlerAgentRequestSit(this, agentRequestSit.AgentData.AgentID, | 6604 | if (!(agentRequestSit.AgentData == null |
6605 | agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); | 6605 | || agentRequestSit.TargetObject == null |
6606 | || agentRequestSit.TargetObject.TargetID == null | ||
6607 | || agentRequestSit.TargetObject.Offset == null)) | ||
6608 | { | ||
6609 | var sp = m_scene.GetScenePresence(agentRequestSit.AgentData.AgentID); | ||
6610 | if (sp == null || sp.ParentID != 0) // ignore packet if agent is already sitting | ||
6611 | return true; | ||
6612 | |||
6613 | handlerAgentRequestSit(this, agentRequestSit.AgentData.AgentID, | ||
6614 | agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); | ||
6615 | } | ||
6606 | } | 6616 | } |
6607 | return true; | 6617 | return true; |
6608 | } | 6618 | } |
diff --git a/OpenSim/Region/Framework/Interfaces/ISearchModule.cs b/OpenSim/Region/Framework/Interfaces/ISearchModule.cs index 64bf72c..d56d188 100644 --- a/OpenSim/Region/Framework/Interfaces/ISearchModule.cs +++ b/OpenSim/Region/Framework/Interfaces/ISearchModule.cs | |||
@@ -31,6 +31,6 @@ namespace OpenSim.Framework | |||
31 | { | 31 | { |
32 | public interface ISearchModule | 32 | public interface ISearchModule |
33 | { | 33 | { |
34 | 34 | void Refresh(); | |
35 | } | 35 | } |
36 | } | 36 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 1e1e574..525e575 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -2260,7 +2260,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2260 | return end; | 2260 | return end; |
2261 | } | 2261 | } |
2262 | 2262 | ||
2263 | protected LSL_Vector GetSetPosTarget(SceneObjectPart part, LSL_Vector targetPos, LSL_Vector fromPos) | 2263 | protected LSL_Vector GetSetPosTarget(SceneObjectPart part, LSL_Vector targetPos, LSL_Vector fromPos, bool adjust) |
2264 | { | 2264 | { |
2265 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) | 2265 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) |
2266 | return fromPos; | 2266 | return fromPos; |
@@ -2276,9 +2276,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2276 | if ((targetPos.z < ground) && disable_underground_movement && m_host.ParentGroup.AttachmentPoint == 0) | 2276 | if ((targetPos.z < ground) && disable_underground_movement && m_host.ParentGroup.AttachmentPoint == 0) |
2277 | targetPos.z = ground; | 2277 | targetPos.z = ground; |
2278 | } | 2278 | } |
2279 | LSL_Vector real_vec = SetPosAdjust(fromPos, targetPos); | 2279 | if (adjust) |
2280 | return SetPosAdjust(fromPos, targetPos); | ||
2280 | 2281 | ||
2281 | return real_vec; | 2282 | return targetPos; |
2282 | } | 2283 | } |
2283 | 2284 | ||
2284 | /// <summary> | 2285 | /// <summary> |
@@ -2293,7 +2294,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2293 | return; | 2294 | return; |
2294 | 2295 | ||
2295 | LSL_Vector currentPos = GetPartLocalPos(part); | 2296 | LSL_Vector currentPos = GetPartLocalPos(part); |
2296 | LSL_Vector toPos = GetSetPosTarget(part, targetPos, currentPos); | 2297 | LSL_Vector toPos = GetSetPosTarget(part, targetPos, currentPos, adjust); |
2297 | 2298 | ||
2298 | 2299 | ||
2299 | if (part.ParentGroup.RootPart == part) | 2300 | if (part.ParentGroup.RootPart == part) |
@@ -7925,7 +7926,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7925 | return null; | 7926 | return null; |
7926 | 7927 | ||
7927 | v=rules.GetVector3Item(idx++); | 7928 | v=rules.GetVector3Item(idx++); |
7928 | currentPosition = GetSetPosTarget(part, v, currentPosition); | 7929 | if (part.IsRoot && !part.ParentGroup.IsAttachment) |
7930 | currentPosition = GetSetPosTarget(part, v, currentPosition, true); | ||
7931 | else | ||
7932 | currentPosition = GetSetPosTarget(part, v, currentPosition, false); | ||
7929 | positionChanged = true; | 7933 | positionChanged = true; |
7930 | 7934 | ||
7931 | break; | 7935 | break; |