diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 9ada5bb..6299a8e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -140,6 +140,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
140 | private Vector3 m_lastPosition; | 140 | private Vector3 m_lastPosition; |
141 | private Quaternion m_lastRotation; | 141 | private Quaternion m_lastRotation; |
142 | private Vector3 m_lastVelocity; | 142 | private Vector3 m_lastVelocity; |
143 | private Vector3 m_lastSize = new Vector3(0.45f,0.6f,1.9f); | ||
144 | |||
143 | 145 | ||
144 | private Vector3? m_forceToApply; | 146 | private Vector3? m_forceToApply; |
145 | private int m_userFlags; | 147 | private int m_userFlags; |
@@ -563,6 +565,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
563 | } | 565 | } |
564 | } | 566 | } |
565 | 567 | ||
568 | public override Vector3 AngularVelocity | ||
569 | { | ||
570 | get | ||
571 | { | ||
572 | if (PhysicsActor != null) | ||
573 | { | ||
574 | m_rotationalvelocity = PhysicsActor.RotationalVelocity; | ||
575 | |||
576 | // m_log.DebugFormat( | ||
577 | // "[SCENE PRESENCE]: Set velocity {0} for {1} in {2} via getting Velocity!", | ||
578 | // m_velocity, Name, Scene.RegionInfo.RegionName); | ||
579 | } | ||
580 | |||
581 | return m_rotationalvelocity; | ||
582 | } | ||
583 | } | ||
584 | |||
566 | private Quaternion m_bodyRot = Quaternion.Identity; | 585 | private Quaternion m_bodyRot = Quaternion.Identity; |
567 | 586 | ||
568 | public Quaternion Rotation | 587 | public Quaternion Rotation |
@@ -1264,6 +1283,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1264 | { | 1283 | { |
1265 | if (PhysicsActor != null && !IsChildAgent) | 1284 | if (PhysicsActor != null && !IsChildAgent) |
1266 | PhysicsActor.setAvatarSize(size, feetoffset); | 1285 | PhysicsActor.setAvatarSize(size, feetoffset); |
1286 | |||
1267 | } | 1287 | } |
1268 | 1288 | ||
1269 | /// <summary> | 1289 | /// <summary> |
@@ -2572,9 +2592,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2572 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to | 2592 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to |
2573 | // grab the latest PhysicsActor velocity, whereas m_velocity is often | 2593 | // grab the latest PhysicsActor velocity, whereas m_velocity is often |
2574 | // storing a requested force instead of an actual traveling velocity | 2594 | // storing a requested force instead of an actual traveling velocity |
2595 | if (Appearance.AvatarSize != m_lastSize) | ||
2596 | { | ||
2597 | m_lastSize = Appearance.AvatarSize; | ||
2598 | SendAvatarDataToAllAgents(); | ||
2599 | } | ||
2575 | 2600 | ||
2576 | // Throw away duplicate or insignificant updates | 2601 | else if (!Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || |
2577 | if (!Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || | ||
2578 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 2602 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
2579 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) | 2603 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) |
2580 | { | 2604 | { |
@@ -2872,6 +2896,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2872 | 2896 | ||
2873 | avatar.ControllingClient.SendAppearance( | 2897 | avatar.ControllingClient.SendAppearance( |
2874 | UUID, Appearance.VisualParams, Appearance.Texture.GetBytes()); | 2898 | UUID, Appearance.VisualParams, Appearance.Texture.GetBytes()); |
2899 | |||
2900 | |||
2875 | } | 2901 | } |
2876 | 2902 | ||
2877 | #endregion | 2903 | #endregion |
@@ -3517,10 +3543,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3517 | // m_lastColCount = coldata.Count; | 3543 | // m_lastColCount = coldata.Count; |
3518 | // } | 3544 | // } |
3519 | 3545 | ||
3520 | CollisionPlane = Vector4.UnitW; | ||
3521 | |||
3522 | if (coldata.Count != 0) | 3546 | if (coldata.Count != 0) |
3523 | { | 3547 | { |
3548 | /* | ||
3524 | switch (Animator.CurrentMovementAnimation) | 3549 | switch (Animator.CurrentMovementAnimation) |
3525 | { | 3550 | { |
3526 | case "STAND": | 3551 | case "STAND": |
@@ -3529,6 +3554,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3529 | case "CROUCH": | 3554 | case "CROUCH": |
3530 | case "CROUCHWALK": | 3555 | case "CROUCHWALK": |
3531 | { | 3556 | { |
3557 | */ | ||
3532 | ContactPoint lowest; | 3558 | ContactPoint lowest; |
3533 | lowest.SurfaceNormal = Vector3.Zero; | 3559 | lowest.SurfaceNormal = Vector3.Zero; |
3534 | lowest.Position = Vector3.Zero; | 3560 | lowest.Position = Vector3.Zero; |
@@ -3548,10 +3574,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
3548 | lowest.SurfaceNormal = -lowest.SurfaceNormal; | 3574 | lowest.SurfaceNormal = -lowest.SurfaceNormal; |
3549 | CollisionPlane = new Vector4(lowest.SurfaceNormal, Vector3.Dot(lowest.Position, lowest.SurfaceNormal)); | 3575 | CollisionPlane = new Vector4(lowest.SurfaceNormal, Vector3.Dot(lowest.Position, lowest.SurfaceNormal)); |
3550 | } | 3576 | } |
3577 | else | ||
3578 | CollisionPlane = Vector4.UnitW; | ||
3579 | /* | ||
3551 | } | 3580 | } |
3552 | break; | 3581 | break; |
3553 | } | 3582 | } |
3583 | */ | ||
3554 | } | 3584 | } |
3585 | else | ||
3586 | CollisionPlane = Vector4.UnitW; | ||
3555 | 3587 | ||
3556 | RaiseCollisionScriptEvents(coldata); | 3588 | RaiseCollisionScriptEvents(coldata); |
3557 | 3589 | ||