diff options
author | Teravus Ovares | 2008-10-17 23:19:00 +0000 |
---|---|---|
committer | Teravus Ovares | 2008-10-17 23:19:00 +0000 |
commit | 0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7 (patch) | |
tree | 5cf1a9a56529525797ce8577ed1c49208a65ffd7 /OpenSim/Region/Physics | |
parent | * Remove mono warnings (diff) | |
download | opensim-SC-0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7.zip opensim-SC-0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7.tar.gz opensim-SC-0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7.tar.bz2 opensim-SC-0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7.tar.xz |
* Fix an over compensation for bounciness on flat Primitive
* Implement the linear impulse portion of llPushObject. We should have a lsl compatible implementation of that portion of the push. Angular.. well. still have yet to implement a torque accumulator.
* llPushObject respects the region and parcel settings for Restrict Push, it also respects GodMode as is defined in the LSL spec.
Diffstat (limited to 'OpenSim/Region/Physics')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | 3 | ||||
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 13 |
2 files changed, 7 insertions, 9 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index 23481c6..2cb7e43 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs | |||
@@ -634,8 +634,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
634 | if (pushforce) | 634 | if (pushforce) |
635 | { | 635 | { |
636 | m_pidControllerActive = false; | 636 | m_pidControllerActive = false; |
637 | force *= 100f; | ||
637 | doForce(force); | 638 | doForce(force); |
638 | 639 | //System.Console.WriteLine("Push!"); | |
639 | //_target_velocity.X += force.X; | 640 | //_target_velocity.X += force.X; |
640 | // _target_velocity.Y += force.Y; | 641 | // _target_velocity.Y += force.Y; |
641 | //_target_velocity.Z += force.Z; | 642 | //_target_velocity.Z += force.Z; |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 1dcec12..0cbcb6b 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -575,10 +575,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
575 | 575 | ||
576 | for (int i = 0; i < count; i++) | 576 | for (int i = 0; i < count; i++) |
577 | { | 577 | { |
578 | if (checkDupe(contacts[i],p2.PhysicsActorType)) | 578 | |
579 | { | ||
580 | continue; | ||
581 | } | ||
582 | 579 | ||
583 | max_collision_depth = (contacts[i].depth > max_collision_depth) ? contacts[i].depth : max_collision_depth; | 580 | max_collision_depth = (contacts[i].depth > max_collision_depth) ? contacts[i].depth : max_collision_depth; |
584 | //m_log.Warn("[CCOUNT]: " + count); | 581 | //m_log.Warn("[CCOUNT]: " + count); |
@@ -588,7 +585,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
588 | 585 | ||
589 | // We only need to test p2 for 'jump crouch purposes' | 586 | // We only need to test p2 for 'jump crouch purposes' |
590 | p2.IsColliding = true; | 587 | p2.IsColliding = true; |
591 | 588 | ||
592 | //if ((framecount % m_returncollisions) == 0) | 589 | //if ((framecount % m_returncollisions) == 0) |
593 | 590 | ||
594 | switch (p1.PhysicsActorType) | 591 | switch (p1.PhysicsActorType) |
@@ -759,7 +756,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
759 | 756 | ||
760 | #endregion | 757 | #endregion |
761 | 758 | ||
762 | if (contacts[i].depth >= 0f) | 759 | if (contacts[i].depth >= 0f && !checkDupe(contacts[i], p2.PhysicsActorType)) |
763 | { | 760 | { |
764 | // If we're colliding against terrain | 761 | // If we're colliding against terrain |
765 | if (name1 == "Terrain" || name2 == "Terrain") | 762 | if (name1 == "Terrain" || name2 == "Terrain") |
@@ -863,11 +860,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
863 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)) && contactGeom.g1 != LandGeom && contactGeom.g2 != LandGeom) | 860 | if (((Math.Abs(contactGeom.normal.X - contact.normal.X) < 1.026f) && (Math.Abs(contactGeom.normal.Y - contact.normal.Y) < 0.303f) && (Math.Abs(contactGeom.normal.Z - contact.normal.Z) < 0.065f)) && contactGeom.g1 != LandGeom && contactGeom.g2 != LandGeom) |
864 | { | 861 | { |
865 | 862 | ||
866 | if (Math.Abs(contact.depth - contactGeom.depth) < 0.272f) | 863 | if (Math.Abs(contact.depth - contactGeom.depth) < 0.072f) |
867 | { | 864 | { |
868 | //contactGeom.depth *= .00005f; | 865 | //contactGeom.depth *= .00005f; |
869 | //m_log.DebugFormat("[Collsion]: Depth {0}", Math.Abs(contact.depth - contactGeom.depth)); | 866 | //m_log.DebugFormat("[Collsion]: Depth {0}", Math.Abs(contact.depth - contactGeom.depth)); |
870 | // m_log.DebugFormat("[Collision]: <{0},{1},{2}>", Math.Abs(contactGeom.normal.X - contact.normal.X), Math.Abs(contactGeom.normal.Y - contact.normal.Y), Math.Abs(contactGeom.normal.Z - contact.normal.Z)); | 867 | //m_log.DebugFormat("[Collision]: <{0},{1},{2}>", Math.Abs(contactGeom.normal.X - contact.normal.X), Math.Abs(contactGeom.normal.Y - contact.normal.Y), Math.Abs(contactGeom.normal.Z - contact.normal.Z)); |
871 | result = true; | 868 | result = true; |
872 | break; | 869 | break; |
873 | } | 870 | } |