aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs4
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdeScene.cs8
-rw-r--r--bin/OpenSimDefaults.ini6
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 ; ##