diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 0e2e3c7..9a2707b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -529,21 +529,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
529 | set | 529 | set |
530 | { | 530 | { |
531 | Vector3 val = value; | 531 | Vector3 val = value; |
532 | 532 | if (Scene != null && !IsAttachmentCheckFull() | |
533 | if (!IsAttachmentCheckFull() && !Scene.LoadingPrims && | 533 | && !Scene.LoadingPrims && |
534 | ( Scene.TestBorderCross(val, Cardinals.E) || | 534 | (Scene.TestBorderCross(val, Cardinals.E) || |
535 | Scene.TestBorderCross(val, Cardinals.W) || | 535 | Scene.TestBorderCross(val, Cardinals.W) || |
536 | Scene.TestBorderCross(val, Cardinals.N) || | 536 | Scene.TestBorderCross(val, Cardinals.N) || |
537 | Scene.TestBorderCross(val, Cardinals.S)) | 537 | Scene.TestBorderCross(val, Cardinals.S)) |
538 | ) | 538 | ) |
539 | { | 539 | { |
540 | if (!inTransit) | 540 | if (!inTransit) |
541 | { | 541 | { |
542 | inTransit = true; | 542 | inTransit = true; |
543 | SOGCrossDelegate d = CrossAsync; | 543 | SOGCrossDelegate d = CrossAsync; |
544 | d.BeginInvoke(this, val, CrossAsyncCompleted, d); | 544 | d.BeginInvoke(this, val, CrossAsyncCompleted, d); |
545 | } | 545 | } |
546 | return; | 546 | return; |
547 | } | 547 | } |
548 | 548 | ||
549 | if (RootPart.GetStatusSandbox()) | 549 | if (RootPart.GetStatusSandbox()) |
@@ -582,6 +582,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
582 | av.sitSOGmoved(); | 582 | av.sitSOGmoved(); |
583 | } | 583 | } |
584 | 584 | ||
585 | |||
585 | // now that position is changed tell it to scripts | 586 | // now that position is changed tell it to scripts |
586 | if (triggerScriptEvent) | 587 | if (triggerScriptEvent) |
587 | { | 588 | { |
@@ -591,7 +592,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
591 | } | 592 | } |
592 | } | 593 | } |
593 | 594 | ||
594 | Scene.EventManager.TriggerParcelPrimCountTainted(); | 595 | if (Scene != null) |
596 | Scene.EventManager.TriggerParcelPrimCountTainted(); | ||
597 | |||
595 | } | 598 | } |
596 | } | 599 | } |
597 | 600 | ||
@@ -789,7 +792,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
789 | { | 792 | { |
790 | if (agent.ParentUUID != UUID.Zero) | 793 | if (agent.ParentUUID != UUID.Zero) |
791 | { | 794 | { |
792 | agent.ClearControls(); | 795 | agent.HandleForceReleaseControls(agent.ControllingClient,agent.UUID); |
793 | agent.ParentPart = null; | 796 | agent.ParentPart = null; |
794 | // agent.ParentPosition = Vector3.Zero; | 797 | // agent.ParentPosition = Vector3.Zero; |
795 | // agent.ParentUUID = UUID.Zero; | 798 | // agent.ParentUUID = UUID.Zero; |