diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3db6710..f68a5b3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -656,6 +656,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
656 | if (triggerScriptEvent) | 656 | if (triggerScriptEvent) |
657 | part.TriggerScriptChangedEvent(Changed.POSITION); | 657 | part.TriggerScriptChangedEvent(Changed.POSITION); |
658 | } | 658 | } |
659 | |||
660 | /* | ||
661 | This seems not needed and should not be needed: | ||
662 | sp absolute position depends on sit part absolute position fixed above. | ||
663 | sp ParentPosition is not used anywhere. | ||
664 | Since presence is sitting, viewer considers it 'linked' to root prim, so it will move/rotate it | ||
665 | Sending a extra packet with avatar position is not only bandwidth waste, but may cause jitter in viewers due to UPD nature. | ||
666 | |||
659 | if (!m_dupeInProgress) | 667 | if (!m_dupeInProgress) |
660 | { | 668 | { |
661 | foreach (ScenePresence av in m_linkedAvatars) | 669 | foreach (ScenePresence av in m_linkedAvatars) |
@@ -665,12 +673,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
665 | { | 673 | { |
666 | Vector3 offset = p.GetWorldPosition() - av.ParentPosition; | 674 | Vector3 offset = p.GetWorldPosition() - av.ParentPosition; |
667 | av.AbsolutePosition += offset; | 675 | av.AbsolutePosition += offset; |
668 | av.ParentPosition = p.GetWorldPosition(); //ParentPosition gets cleared by AbsolutePosition | 676 | // av.ParentPosition = p.GetWorldPosition(); //ParentPosition gets cleared by AbsolutePosition |
669 | av.SendAvatarDataToAllAgents(); | 677 | av.SendAvatarDataToAllAgents(); |
670 | } | 678 | } |
671 | } | 679 | } |
672 | } | 680 | } |
673 | 681 | */ | |
674 | //if (m_rootPart.PhysActor != null) | 682 | //if (m_rootPart.PhysActor != null) |
675 | //{ | 683 | //{ |
676 | //m_rootPart.PhysActor.Position = | 684 | //m_rootPart.PhysActor.Position = |
@@ -701,8 +709,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
701 | if (agent.ParentUUID != UUID.Zero) | 709 | if (agent.ParentUUID != UUID.Zero) |
702 | { | 710 | { |
703 | agent.ParentPart = null; | 711 | agent.ParentPart = null; |
704 | agent.ParentPosition = Vector3.Zero; | 712 | // agent.ParentPosition = Vector3.Zero; |
705 | // agent.ParentUUID = UUID.Zero; | 713 | // agent.ParentUUID = UUID.Zero; |
706 | } | 714 | } |
707 | } | 715 | } |
708 | 716 | ||
@@ -3815,7 +3823,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3815 | else | 3823 | else |
3816 | // ugly rotation update of all parts | 3824 | // ugly rotation update of all parts |
3817 | { | 3825 | { |
3818 | group.AbsolutePosition = AbsolutePosition; | 3826 | group.ResetChildPrimPhysicsPositions(); |
3819 | } | 3827 | } |
3820 | 3828 | ||
3821 | } | 3829 | } |