aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares2009-03-07 07:17:43 +0000
committerTeravus Ovares2009-03-07 07:17:43 +0000
commit5a49c772ca41b92fe7b6e00858fa9add24b6d8a3 (patch)
tree449d11eb8f8be6f9b2ca090c001708a728e39b51
parent* fixes mantis 3259 (diff)
downloadopensim-SC-5a49c772ca41b92fe7b6e00858fa9add24b6d8a3.zip
opensim-SC-5a49c772ca41b92fe7b6e00858fa9add24b6d8a3.tar.gz
opensim-SC-5a49c772ca41b92fe7b6e00858fa9add24b6d8a3.tar.bz2
opensim-SC-5a49c772ca41b92fe7b6e00858fa9add24b6d8a3.tar.xz
* Making the minimum ground offset for flying a configurable offset in the OpenSim.ini. This is the code that causes you to rise off the ground when you press the fly button and attempts to keep you above ground automatically when flying in a simulator.
* minimum_ground_flight_offset, by default is 3 meters, as per Kitto Flora See OpenSim.ini.example for an example.
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs13
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs3
-rw-r--r--bin/OpenSim.ini.example3
3 files changed, 14 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index a62409c..1808fa0 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -95,8 +95,11 @@ namespace OpenSim.Region.Physics.OdePlugin
95 // taints and their non-tainted counterparts 95 // taints and their non-tainted counterparts
96 public bool m_isPhysical = false; // the current physical status 96 public bool m_isPhysical = false; // the current physical status
97 public bool m_tainted_isPhysical = false; // set when the physical status is tainted (false=not existing in physics engine, true=existing) 97 public bool m_tainted_isPhysical = false; // set when the physical status is tainted (false=not existing in physics engine, true=existing)
98 public float MinimumGroundFlightOffset = 3f;
99
98 private float m_tainted_CAPSULE_LENGTH; // set when the capsule length changes. 100 private float m_tainted_CAPSULE_LENGTH; // set when the capsule length changes.
99 101
102
100 private float m_buoyancy = 0f; 103 private float m_buoyancy = 0f;
101 104
102 // private CollisionLocker ode; 105 // private CollisionLocker ode;
@@ -834,12 +837,12 @@ namespace OpenSim.Region.Physics.OdePlugin
834 vec.Z += ((-1 * _parent_scene.gravityz)*m_mass); 837 vec.Z += ((-1 * _parent_scene.gravityz)*m_mass);
835 838
836 //Added for auto fly height. Kitto Flora 839 //Added for auto fly height. Kitto Flora
837 d.Vector3 pos = d.BodyGetPosition(Body); 840 //d.Vector3 pos = d.BodyGetPosition(Body);
838 float ground_height = _parent_scene.GetTerrainHeightAtXY(pos.X, pos.Y); 841 float target_altitude = _parent_scene.GetTerrainHeightAtXY(_position.X, _position.Y) + MinimumGroundFlightOffset;
839 float target_altitude = ground_height + 3.0f; // This is the min fly height 842
840 if (pos.Z < target_altitude) 843 if (_position.Z < target_altitude)
841 { 844 {
842 vec.Z += (target_altitude - pos.Z) * PID_P * 5.0f; 845 vec.Z += (target_altitude - _position.Z) * PID_P * 5.0f;
843 } 846 }
844 // end add Kitto Flora 847 // end add Kitto Flora
845 848
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 7a01702..779ad1a 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -181,6 +181,7 @@ namespace OpenSim.Region.Physics.OdePlugin
181 private float avHeightFudgeFactor = 0.52f; 181 private float avHeightFudgeFactor = 0.52f;
182 private float avMovementDivisorWalk = 1.3f; 182 private float avMovementDivisorWalk = 1.3f;
183 private float avMovementDivisorRun = 0.8f; 183 private float avMovementDivisorRun = 0.8f;
184 private float minimumGroundFlightOffset = 3f;
184 185
185 public bool meshSculptedPrim = true; 186 public bool meshSculptedPrim = true;
186 187
@@ -432,6 +433,7 @@ namespace OpenSim.Region.Physics.OdePlugin
432 physics_logging_append_existing_logfile = physicsconfig.GetBoolean("physics_logging_append_existing_logfile", false); 433 physics_logging_append_existing_logfile = physicsconfig.GetBoolean("physics_logging_append_existing_logfile", false);
433 434
434 m_NINJA_physics_joints_enabled = physicsconfig.GetBoolean("use_NINJA_physics_joints", false); 435 m_NINJA_physics_joints_enabled = physicsconfig.GetBoolean("use_NINJA_physics_joints", false);
436 minimumGroundFlightOffset = physicsconfig.GetFloat("minimum_ground_flight_offset", 3f);
435 437
436 } 438 }
437 } 439 }
@@ -1336,6 +1338,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1336 pos.Z = position.Z; 1338 pos.Z = position.Z;
1337 OdeCharacter newAv = new OdeCharacter(avName, this, pos, ode, size, avPIDD, avPIDP, avCapRadius, avStandupTensor, avDensity, avHeightFudgeFactor, avMovementDivisorWalk, avMovementDivisorRun); 1339 OdeCharacter newAv = new OdeCharacter(avName, this, pos, ode, size, avPIDD, avPIDP, avCapRadius, avStandupTensor, avDensity, avHeightFudgeFactor, avMovementDivisorWalk, avMovementDivisorRun);
1338 newAv.Flying = isFlying; 1340 newAv.Flying = isFlying;
1341 newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset;
1339 _characters.Add(newAv); 1342 _characters.Add(newAv);
1340 return newAv; 1343 return newAv;
1341 } 1344 }
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index dd71b44..7f1c55b 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -463,6 +463,9 @@ InterregionComms = "RESTComms"
463 ; speed of movement with Always Run on 463 ; speed of movement with Always Run on
464 av_movement_divisor_run = 0.8 464 av_movement_divisor_run = 0.8
465 465
466 ; When the avatar flies, it will be moved up by this amount off the ground (in meters)
467 minimum_ground_flight_offset = 3.0
468
466 ; ## 469 ; ##
467 ; ## Object options 470 ; ## Object options
468 ; ## 471 ; ##