diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 0b752c9..bcc9b37 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -204,6 +204,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
204 | get { return m_parts.Count; } | 204 | get { return m_parts.Count; } |
205 | } | 205 | } |
206 | 206 | ||
207 | protected Quaternion m_rotation = Quaternion.Identity; | ||
208 | |||
209 | public virtual Quaternion Rotation | ||
210 | { | ||
211 | get { return m_rotation; } | ||
212 | set { m_rotation = value; } | ||
213 | } | ||
214 | |||
207 | public Quaternion GroupRotation | 215 | public Quaternion GroupRotation |
208 | { | 216 | { |
209 | get { return m_rootPart.RotationOffset; } | 217 | get { return m_rootPart.RotationOffset; } |
@@ -1959,12 +1967,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1959 | /// Note: this may not be cused by opensim (it probably should) but it's used by | 1967 | /// Note: this may not be cused by opensim (it probably should) but it's used by |
1960 | /// external modules. | 1968 | /// external modules. |
1961 | /// </summary> | 1969 | /// </summary> |
1962 | public void SendGroupRootUpdate() | 1970 | public void SendGroupRootTerseUpdate() |
1963 | { | 1971 | { |
1964 | if (IsDeleted) | 1972 | if (IsDeleted) |
1965 | return; | 1973 | return; |
1966 | 1974 | ||
1967 | RootPart.SendFullUpdateToAllClients(); | 1975 | RootPart.SendTerseUpdateToAllClients(); |
1968 | } | 1976 | } |
1969 | 1977 | ||
1970 | public void QueueForUpdateCheck() | 1978 | public void QueueForUpdateCheck() |
@@ -2946,12 +2954,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2946 | /// <param name="rot"></param> | 2954 | /// <param name="rot"></param> |
2947 | public void UpdateGroupRotationR(Quaternion rot) | 2955 | public void UpdateGroupRotationR(Quaternion rot) |
2948 | { | 2956 | { |
2949 | |||
2950 | m_rootPart.UpdateRotation(rot); | 2957 | m_rootPart.UpdateRotation(rot); |
2951 | if (m_rootPart.PhysActor != null) | 2958 | |
2959 | PhysicsActor actor = m_rootPart.PhysActor; | ||
2960 | if (actor != null) | ||
2952 | { | 2961 | { |
2953 | m_rootPart.PhysActor.Orientation = m_rootPart.RotationOffset; | 2962 | actor.Orientation = m_rootPart.RotationOffset; |
2954 | m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); | 2963 | m_scene.PhysicsScene.AddPhysicsActorTaint(actor); |
2955 | } | 2964 | } |
2956 | 2965 | ||
2957 | HasGroupChanged = true; | 2966 | HasGroupChanged = true; |
@@ -2966,11 +2975,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2966 | public void UpdateGroupRotationPR(Vector3 pos, Quaternion rot) | 2975 | public void UpdateGroupRotationPR(Vector3 pos, Quaternion rot) |
2967 | { | 2976 | { |
2968 | m_rootPart.UpdateRotation(rot); | 2977 | m_rootPart.UpdateRotation(rot); |
2969 | if (m_rootPart.PhysActor != null) | 2978 | |
2979 | PhysicsActor actor = m_rootPart.PhysActor; | ||
2980 | if (actor != null) | ||
2970 | { | 2981 | { |
2971 | m_rootPart.PhysActor.Orientation = m_rootPart.RotationOffset; | 2982 | actor.Orientation = m_rootPart.RotationOffset; |
2972 | m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); | 2983 | m_scene.PhysicsScene.AddPhysicsActorTaint(actor); |
2973 | } | 2984 | } |
2985 | |||
2974 | AbsolutePosition = pos; | 2986 | AbsolutePosition = pos; |
2975 | 2987 | ||
2976 | HasGroupChanged = true; | 2988 | HasGroupChanged = true; |