aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs
diff options
context:
space:
mode:
authorUbitUmarov2012-12-05 23:19:18 +0000
committerUbitUmarov2012-12-05 23:19:18 +0000
commitde3180a63ecb89971321b7dce60dd86703f87e6d (patch)
tree3945930136e5942de13f1c23c19f8ed0c0020e0e /OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs
parentmove characters (avatars) to own collision space, also fixing a problem (diff)
downloadopensim-SC-de3180a63ecb89971321b7dce60dd86703f87e6d.zip
opensim-SC-de3180a63ecb89971321b7dce60dd86703f87e6d.tar.gz
opensim-SC-de3180a63ecb89971321b7dce60dd86703f87e6d.tar.bz2
opensim-SC-de3180a63ecb89971321b7dce60dd86703f87e6d.tar.xz
avatar collision plane send to viewer is only relative to feet. change
avatar collider, just rounding the boxes, etc
Diffstat (limited to 'OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs')
-rw-r--r--OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs18
1 files changed, 9 insertions, 9 deletions
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs
index 07987d1..2b4d368 100644
--- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs
@@ -224,9 +224,6 @@ namespace OpenSim.Region.Physics.OdePlugin
224// private IntPtr WaterHeightmapData = IntPtr.Zero; 224// private IntPtr WaterHeightmapData = IntPtr.Zero;
225// private GCHandle WaterMapHandler = new GCHandle(); 225// private GCHandle WaterMapHandler = new GCHandle();
226 226
227 public float avPIDD = 2200f; // make it visible
228 public float avPIDP = 900f; // make it visible
229 private float avCapRadius = 0.37f;
230 private float avDensity = 3f; 227 private float avDensity = 3f;
231 private float avMovementDivisorWalk = 1.3f; 228 private float avMovementDivisorWalk = 1.3f;
232 private float avMovementDivisorRun = 0.8f; 229 private float avMovementDivisorRun = 0.8f;
@@ -486,7 +483,6 @@ namespace OpenSim.Region.Physics.OdePlugin
486 avDensity = physicsconfig.GetFloat("av_density", avDensity); 483 avDensity = physicsconfig.GetFloat("av_density", avDensity);
487 avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", avMovementDivisorWalk); 484 avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", avMovementDivisorWalk);
488 avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", avMovementDivisorRun); 485 avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", avMovementDivisorRun);
489 avCapRadius = physicsconfig.GetFloat("av_capsule_radius", avCapRadius);
490 486
491 contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", contactsPerCollision); 487 contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", contactsPerCollision);
492 488
@@ -1040,6 +1036,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1040 1036
1041 IntPtr Joint; 1037 IntPtr Joint;
1042 1038
1039 bool FeetCollision = false;
1040
1043 int i = 0; 1041 int i = 0;
1044 int ncontacts = 0; 1042 int ncontacts = 0;
1045 while(true) 1043 while(true)
@@ -1058,7 +1056,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1058 { 1056 {
1059 if(dop1foot) 1057 if(dop1foot)
1060 { 1058 {
1061 if (!(((OdeCharacter)p1).Collide(g1,false, ref curContact))) 1059 if (!(((OdeCharacter)p1).Collide(g1, false, ref curContact, ref FeetCollision)))
1062 { 1060 {
1063 if (++i >= count) 1061 if (++i >= count)
1064 break; 1062 break;
@@ -1068,7 +1066,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1068 } 1066 }
1069 else if(dop2foot) 1067 else if(dop2foot)
1070 { 1068 {
1071 if(!(((OdeCharacter) p2).Collide(g2,true,ref curContact))) 1069 if (!(((OdeCharacter)p2).Collide(g2, true, ref curContact, ref FeetCollision)))
1072 { 1070 {
1073 if (++i >= count) 1071 if (++i >= count)
1074 break; 1072 break;
@@ -1177,9 +1175,11 @@ namespace OpenSim.Region.Physics.OdePlugin
1177 } 1175 }
1178 } 1176 }
1179 1177
1180 if(ncontacts > 0) 1178 if (ncontacts > 0)
1179 {
1180 maxDepthContact.CharacterFeet = FeetCollision;
1181 collision_accounting_events(p1, p2, maxDepthContact); 1181 collision_accounting_events(p1, p2, maxDepthContact);
1182 1182 }
1183/* 1183/*
1184 if (notskipedcount > geomContactPointsStartthrottle) 1184 if (notskipedcount > geomContactPointsStartthrottle)
1185 { 1185 {
@@ -1393,7 +1393,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1393 pos.X = position.X; 1393 pos.X = position.X;
1394 pos.Y = position.Y; 1394 pos.Y = position.Y;
1395 pos.Z = position.Z; 1395 pos.Z = position.Z;
1396 OdeCharacter newAv = new OdeCharacter(avName, this, pos, size, avPIDD, avPIDP, avDensity, avMovementDivisorWalk, avMovementDivisorRun); 1396 OdeCharacter newAv = new OdeCharacter(avName, this, pos, size, avDensity, avMovementDivisorWalk, avMovementDivisorRun);
1397 newAv.Flying = isFlying; 1397 newAv.Flying = isFlying;
1398 newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset; 1398 newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset;
1399 1399