diff options
11 files changed, 46 insertions, 21 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 167485e..b2b0002 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1921,12 +1921,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1921 | { | 1921 | { |
1922 | PhysicsActor pa = RootPart.PhysActor; | 1922 | PhysicsActor pa = RootPart.PhysActor; |
1923 | 1923 | ||
1924 | if (pa != null) | 1924 | if (pa != null && pa.PIDActive) |
1925 | { | 1925 | { |
1926 | pa.PIDActive = false; | 1926 | pa.PIDActive = false; |
1927 | 1927 | ||
1928 | ScheduleGroupForTerseUpdate(); | 1928 | ScheduleGroupForTerseUpdate(); |
1929 | //ParentGroup.ScheduleGroupForFullUpdate(); | ||
1930 | } | 1929 | } |
1931 | } | 1930 | } |
1932 | } | 1931 | } |
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs index c1a37cc..43fba7b 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsActor.cs | |||
@@ -238,6 +238,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
238 | 238 | ||
239 | public override bool PIDActive | 239 | public override bool PIDActive |
240 | { | 240 | { |
241 | get { return false; } | ||
241 | set { return; } | 242 | set { return; } |
242 | } | 243 | } |
243 | 244 | ||
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPrim.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPrim.cs index 47d7df3..dfe4c19 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPrim.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPrim.cs | |||
@@ -251,6 +251,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
251 | 251 | ||
252 | public override bool PIDActive | 252 | public override bool PIDActive |
253 | { | 253 | { |
254 | get { return false; } | ||
254 | set { return; } | 255 | set { return; } |
255 | } | 256 | } |
256 | 257 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs index 9b56fb4..a303972 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs | |||
@@ -614,9 +614,9 @@ public sealed class BSCharacter : BSPhysObject | |||
614 | public override OMV.Vector3 PIDTarget { | 614 | public override OMV.Vector3 PIDTarget { |
615 | set { _PIDTarget = value; } | 615 | set { _PIDTarget = value; } |
616 | } | 616 | } |
617 | public override bool PIDActive { | 617 | |
618 | set { _usePID = value; } | 618 | public override bool PIDActive { get; set; } |
619 | } | 619 | |
620 | public override float PIDTau { | 620 | public override float PIDTau { |
621 | set { _PIDTau = value; } | 621 | set { _PIDTau = value; } |
622 | } | 622 | } |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs index 75ffeb4..f059322 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | |||
@@ -246,7 +246,12 @@ public abstract class BSPhysObject : PhysicsActor | |||
246 | 246 | ||
247 | public virtual bool ForceBodyShapeRebuild(bool inTaintTime) { return false; } | 247 | public virtual bool ForceBodyShapeRebuild(bool inTaintTime) { return false; } |
248 | 248 | ||
249 | public override bool PIDActive { set { MoveToTargetActive = value; } } | 249 | public override bool PIDActive |
250 | { | ||
251 | get { return MoveToTargetActive; } | ||
252 | set { MoveToTargetActive = value; } | ||
253 | } | ||
254 | |||
250 | public override OMV.Vector3 PIDTarget { set { MoveToTargetTarget = value; } } | 255 | public override OMV.Vector3 PIDTarget { set { MoveToTargetTarget = value; } } |
251 | public override float PIDTau { set { MoveToTargetTau = value; } } | 256 | public override float PIDTau { set { MoveToTargetTau = value; } } |
252 | 257 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index edec949..27ee5ac 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -1087,9 +1087,17 @@ public class BSPrim : BSPhysObject | |||
1087 | } | 1087 | } |
1088 | } | 1088 | } |
1089 | 1089 | ||
1090 | public override bool PIDActive { | 1090 | public override bool PIDActive |
1091 | set { | 1091 | { |
1092 | base.MoveToTargetActive = value; | 1092 | get |
1093 | { | ||
1094 | return MoveToTargetActive; | ||
1095 | } | ||
1096 | |||
1097 | set | ||
1098 | { | ||
1099 | MoveToTargetActive = value; | ||
1100 | |||
1093 | EnableActor(MoveToTargetActive, MoveToTargetActorName, delegate() | 1101 | EnableActor(MoveToTargetActive, MoveToTargetActorName, delegate() |
1094 | { | 1102 | { |
1095 | return new BSActorMoveToTarget(PhysScene, this, MoveToTargetActorName); | 1103 | return new BSActorMoveToTarget(PhysScene, this, MoveToTargetActorName); |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 1750853..6bc6e23 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs | |||
@@ -291,7 +291,7 @@ namespace OpenSim.Region.Physics.Manager | |||
291 | 291 | ||
292 | // Used for MoveTo | 292 | // Used for MoveTo |
293 | public abstract Vector3 PIDTarget { set; } | 293 | public abstract Vector3 PIDTarget { set; } |
294 | public abstract bool PIDActive { set;} | 294 | public abstract bool PIDActive { get; set; } |
295 | public abstract float PIDTau { set; } | 295 | public abstract float PIDTau { set; } |
296 | 296 | ||
297 | // Used for llSetHoverHeight and maybe vehicle height | 297 | // Used for llSetHoverHeight and maybe vehicle height |
@@ -545,7 +545,13 @@ namespace OpenSim.Region.Physics.Manager | |||
545 | } | 545 | } |
546 | 546 | ||
547 | public override Vector3 PIDTarget { set { return; } } | 547 | public override Vector3 PIDTarget { set { return; } } |
548 | public override bool PIDActive { set { return; } } | 548 | |
549 | public override bool PIDActive | ||
550 | { | ||
551 | get { return false; } | ||
552 | set { return; } | ||
553 | } | ||
554 | |||
549 | public override float PIDTau { set { return; } } | 555 | public override float PIDTau { set { return; } } |
550 | 556 | ||
551 | public override float PIDHoverHeight { set { return; } } | 557 | public override float PIDHoverHeight { set { return; } } |
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 8f37b79..67503df 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | |||
@@ -1245,7 +1245,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1245 | } | 1245 | } |
1246 | 1246 | ||
1247 | public override Vector3 PIDTarget { set { return; } } | 1247 | public override Vector3 PIDTarget { set { return; } } |
1248 | public override bool PIDActive { set { return; } } | 1248 | public override bool PIDActive |
1249 | { | ||
1250 | get { return false; } | ||
1251 | set { return; } | ||
1252 | } | ||
1249 | public override float PIDTau { set { return; } } | 1253 | public override float PIDTau { set { return; } } |
1250 | 1254 | ||
1251 | public override float PIDHoverHeight { set { return; } } | 1255 | public override float PIDHoverHeight { set { return; } } |
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 13c69d6..e347fdc 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -114,7 +114,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
114 | private float m_PIDTau; | 114 | private float m_PIDTau; |
115 | private float PID_D = 35f; | 115 | private float PID_D = 35f; |
116 | private float PID_G = 25f; | 116 | private float PID_G = 25f; |
117 | private bool m_usePID; | ||
118 | 117 | ||
119 | // KF: These next 7 params apply to llSetHoverHeight(float height, integer water, float tau), | 118 | // KF: These next 7 params apply to llSetHoverHeight(float height, integer water, float tau), |
120 | // and are for non-VEHICLES only. | 119 | // and are for non-VEHICLES only. |
@@ -1723,7 +1722,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
1723 | // gravityz multiplier = 1 - m_buoyancy | 1722 | // gravityz multiplier = 1 - m_buoyancy |
1724 | fz = _parent_scene.gravityz * (1.0f - m_buoyancy) * m_mass; | 1723 | fz = _parent_scene.gravityz * (1.0f - m_buoyancy) * m_mass; |
1725 | 1724 | ||
1726 | if (m_usePID) | 1725 | if (PIDActive) |
1727 | { | 1726 | { |
1728 | //Console.WriteLine("PID " + Name); | 1727 | //Console.WriteLine("PID " + Name); |
1729 | // KF - this is for object move? eg. llSetPos() ? | 1728 | // KF - this is for object move? eg. llSetPos() ? |
@@ -1792,10 +1791,10 @@ Console.WriteLine(" JointCreateFixed"); | |||
1792 | 1791 | ||
1793 | fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass); | 1792 | fz = fz + ((_target_velocity.Z - vel.Z) * (PID_D) * m_mass); |
1794 | } | 1793 | } |
1795 | } // end if (m_usePID) | 1794 | } // end if (PIDActive) |
1796 | 1795 | ||
1797 | // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller | 1796 | // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller |
1798 | if (m_useHoverPID && !m_usePID) | 1797 | if (m_useHoverPID && !PIDActive) |
1799 | { | 1798 | { |
1800 | //Console.WriteLine("Hover " + Name); | 1799 | //Console.WriteLine("Hover " + Name); |
1801 | 1800 | ||
@@ -2866,7 +2865,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2866 | // it does make sense to do this for tiny little instabilities with physical prim, however 0.5m/frame is fairly large. | 2865 | // it does make sense to do this for tiny little instabilities with physical prim, however 0.5m/frame is fairly large. |
2867 | // reducing this to 0.02m/frame seems to help the angular rubberbanding quite a bit, however, to make sure it doesn't affect elevators and vehicles | 2866 | // reducing this to 0.02m/frame seems to help the angular rubberbanding quite a bit, however, to make sure it doesn't affect elevators and vehicles |
2868 | // adding these logical exclusion situations to maintain this where I think it was intended to be. | 2867 | // adding these logical exclusion situations to maintain this where I think it was intended to be. |
2869 | if (m_throttleUpdates || m_usePID || (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) || (Amotor != IntPtr.Zero)) | 2868 | if (m_throttleUpdates || PIDActive || (m_vehicle != null && m_vehicle.Type != Vehicle.TYPE_NONE) || (Amotor != IntPtr.Zero)) |
2870 | { | 2869 | { |
2871 | m_minvelocity = 0.5f; | 2870 | m_minvelocity = 0.5f; |
2872 | } | 2871 | } |
@@ -2947,7 +2946,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2947 | m_log.WarnFormat("[PHYSICS]: Got NaN PIDTarget from Scene on Object {0}", Name); | 2946 | m_log.WarnFormat("[PHYSICS]: Got NaN PIDTarget from Scene on Object {0}", Name); |
2948 | } | 2947 | } |
2949 | } | 2948 | } |
2950 | public override bool PIDActive { set { m_usePID = value; } } | 2949 | public override bool PIDActive { get; set; } |
2951 | public override float PIDTau { set { m_PIDTau = value; } } | 2950 | public override float PIDTau { set { m_PIDTau = value; } } |
2952 | 2951 | ||
2953 | public override float PIDHoverHeight { set { m_PIDHoverHeight = value; ; } } | 2952 | public override float PIDHoverHeight { set { m_PIDHoverHeight = value; ; } } |
diff --git a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs index ae534ea..40ab984 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSCharacter.cs | |||
@@ -273,9 +273,10 @@ namespace OpenSim.Region.Physics.POSPlugin | |||
273 | set { return; } | 273 | set { return; } |
274 | } | 274 | } |
275 | 275 | ||
276 | public override bool PIDActive | 276 | public override bool PIDActive |
277 | { | 277 | { |
278 | set { return; } | 278 | get { return false; } |
279 | set { return; } | ||
279 | } | 280 | } |
280 | 281 | ||
281 | public override float PIDTau | 282 | public override float PIDTau |
diff --git a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs index e4fd7eb..7c1e915 100644 --- a/OpenSim/Region/Physics/POSPlugin/POSPrim.cs +++ b/OpenSim/Region/Physics/POSPlugin/POSPrim.cs | |||
@@ -270,6 +270,7 @@ namespace OpenSim.Region.Physics.POSPlugin | |||
270 | 270 | ||
271 | public override bool PIDActive | 271 | public override bool PIDActive |
272 | { | 272 | { |
273 | get { return false; } | ||
273 | set { return; } | 274 | set { return; } |
274 | } | 275 | } |
275 | 276 | ||