From 8ae7dc628b2681b02c43a5acd1e1bdf4f33b1f3e Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 20 Jul 2008 15:19:26 +0000 Subject: Make the max sizes of physical and nonphysical prims configurable in OpenSim.ini Defaulted to 65536 and 10, respectively --- OpenSim/Region/Environment/Scenes/Scene.cs | 16 ++++- .../Region/Environment/Scenes/SceneObjectGroup.cs | 72 +++++++++++----------- .../ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 28 ++++----- .../Shared/Api/Implementation/LSL_Api.cs | 28 ++++----- 4 files changed, 79 insertions(+), 65 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 0ab729d..f602e9f 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -88,6 +88,8 @@ namespace OpenSim.Region.Environment.Scenes /// Are we applying physics to any of the prims in this scene? /// public bool m_physicalPrim; + public float m_maxNonphys = 65536; + public float m_maxPhys = 10; public bool m_seeIntoRegionFromNeighbor; public int MaxUndoCount = 5; @@ -308,6 +310,18 @@ namespace OpenSim.Region.Environment.Scenes m_simulatorVersion = simulatorVersion + " ChilTasks:" + m_seeIntoRegionFromNeighbor.ToString() + " PhysPrim:" + m_physicalPrim.ToString(); + + try + { + IConfig startupConfig = m_config.Configs["Startup"]; + m_maxNonphys = startupConfig.GetFloat("NonPhysicalPrimMax", 65536.0f); + m_maxPhys = startupConfig.GetFloat("PhysicalPrimMax", 10.0f); + } + catch (Exception) + { + m_log.Warn("Failed to load StartupConfig"); + } + } #endregion @@ -1146,7 +1160,7 @@ namespace OpenSim.Region.Environment.Scenes } catch (Exception) { - m_log.Warn("Failed to load StarupConfg"); + m_log.Warn("Failed to load StartupConfig"); } if (drawPrimVolume) diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 82e395d..c2ce9d8 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -2131,12 +2131,12 @@ namespace OpenSim.Region.Environment.Scenes /// public void Resize(LLVector3 scale, uint localID) { - if(scale.X > 65536.0f) - scale.X = 65536.0f; - if(scale.Y > 65536.0f) - scale.Y = 65536.0f; - if(scale.Z > 65536.0f) - scale.Z = 65536.0f; + if(scale.X > m_scene.m_maxNonphys) + scale.X = m_scene.m_maxNonphys; + if(scale.Y > m_scene.m_maxNonphys) + scale.Y = m_scene.m_maxNonphys; + if(scale.Z > m_scene.m_maxNonphys) + scale.Z = m_scene.m_maxNonphys; SceneObjectPart part = GetChildPart(localID); if (part != null) @@ -2146,12 +2146,12 @@ namespace OpenSim.Region.Environment.Scenes { if(part.PhysActor.IsPhysical) { - if(scale.X > 10.0f) - scale.X = 10.0f; - if(scale.Y > 10.0f) - scale.Y = 10.0f; - if(scale.Z > 10.0f) - scale.Z = 10.0f; + if(scale.X > m_scene.m_maxPhys) + scale.X = m_scene.m_maxPhys; + if(scale.Y > m_scene.m_maxPhys) + scale.Y = m_scene.m_maxPhys; + if(scale.Z > m_scene.m_maxPhys) + scale.Z = m_scene.m_maxPhys; } part.PhysActor.Size = new PhysicsVector(scale.X, scale.Y, scale.Z); @@ -2179,20 +2179,20 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = GetChildPart(localID); if (part != null) { - if(scale.X > 65536.0f) - scale.X = 65536.0f; - if(scale.Y > 65536.0f) - scale.Y = 65536.0f; - if(scale.Z > 65536.0f) - scale.Z = 65536.0f; + if(scale.X > m_scene.m_maxNonphys) + scale.X = m_scene.m_maxNonphys; + if(scale.Y > m_scene.m_maxNonphys) + scale.Y = m_scene.m_maxNonphys; + if(scale.Z > m_scene.m_maxNonphys) + scale.Z = m_scene.m_maxNonphys; if(part.PhysActor != null && part.PhysActor.IsPhysical) { - if(scale.X > 10.0f) - scale.X = 10.0f; - if(scale.Y > 10.0f) - scale.Y = 10.0f; - if(scale.Z > 10.0f) - scale.Z = 10.0f; + if(scale.X > m_scene.m_maxPhys) + scale.X = m_scene.m_maxPhys; + if(scale.Y > m_scene.m_maxPhys) + scale.Y = m_scene.m_maxPhys; + if(scale.Z > m_scene.m_maxPhys) + scale.Z = m_scene.m_maxPhys; } float x = (scale.X / part.Scale.X); float y = (scale.Y / part.Scale.Y); @@ -2213,25 +2213,25 @@ namespace OpenSim.Region.Environment.Scenes if(part.PhysActor != null && part.PhysActor.IsPhysical) { - if(oldSize.X*x > 10.0f) + if(oldSize.X*x > m_scene.m_maxPhys) { - f = 10.0f / oldSize.X; + f = m_scene.m_maxPhys / oldSize.X; a = f / x; x *= a; y *= a; z *= a; } - if(oldSize.Y*y > 10.0f) + if(oldSize.Y*y > m_scene.m_maxPhys) { - f = 10.0f / oldSize.Y; + f = m_scene.m_maxPhys / oldSize.Y; a = f / y; x *= a; y *= a; z *= a; } - if(oldSize.Z*z > 10.0f) + if(oldSize.Z*z > m_scene.m_maxPhys) { - f = 10.0f / oldSize.Z; + f = m_scene.m_maxPhys / oldSize.Z; a = f / z; x *= a; y *= a; @@ -2240,25 +2240,25 @@ namespace OpenSim.Region.Environment.Scenes } else { - if(oldSize.X*x > 65536.0f) + if(oldSize.X*x > m_scene.m_maxNonphys) { - f = 65536.0f / oldSize.X; + f = m_scene.m_maxNonphys / oldSize.X; a = f / x; x *= a; y *= a; z *= a; } - if(oldSize.Y*y > 65536.0f) + if(oldSize.Y*y > m_scene.m_maxNonphys) { - f = 65536.0f / oldSize.Y; + f = m_scene.m_maxNonphys / oldSize.Y; a = f / y; x *= a; y *= a; z *= a; } - if(oldSize.Z*z > 65536.0f) + if(oldSize.Z*z > m_scene.m_maxNonphys) { - f = 65536.0f / oldSize.Z; + f = m_scene.m_maxNonphys / oldSize.Z; a = f / z; x *= a; y *= a; diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 40e225d..7745d95 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -933,7 +933,7 @@ namespace OpenSim.Region.ScriptEngine.Common bool allow = true; foreach(SceneObjectPart part in group.Children.Values) { - if(part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0) + if(part.Scale.X > World.m_maxPhys || part.Scale.Y > World.m_maxPhys || part.Scale.Z > World.m_maxPhys) { allow = false; break; @@ -1066,19 +1066,19 @@ namespace OpenSim.Region.ScriptEngine.Common if(part.ParentGroup.RootPart.PhysActor != null && part.ParentGroup.RootPart.PhysActor.IsPhysical) { - if(scale.x > 10.0) - scale.x = 10.0; - if(scale.y > 10.0) - scale.y = 10.0; - if(scale.z > 10.0) - scale.z = 10.0; - } - if(scale.x > 65536.0) - scale.x = 65536.0; - if(scale.y > 65536.0) - scale.y = 65536.0; - if(scale.z > 65536.0) - scale.z = 65536.0; + if(scale.x > World.m_maxPhys) + scale.x = World.m_maxPhys; + if(scale.y > World.m_maxPhys) + scale.y = World.m_maxPhys; + if(scale.z > World.m_maxPhys) + scale.z = World.m_maxPhys; + } + if(scale.x > World.m_maxNonphys) + scale.x = World.m_maxNonphys; + if(scale.y > World.m_maxNonphys) + scale.y = World.m_maxNonphys; + if(scale.z > World.m_maxNonphys) + scale.z = World.m_maxNonphys; LLVector3 tmp = part.Scale; tmp.X = (float)scale.x; tmp.Y = (float)scale.y; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index c597661..79bd6fe 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -775,7 +775,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api bool allow = true; foreach(SceneObjectPart part in group.Children.Values) { - if(part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0) + if(part.Scale.X > World.m_maxPhys || part.Scale.Y > World.m_maxPhys || part.Scale.Z > World.m_maxPhys) { allow = false; break; @@ -922,19 +922,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if(part.ParentGroup.RootPart.PhysActor != null && part.ParentGroup.RootPart.PhysActor.IsPhysical) { - if(scale.x > 10.0) - scale.x = 10.0; - if(scale.y > 10.0) - scale.y = 10.0; - if(scale.z > 10.0) - scale.z = 10.0; - } - if(scale.x > 65536.0) - scale.x = 65536.0; - if(scale.y > 65536.0) - scale.y = 65536.0; - if(scale.z > 65536.0) - scale.z = 65536.0; + if(scale.x > World.m_maxPhys) + scale.x = World.m_maxPhys; + if(scale.y > World.m_maxPhys) + scale.y = World.m_maxPhys; + if(scale.z > World.m_maxPhys) + scale.z = World.m_maxPhys; + } + if(scale.x > World.m_maxNonphys) + scale.x = World.m_maxNonphys; + if(scale.y > World.m_maxNonphys) + scale.y = World.m_maxNonphys; + if(scale.z > World.m_maxNonphys) + scale.z = World.m_maxNonphys; LLVector3 tmp = part.Scale; tmp.X = (float)scale.x; tmp.Y = (float)scale.y; -- cgit v1.1