diff options
author | Teravus Ovares (Dan Olivares) | 2009-12-03 20:21:10 -0500 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-12-03 20:21:10 -0500 |
commit | 781db43a7665cf0c219889e85eadd7cdc4e8b79b (patch) | |
tree | 34c3541205de706fafca376ee2fe27d7cd2f467d /OpenSim | |
parent | * Move code from that last commit to LLClientView since it's a linden client ... (diff) | |
download | opensim-SC-781db43a7665cf0c219889e85eadd7cdc4e8b79b.zip opensim-SC-781db43a7665cf0c219889e85eadd7cdc4e8b79b.tar.gz opensim-SC-781db43a7665cf0c219889e85eadd7cdc4e8b79b.tar.bz2 opensim-SC-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 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 3 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 2 |
3 files changed, 8 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 | ||