diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index dd3b8aa79f..ba5f4d5ebb 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -2633,6 +2633,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { m_log.Error("Unable to send part Physics Proprieties - exception: " + ex.ToString()); } + part.UpdatePhysRequired = false; } } diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 18069afc89..ccc3f32467 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -1521,7 +1521,11 @@ namespace OpenSim.Region.Framework.Scenes { SceneObjectPart part = GetSceneObjectPart(localID); if (part != null) + { part.UpdateExtraPhysics(PhysData); + if (part.UpdatePhysRequired) + remoteClient.SendPartPhysicsProprieties(part); + } } } } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 84b4bb3ae2..85d2bee3df 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -1030,6 +1030,7 @@ namespace OpenSim.Region.Framework.Scenes } public UpdateRequired UpdateFlag { get; set; } + public bool UpdatePhysRequired { get; set; } /// /// Used for media on a prim. @@ -1410,6 +1411,7 @@ namespace OpenSim.Region.Framework.Scenes if(ParentGroup != null) ParentGroup.HasGroupChanged = true; ScheduleFullUpdateIfNone(); + UpdatePhysRequired = true; } } } @@ -1501,12 +1503,15 @@ namespace OpenSim.Region.Framework.Scenes m_physicsShapeType = DefaultPhysicsShapeType(); else m_physicsShapeType = value; - ScheduleFullUpdateIfNone(); } else m_physicsShapeType = DefaultPhysicsShapeType(); + if (ParentGroup != null) ParentGroup.HasGroupChanged = true; + + if(m_physicsShapeType != value) + UpdatePhysRequired = true; } } @@ -1518,8 +1523,11 @@ namespace OpenSim.Region.Framework.Scenes if (value >=1 && value <= 22587.0) { m_density = value; - ScheduleFullUpdateIfNone(); + UpdatePhysRequired = true; } + + ScheduleFullUpdateIfNone(); + if (ParentGroup != null) ParentGroup.HasGroupChanged = true; } @@ -1529,11 +1537,18 @@ namespace OpenSim.Region.Framework.Scenes { get { return m_gravitymod; } set - { if( value >= -1 && value <=28.0f) - m_gravitymod = value; + { + if( value >= -1 && value <=28.0f) + { + m_gravitymod = value; + UpdatePhysRequired = true; + } + ScheduleFullUpdateIfNone(); + if (ParentGroup != null) ParentGroup.HasGroupChanged = true; + } } @@ -1545,8 +1560,11 @@ namespace OpenSim.Region.Framework.Scenes if (value >= 0 && value <= 255.0f) { m_friction = value; - ScheduleFullUpdateIfNone(); + UpdatePhysRequired = true; } + + ScheduleFullUpdateIfNone(); + if (ParentGroup != null) ParentGroup.HasGroupChanged = true; } @@ -1560,8 +1578,11 @@ namespace OpenSim.Region.Framework.Scenes if (value >= 0 && value <= 1.0f) { m_bounce = value; - ScheduleFullUpdateIfNone(); + UpdatePhysRequired = true; } + + ScheduleFullUpdateIfNone(); + if (ParentGroup != null) ParentGroup.HasGroupChanged = true; }