diff options
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdeScene.cs | 8 | ||||
-rw-r--r-- | bin/OpenSimDefaults.ini | 6 |
3 files changed, 15 insertions, 3 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index f3b0630..c736557 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | |||
@@ -100,7 +100,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
100 | private bool m_hackSentFly = false; | 100 | private bool m_hackSentFly = false; |
101 | private int m_requestedUpdateFrequency = 0; | 101 | private int m_requestedUpdateFrequency = 0; |
102 | private Vector3 m_taintPosition; | 102 | private Vector3 m_taintPosition; |
103 | 103 | internal bool m_avatarplanted = false; | |
104 | /// <summary> | 104 | /// <summary> |
105 | /// Hold set forces so we can process them outside physics calculations. This prevents race conditions if we set force | 105 | /// Hold set forces so we can process them outside physics calculations. This prevents race conditions if we set force |
106 | /// while calculatios are going on | 106 | /// while calculatios are going on |
@@ -413,7 +413,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
413 | set | 413 | set |
414 | { | 414 | { |
415 | m_iscollidingObj = value; | 415 | m_iscollidingObj = value; |
416 | if (value) | 416 | if (value && !m_avatarplanted) |
417 | m_pidControllerActive = false; | 417 | m_pidControllerActive = false; |
418 | else | 418 | else |
419 | m_pidControllerActive = true; | 419 | m_pidControllerActive = true; |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs index 7a50c4c..8421cdf 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs | |||
@@ -501,6 +501,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
501 | public int physics_logging_interval = 0; | 501 | public int physics_logging_interval = 0; |
502 | public bool physics_logging_append_existing_logfile = false; | 502 | public bool physics_logging_append_existing_logfile = false; |
503 | 503 | ||
504 | private bool avplanted = false; | ||
505 | |||
504 | 506 | ||
505 | public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f); | 507 | public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f); |
506 | public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f); | 508 | public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f); |
@@ -644,6 +646,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
644 | avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", 1.3f); | 646 | avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", 1.3f); |
645 | avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", 0.8f); | 647 | avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", 0.8f); |
646 | avCapRadius = physicsconfig.GetFloat("av_capsule_radius", 0.37f); | 648 | avCapRadius = physicsconfig.GetFloat("av_capsule_radius", 0.37f); |
649 | avplanted = physicsconfig.GetBoolean("av_planted", false); | ||
650 | |||
647 | IsAvCapsuleTilted = physicsconfig.GetBoolean("av_capsule_tilted", false); | 651 | IsAvCapsuleTilted = physicsconfig.GetBoolean("av_capsule_tilted", false); |
648 | 652 | ||
649 | contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", 80); | 653 | contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", 80); |
@@ -1972,7 +1976,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1972 | 1976 | ||
1973 | newAv.Flying = isFlying; | 1977 | newAv.Flying = isFlying; |
1974 | newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset; | 1978 | newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset; |
1975 | 1979 | newAv.m_avatarplanted = avplanted; | |
1980 | |||
1976 | return newAv; | 1981 | return newAv; |
1977 | } | 1982 | } |
1978 | 1983 | ||
@@ -1987,6 +1992,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1987 | 1992 | ||
1988 | internal void AddCharacter(OdeCharacter chr) | 1993 | internal void AddCharacter(OdeCharacter chr) |
1989 | { | 1994 | { |
1995 | chr.m_avatarplanted = avplanted; | ||
1990 | if (!_characters.Contains(chr)) | 1996 | if (!_characters.Contains(chr)) |
1991 | { | 1997 | { |
1992 | _characters.Add(chr); | 1998 | _characters.Add(chr); |
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 677ac74..b380a73 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini | |||
@@ -844,6 +844,12 @@ | |||
844 | ; When the avatar flies, it will be moved up by this amount off the ground (in meters) | 844 | ; When the avatar flies, it will be moved up by this amount off the ground (in meters) |
845 | minimum_ground_flight_offset = 3.0 | 845 | minimum_ground_flight_offset = 3.0 |
846 | 846 | ||
847 | ; Plant avatar. This reduces the effect of physical contacts with the avatar. | ||
848 | ; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive. | ||
849 | ; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active | ||
850 | ; will lock the avatar in place | ||
851 | av_planted = false | ||
852 | |||
847 | ; ## | 853 | ; ## |
848 | ; ## Object options | 854 | ; ## Object options |
849 | ; ## | 855 | ; ## |