aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs36
1 files changed, 36 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 57f9141..4bf3e93 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -671,7 +671,24 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
671 if ((status & ScriptBaseClass.STATUS_PHYSICS) == ScriptBaseClass.STATUS_PHYSICS) 671 if ((status & ScriptBaseClass.STATUS_PHYSICS) == ScriptBaseClass.STATUS_PHYSICS)
672 { 672 {
673 if (value == 1) 673 if (value == 1)
674 {
675 SceneObjectGroup group = m_host.ParentGroup;
676 if(group == null)
677 return;
678 bool allow = true;
679 foreach(SceneObjectPart part in group.Children.Values)
680 {
681 if(part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0)
682 {
683 allow = false;
684 break;
685 }
686 }
687
688 if(!allow)
689 return;
674 m_host.ScriptSetPhysicsStatus(true); 690 m_host.ScriptSetPhysicsStatus(true);
691 }
675 else 692 else
676 m_host.ScriptSetPhysicsStatus(false); 693 m_host.ScriptSetPhysicsStatus(false);
677 } 694 }
@@ -802,6 +819,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
802 private void SetScale(SceneObjectPart part, LSL_Types.Vector3 scale) 819 private void SetScale(SceneObjectPart part, LSL_Types.Vector3 scale)
803 { 820 {
804 // TODO: this needs to trigger a persistance save as well 821 // TODO: this needs to trigger a persistance save as well
822
823 if(part == null || part.ParentGroup == null || part.ParentGroup.RootPart == null)
824 return;
825
826 if(part.ParentGroup.RootPart.PhysActor != null && part.ParentGroup.RootPart.PhysActor.IsPhysical)
827 {
828 if(scale.x > 10.0)
829 scale.x = 10.0;
830 if(scale.y > 10.0)
831 scale.y = 10.0;
832 if(scale.z > 10.0)
833 scale.z = 10.0;
834 }
835 if(scale.x > 65536.0)
836 scale.x = 65536.0;
837 if(scale.y > 65536.0)
838 scale.y = 65536.0;
839 if(scale.z > 65536.0)
840 scale.z = 65536.0;
805 LLVector3 tmp = part.Scale; 841 LLVector3 tmp = part.Scale;
806 tmp.X = (float)scale.x; 842 tmp.X = (float)scale.x;
807 tmp.Y = (float)scale.y; 843 tmp.Y = (float)scale.y;