diff options
author | dan miller | 2007-09-09 21:21:09 +0000 |
---|---|---|
committer | dan miller | 2007-09-09 21:21:09 +0000 |
commit | 86e3fc3da2921e47a8ee7a41a41f89633504719a (patch) | |
tree | 0c6b92eee0d9253e0a8ebdefa08886acfc472610 /OpenSim/Region/Environment/Scenes/ScenePresence.cs | |
parent | Little green men (aka dots on minimap). Thanks to bushing for (diff) | |
download | opensim-SC-86e3fc3da2921e47a8ee7a41a41f89633504719a.zip opensim-SC-86e3fc3da2921e47a8ee7a41a41f89633504719a.tar.gz opensim-SC-86e3fc3da2921e47a8ee7a41a41f89633504719a.tar.bz2 opensim-SC-86e3fc3da2921e47a8ee7a41a41f89633504719a.tar.xz |
added avatar updates for physics movement -- fixes gravity & avatar collision (ODE)
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 8cf0b98..a32ddef 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -72,6 +72,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
72 | private IScenePresenceBody m_body; | 72 | private IScenePresenceBody m_body; |
73 | 73 | ||
74 | private Vector3[] Dir_Vectors = new Vector3[6]; | 74 | private Vector3[] Dir_Vectors = new Vector3[6]; |
75 | private libsecondlife.LLVector3 lastPhysPos = new libsecondlife.LLVector3(); | ||
75 | private enum Dir_ControlFlags | 76 | private enum Dir_ControlFlags |
76 | { | 77 | { |
77 | DIR_CONTROL_FLAG_FOWARD = MainAvatar.ControlFlags.AGENT_CONTROL_AT_POS, | 78 | DIR_CONTROL_FLAG_FOWARD = MainAvatar.ControlFlags.AGENT_CONTROL_AT_POS, |
@@ -463,18 +464,22 @@ namespace OpenSim.Region.Environment.Scenes | |||
463 | { | 464 | { |
464 | this.SendPrimUpdates(); | 465 | this.SendPrimUpdates(); |
465 | 466 | ||
466 | if (this.newCoarseLocations) { | 467 | if (this.newCoarseLocations) { |
467 | this.SendCoarseLocations(); | 468 | this.SendCoarseLocations(); |
468 | this.newCoarseLocations = false; | 469 | this.newCoarseLocations = false; |
469 | } | 470 | } |
470 | 471 | ||
471 | if (this.childAgent == false) | 472 | if (this.childAgent == false) |
472 | { | 473 | { |
474 | |||
475 | /// check for user movement 'forces' (ie commands to move) | ||
473 | if (this.newForce) | 476 | if (this.newForce) |
474 | { | 477 | { |
475 | this.SendTerseUpdateToALLClients(); | 478 | this.SendTerseUpdateToALLClients(); |
476 | _updateCount = 0; | 479 | _updateCount = 0; |
477 | } | 480 | } |
481 | |||
482 | /// check for scripted movement (?) | ||
478 | else if (movementflag != 0) | 483 | else if (movementflag != 0) |
479 | { | 484 | { |
480 | _updateCount++; | 485 | _updateCount++; |
@@ -485,6 +490,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
485 | } | 490 | } |
486 | } | 491 | } |
487 | 492 | ||
493 | /// check for physics-related movement | ||
494 | else if (this.lastPhysPos.GetDistanceTo(this.AbsolutePosition) > 0.02 ) | ||
495 | { | ||
496 | this.SendTerseUpdateToALLClients(); | ||
497 | _updateCount = 0; | ||
498 | this.lastPhysPos = this.AbsolutePosition; | ||
499 | } | ||
488 | this.CheckForSignificantMovement(); | 500 | this.CheckForSignificantMovement(); |
489 | this.CheckForBorderCrossing(); | 501 | this.CheckForBorderCrossing(); |
490 | 502 | ||