aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares (Dan Olivares)2009-12-03 20:21:10 -0500
committerTeravus Ovares (Dan Olivares)2009-12-03 20:21:10 -0500
commit781db43a7665cf0c219889e85eadd7cdc4e8b79b (patch)
tree34c3541205de706fafca376ee2fe27d7cd2f467d
parent* Move code from that last commit to LLClientView since it's a linden client ... (diff)
downloadopensim-SC_OLD-781db43a7665cf0c219889e85eadd7cdc4e8b79b.zip
opensim-SC_OLD-781db43a7665cf0c219889e85eadd7cdc4e8b79b.tar.gz
opensim-SC_OLD-781db43a7665cf0c219889e85eadd7cdc4e8b79b.tar.bz2
opensim-SC_OLD-781db43a7665cf0c219889e85eadd7cdc4e8b79b.tar.xz
* Fixes the 10x10x10 hard physics limitation. (wierdly, you have to set this for each region in your Regions.ini[PhysicalPrimMax = 10(default)])
* Adds a configurable maximum object mass before the mass is clamped. Default is 10000.01. Configurable by changing maximum_mass_object in the [ODEPhysicsSettings] section. * Clamping the mass is important for limiting the amount of CPU an object can consume in physics calculations. Too high, and the object overcomes restitution forces by gravity alone. This generates more collisions potentially leading to 'deep think'.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs4
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs3
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs2
-rw-r--r--bin/OpenSim.ini.example3
4 files changed, 11 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 7359011..6badaf5 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2589,7 +2589,9 @@ namespace OpenSim.Region.Framework.Scenes
2589 { 2589 {
2590 foreach (SceneObjectPart part in m_parts.Values) 2590 foreach (SceneObjectPart part in m_parts.Values)
2591 { 2591 {
2592 if (part.Scale.X > 10.0 || part.Scale.Y > 10.0 || part.Scale.Z > 10.0) 2592 if (part.Scale.X > m_scene.RegionInfo.PhysPrimMax ||
2593 part.Scale.Y > m_scene.RegionInfo.PhysPrimMax ||
2594 part.Scale.Z > m_scene.RegionInfo.PhysPrimMax)
2593 { 2595 {
2594 UsePhysics = false; // Reset physics 2596 UsePhysics = false; // Reset physics
2595 break; 2597 break;
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 9e9c36f..d241574 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -723,6 +723,8 @@ namespace OpenSim.Region.Physics.OdePlugin
723 break; 723 break;
724 } 724 }
725 } 725 }
726 if (returnMass > _parent_scene.maximumMassObject)
727 returnMass = _parent_scene.maximumMassObject;
726 return returnMass; 728 return returnMass;
727 }// end CalculateMass 729 }// end CalculateMass
728 730
@@ -733,6 +735,7 @@ namespace OpenSim.Region.Physics.OdePlugin
733 if (Body != (IntPtr) 0) 735 if (Body != (IntPtr) 0)
734 { 736 {
735 float newmass = CalculateMass(); 737 float newmass = CalculateMass();
738
736 //m_log.Info("[PHYSICS]: New Mass: " + newmass.ToString()); 739 //m_log.Info("[PHYSICS]: New Mass: " + newmass.ToString());
737 740
738 d.MassSetBoxTotal(out pMass, newmass, _size.X, _size.Y, _size.Z); 741 d.MassSetBoxTotal(out pMass, newmass, _size.X, _size.Y, _size.Z);
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index a0aba2a..0384d6e 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -207,6 +207,7 @@ namespace OpenSim.Region.Physics.OdePlugin
207 private float avMovementDivisorWalk = 1.3f; 207 private float avMovementDivisorWalk = 1.3f;
208 private float avMovementDivisorRun = 0.8f; 208 private float avMovementDivisorRun = 0.8f;
209 private float minimumGroundFlightOffset = 3f; 209 private float minimumGroundFlightOffset = 3f;
210 public float maximumMassObject = 10000.01f;
210 211
211 public bool meshSculptedPrim = true; 212 public bool meshSculptedPrim = true;
212 public bool forceSimplePrimMeshing = false; 213 public bool forceSimplePrimMeshing = false;
@@ -480,6 +481,7 @@ namespace OpenSim.Region.Physics.OdePlugin
480 481
481 m_NINJA_physics_joints_enabled = physicsconfig.GetBoolean("use_NINJA_physics_joints", false); 482 m_NINJA_physics_joints_enabled = physicsconfig.GetBoolean("use_NINJA_physics_joints", false);
482 minimumGroundFlightOffset = physicsconfig.GetFloat("minimum_ground_flight_offset", 3f); 483 minimumGroundFlightOffset = physicsconfig.GetFloat("minimum_ground_flight_offset", 3f);
484 maximumMassObject = physicsconfig.GetFloat("maximum_mass_object", 10000.01f);
483 } 485 }
484 } 486 }
485 487
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 3accee0..8efbcb4 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -594,6 +594,9 @@
594 body_motor_joint_maxforce_tensor_linux = 5 594 body_motor_joint_maxforce_tensor_linux = 5
595 body_motor_joint_maxforce_tensor_win = 5 595 body_motor_joint_maxforce_tensor_win = 5
596 596
597 ; Maximum mass an object can be before it is clamped
598 maximum_mass_object = 10000.01
599
597 ; ## 600 ; ##
598 ; ## Sculpted Prim settings 601 ; ## Sculpted Prim settings
599 ; ## 602 ; ##