diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index 884a5a7..14516f9 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |||
@@ -693,8 +693,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
693 | // big messy collision analises | 693 | // big messy collision analises |
694 | float mu = 0; | 694 | float mu = 0; |
695 | float bounce = 0; | 695 | float bounce = 0; |
696 | ContactData contactdata1 = new ContactData(0, 0); | 696 | ContactData contactdata1 = new ContactData(0, 0, false); |
697 | ContactData contactdata2 = new ContactData(0, 0); | 697 | ContactData contactdata2 = new ContactData(0, 0, false); |
698 | bool erpSoft = false; | 698 | bool erpSoft = false; |
699 | 699 | ||
700 | String name = null; | 700 | String name = null; |
@@ -718,6 +718,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
718 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) | 718 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) |
719 | mu *= frictionMovementMult; | 719 | mu *= frictionMovementMult; |
720 | 720 | ||
721 | erpSoft = contactdata1.softcolide | contactdata2.softcolide; | ||
721 | p1.CollidingObj = true; | 722 | p1.CollidingObj = true; |
722 | p2.CollidingObj = true; | 723 | p2.CollidingObj = true; |
723 | break; | 724 | break; |
@@ -732,6 +733,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
732 | mu *= frictionMovementMult; | 733 | mu *= frictionMovementMult; |
733 | if (p2.Velocity.LengthSquared() > 0.0f) | 734 | if (p2.Velocity.LengthSquared() > 0.0f) |
734 | p2.CollidingObj = true; | 735 | p2.CollidingObj = true; |
736 | |||
737 | erpSoft = contactdata1.softcolide | contactdata2.softcolide; | ||
738 | |||
735 | dop1foot = true; | 739 | dop1foot = true; |
736 | break; | 740 | break; |
737 | default: | 741 | default: |
@@ -753,6 +757,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
753 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) | 757 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) |
754 | mu *= frictionMovementMult; | 758 | mu *= frictionMovementMult; |
755 | 759 | ||
760 | erpSoft = contactdata1.softcolide | contactdata2.softcolide; | ||
756 | dop2foot = true; | 761 | dop2foot = true; |
757 | if (p1.Velocity.LengthSquared() > 0.0f) | 762 | if (p1.Velocity.LengthSquared() > 0.0f) |
758 | p1.CollidingObj = true; | 763 | p1.CollidingObj = true; |
@@ -766,7 +771,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
766 | p1.getContactData(ref contactdata1); | 771 | p1.getContactData(ref contactdata1); |
767 | p2.getContactData(ref contactdata2); | 772 | p2.getContactData(ref contactdata2); |
768 | bounce = contactdata1.bounce * contactdata2.bounce; | 773 | bounce = contactdata1.bounce * contactdata2.bounce; |
769 | erpSoft = true; | 774 | erpSoft = contactdata1.softcolide | contactdata2.softcolide; |
770 | mu = (float)Math.Sqrt(contactdata1.mu * contactdata2.mu); | 775 | mu = (float)Math.Sqrt(contactdata1.mu * contactdata2.mu); |
771 | 776 | ||
772 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) | 777 | if ((Math.Abs(p2.Velocity.X - p1.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y - p1.Velocity.Y) > 0.1f)) |
@@ -778,12 +783,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
778 | { | 783 | { |
779 | if (name == "Terrain") | 784 | if (name == "Terrain") |
780 | { | 785 | { |
781 | erpSoft = true; | ||
782 | p1.getContactData(ref contactdata1); | 786 | p1.getContactData(ref contactdata1); |
783 | bounce = contactdata1.bounce * TerrainBounce; | 787 | bounce = contactdata1.bounce * TerrainBounce; |
784 | mu = (float)Math.Sqrt(contactdata1.mu * TerrainFriction); | 788 | mu = (float)Math.Sqrt(contactdata1.mu * TerrainFriction); |
785 | if (Math.Abs(p1.Velocity.X) > 0.1f || Math.Abs(p1.Velocity.Y) > 0.1f) | 789 | if (Math.Abs(p1.Velocity.X) > 0.1f || Math.Abs(p1.Velocity.Y) > 0.1f) |
786 | mu *= frictionMovementMult; | 790 | mu *= frictionMovementMult; |
791 | erpSoft = contactdata1.softcolide; | ||
787 | p1.CollidingGround = true; | 792 | p1.CollidingGround = true; |
788 | } | 793 | } |
789 | else if (name == "Water") | 794 | else if (name == "Water") |
@@ -804,11 +809,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
804 | { | 809 | { |
805 | if (p2.PhysicsActorType == (int)ActorTypes.Prim) | 810 | if (p2.PhysicsActorType == (int)ActorTypes.Prim) |
806 | { | 811 | { |
807 | erpSoft = true; | ||
808 | p2.CollidingGround = true; | 812 | p2.CollidingGround = true; |
809 | p2.getContactData(ref contactdata2); | 813 | p2.getContactData(ref contactdata2); |
810 | bounce = contactdata2.bounce * TerrainBounce; | 814 | bounce = contactdata2.bounce * TerrainBounce; |
811 | mu = (float)Math.Sqrt(contactdata2.mu * TerrainFriction); | 815 | mu = (float)Math.Sqrt(contactdata2.mu * TerrainFriction); |
816 | erpSoft = contactdata2.softcolide; | ||
812 | 817 | ||
813 | if (Math.Abs(p2.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y) > 0.1f) | 818 | if (Math.Abs(p2.Velocity.X) > 0.1f || Math.Abs(p2.Velocity.Y) > 0.1f) |
814 | mu *= frictionMovementMult; | 819 | mu *= frictionMovementMult; |