aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/OdePlugin
diff options
context:
space:
mode:
authorTeravus Ovares2008-10-17 23:19:00 +0000
committerTeravus Ovares2008-10-17 23:19:00 +0000
commit0916b38b8300c41f66c2f22e79c77f3c5f6f4cb7 (patch)
tree5cf1a9a56529525797ce8577ed1c49208a65ffd7 /OpenSim/Region/Physics/OdePlugin
parent* Remove mono warnings (diff)
downloadopensim-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/OdePlugin')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs3
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs13
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 }