diff options
author | UbitUmarov | 2012-12-05 23:19:18 +0000 |
---|---|---|
committer | UbitUmarov | 2012-12-05 23:19:18 +0000 |
commit | de3180a63ecb89971321b7dce60dd86703f87e6d (patch) | |
tree | 3945930136e5942de13f1c23c19f8ed0c0020e0e /OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |
parent | move characters (avatars) to own collision space, also fixing a problem (diff) | |
download | opensim-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 '')
-rw-r--r-- | OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | 18 |
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 | ||