aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs30
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;