diff options
author | Teravus Ovares | 2007-11-12 23:46:26 +0000 |
---|---|---|
committer | Teravus Ovares | 2007-11-12 23:46:26 +0000 |
commit | d9d35f9fd7141d8f7a5b3b056cae051d6de2efd5 (patch) | |
tree | 37a49b26a6cb07d1fdc3e419222ea2147eaa089e /OpenSim/Region | |
parent | * Added a lot of Glue to help with reporting proper collisions. (diff) | |
download | opensim-SC-d9d35f9fd7141d8f7a5b3b056cae051d6de2efd5.zip opensim-SC-d9d35f9fd7141d8f7a5b3b056cae051d6de2efd5.tar.gz opensim-SC-d9d35f9fd7141d8f7a5b3b056cae051d6de2efd5.tar.bz2 opensim-SC-d9d35f9fd7141d8f7a5b3b056cae051d6de2efd5.tar.xz |
* Implemented Walk Vs Run in ODE. Also helps make the walk look smoother.
* All thanks to unimplemented packet listing :D
Diffstat (limited to 'OpenSim/Region')
9 files changed, 78 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index b52a834..b18a844 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -84,6 +84,7 @@ namespace OpenSim.Region.ClientStack | |||
84 | public event TeleportLocationRequest OnTeleportLocationRequest; | 84 | public event TeleportLocationRequest OnTeleportLocationRequest; |
85 | public event DisconnectUser OnDisconnectUser; | 85 | public event DisconnectUser OnDisconnectUser; |
86 | public event RequestAvatarProperties OnRequestAvatarProperties; | 86 | public event RequestAvatarProperties OnRequestAvatarProperties; |
87 | public event SetAlwaysRun OnSetAlwaysRun; | ||
87 | 88 | ||
88 | public event CreateNewInventoryItem OnCreateNewInventoryItem; | 89 | public event CreateNewInventoryItem OnCreateNewInventoryItem; |
89 | public event CreateInventoryFolder OnCreateNewInventoryFolder; | 90 | public event CreateInventoryFolder OnCreateNewInventoryFolder; |
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index 978f34e..f941d6c 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | |||
@@ -169,6 +169,13 @@ namespace OpenSim.Region.ClientStack | |||
169 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); | 169 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); |
170 | } | 170 | } |
171 | break; | 171 | break; |
172 | case PacketType.SetAlwaysRun: | ||
173 | SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack; | ||
174 | |||
175 | if (OnSetAlwaysRun != null) | ||
176 | OnSetAlwaysRun(this,run.AgentData.AlwaysRun); | ||
177 | |||
178 | break; | ||
172 | case PacketType.CompleteAgentMovement: | 179 | case PacketType.CompleteAgentMovement: |
173 | if (OnCompleteMovementToRegion != null) | 180 | if (OnCompleteMovementToRegion != null) |
174 | { | 181 | { |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 5d643d1..307dec7 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -55,6 +55,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
55 | private bool m_oldColliding = true; | 55 | private bool m_oldColliding = true; |
56 | 56 | ||
57 | private bool m_isTyping = false; | 57 | private bool m_isTyping = false; |
58 | private bool m_setAlwaysRun = false; | ||
58 | 59 | ||
59 | private Quaternion m_bodyRot; | 60 | private Quaternion m_bodyRot; |
60 | private byte[] m_visualParams; | 61 | private byte[] m_visualParams; |
@@ -271,6 +272,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
271 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; | 272 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; |
272 | m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; | 273 | m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; |
273 | m_controllingClient.OnAgentSit += HandleAgentSit; | 274 | m_controllingClient.OnAgentSit += HandleAgentSit; |
275 | m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; | ||
274 | // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); | 276 | // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); |
275 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); | 277 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); |
276 | //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); | 278 | //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); |
@@ -637,7 +639,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
637 | SendAnimPack(Animations.AnimsLLUUID["SIT"], 1); | 639 | SendAnimPack(Animations.AnimsLLUUID["SIT"], 1); |
638 | SendFullUpdateToAllClients(); | 640 | SendFullUpdateToAllClients(); |
639 | } | 641 | } |
642 | public void HandleSetAlwaysRun(IClientAPI remoteClient, bool SetAlwaysRun) | ||
643 | { | ||
644 | m_setAlwaysRun = SetAlwaysRun; | ||
645 | if (PhysicsActor != null) | ||
646 | { | ||
647 | PhysicsActor.SetAlwaysRun = SetAlwaysRun; | ||
648 | } | ||
640 | 649 | ||
650 | } | ||
641 | protected void UpdateMovementAnimations(bool update_movementflag) | 651 | protected void UpdateMovementAnimations(bool update_movementflag) |
642 | { | 652 | { |
643 | if (update_movementflag) | 653 | if (update_movementflag) |
@@ -667,7 +677,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
667 | } | 677 | } |
668 | else | 678 | else |
669 | { | 679 | { |
670 | SendAnimPack(Animations.AnimsLLUUID["WALK"], 1); | 680 | if (!m_setAlwaysRun) |
681 | { | ||
682 | SendAnimPack(Animations.AnimsLLUUID["WALK"], 1); | ||
683 | } | ||
684 | else | ||
685 | { | ||
686 | SendAnimPack(Animations.AnimsLLUUID["RUN"], 1); | ||
687 | } | ||
671 | } | 688 | } |
672 | } | 689 | } |
673 | } | 690 | } |
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs index 717b6c0..474f6fd 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs | |||
@@ -61,6 +61,7 @@ namespace SimpleApp | |||
61 | public event TeleportLocationRequest OnTeleportLocationRequest; | 61 | public event TeleportLocationRequest OnTeleportLocationRequest; |
62 | public event DisconnectUser OnDisconnectUser; | 62 | public event DisconnectUser OnDisconnectUser; |
63 | public event RequestAvatarProperties OnRequestAvatarProperties; | 63 | public event RequestAvatarProperties OnRequestAvatarProperties; |
64 | public event SetAlwaysRun OnSetAlwaysRun; | ||
64 | 65 | ||
65 | public event GenericCall4 OnDeRezObject; | 66 | public event GenericCall4 OnDeRezObject; |
66 | public event Action<IClientAPI> OnRegionHandShakeReply; | 67 | public event Action<IClientAPI> OnRegionHandShakeReply; |
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs index 3283ec0..2582097 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs | |||
@@ -206,6 +206,11 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
206 | get { return m_rotationalVelocity; } | 206 | get { return m_rotationalVelocity; } |
207 | set { m_rotationalVelocity = value; } | 207 | set { m_rotationalVelocity = value; } |
208 | } | 208 | } |
209 | public override bool SetAlwaysRun | ||
210 | { | ||
211 | get { return false; } | ||
212 | set { return; } | ||
213 | } | ||
209 | public override bool IsPhysical | 214 | public override bool IsPhysical |
210 | { | 215 | { |
211 | get { return false; } | 216 | get { return false; } |
diff --git a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs index b51f024..f78e99e 100644 --- a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs +++ b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs | |||
@@ -764,7 +764,11 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
764 | return; | 764 | return; |
765 | } | 765 | } |
766 | } | 766 | } |
767 | 767 | public override bool SetAlwaysRun | |
768 | { | ||
769 | get { return false; } | ||
770 | set { return; } | ||
771 | } | ||
768 | public override PhysicsVector Acceleration | 772 | public override PhysicsVector Acceleration |
769 | { | 773 | { |
770 | get { return _acceleration; } | 774 | get { return _acceleration; } |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 49760da..84b451f 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs | |||
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Physics.Manager | |||
153 | public abstract bool IsPhysical {get; set;} | 153 | public abstract bool IsPhysical {get; set;} |
154 | 154 | ||
155 | public abstract bool Flying { get; set; } | 155 | public abstract bool Flying { get; set; } |
156 | 156 | public abstract bool SetAlwaysRun { get; set; } | |
157 | public abstract bool ThrottleUpdates { get; set; } | 157 | public abstract bool ThrottleUpdates { get; set; } |
158 | 158 | ||
159 | public abstract bool IsColliding { get; set; } | 159 | public abstract bool IsColliding { get; set; } |
@@ -176,6 +176,11 @@ namespace OpenSim.Region.Physics.Manager | |||
176 | get { return PhysicsVector.Zero; } | 176 | get { return PhysicsVector.Zero; } |
177 | set { return; } | 177 | set { return; } |
178 | } | 178 | } |
179 | public override bool SetAlwaysRun | ||
180 | { | ||
181 | get { return false; } | ||
182 | set { return; } | ||
183 | } | ||
179 | public override bool CollidingGround | 184 | public override bool CollidingGround |
180 | { | 185 | { |
181 | get {return false;} | 186 | get {return false;} |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index c93b96f..b528b9b 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -660,6 +660,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
660 | private bool flying = false; | 660 | private bool flying = false; |
661 | private bool m_iscolliding = false; | 661 | private bool m_iscolliding = false; |
662 | private bool m_wascolliding = false; | 662 | private bool m_wascolliding = false; |
663 | private bool m_alwaysRun = false; | ||
663 | 664 | ||
664 | private bool[] m_colliderarr = new bool[11]; | 665 | private bool[] m_colliderarr = new bool[11]; |
665 | 666 | ||
@@ -702,6 +703,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
702 | get { return (int)ActorTypes.Agent; } | 703 | get { return (int)ActorTypes.Agent; } |
703 | set { return; } | 704 | set { return; } |
704 | } | 705 | } |
706 | public override bool SetAlwaysRun | ||
707 | { | ||
708 | get { return m_alwaysRun; } | ||
709 | set { m_alwaysRun = value;} | ||
710 | } | ||
705 | public override bool IsPhysical | 711 | public override bool IsPhysical |
706 | { | 712 | { |
707 | get { return false; } | 713 | get { return false; } |
@@ -876,6 +882,17 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
876 | // no lock; for now it's only called from within Simulate() | 882 | // no lock; for now it's only called from within Simulate() |
877 | PhysicsVector vec = new PhysicsVector(); | 883 | PhysicsVector vec = new PhysicsVector(); |
878 | d.Vector3 vel = d.BodyGetLinearVel(Body); | 884 | d.Vector3 vel = d.BodyGetLinearVel(Body); |
885 | float movementdivisor = 1f; | ||
886 | |||
887 | if (!m_alwaysRun) | ||
888 | { | ||
889 | movementdivisor = 10.5f; | ||
890 | } | ||
891 | else | ||
892 | { | ||
893 | movementdivisor = 0.2079f; | ||
894 | |||
895 | } | ||
879 | 896 | ||
880 | // if velocity is zero, use position control; otherwise, velocity control | 897 | // if velocity is zero, use position control; otherwise, velocity control |
881 | if (_target_velocity.X == 0.0f && _target_velocity.Y == 0.0f && _target_velocity.Z == 0.0f && m_iscolliding) | 898 | if (_target_velocity.X == 0.0f && _target_velocity.Y == 0.0f && _target_velocity.Z == 0.0f && m_iscolliding) |
@@ -900,8 +917,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
900 | _zeroFlag = false; | 917 | _zeroFlag = false; |
901 | if (m_iscolliding || flying) | 918 | if (m_iscolliding || flying) |
902 | { | 919 | { |
903 | vec.X = (_target_velocity.X - vel.X) * PID_D; | 920 | |
904 | vec.Y = (_target_velocity.Y - vel.Y) * PID_D; | 921 | vec.X = ((_target_velocity.X - vel.X)/movementdivisor) * PID_D; |
922 | vec.Y = ((_target_velocity.Y - vel.Y)/movementdivisor) * PID_D; | ||
905 | } | 923 | } |
906 | if (m_iscolliding && !flying && _target_velocity.Z > 0.0f) | 924 | if (m_iscolliding && !flying && _target_velocity.Z > 0.0f) |
907 | { | 925 | { |
@@ -1077,6 +1095,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1077 | get { return (int)ActorTypes.Prim; } | 1095 | get { return (int)ActorTypes.Prim; } |
1078 | set { return; } | 1096 | set { return; } |
1079 | } | 1097 | } |
1098 | public override bool SetAlwaysRun | ||
1099 | { | ||
1100 | get { return false; } | ||
1101 | set { return; } | ||
1102 | } | ||
1080 | public void enableBody() | 1103 | public void enableBody() |
1081 | { | 1104 | { |
1082 | // Sets the geom to a body | 1105 | // Sets the geom to a body |
diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs index 1396458..4805d79 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs | |||
@@ -209,6 +209,11 @@ namespace OpenSim.Region.Physics.PhysXPlugin | |||
209 | get { return (int)ActorTypes.Agent; } | 209 | get { return (int)ActorTypes.Agent; } |
210 | set { return; } | 210 | set { return; } |
211 | } | 211 | } |
212 | public override bool SetAlwaysRun | ||
213 | { | ||
214 | get { return false; } | ||
215 | set { return; } | ||
216 | } | ||
212 | public override bool IsPhysical | 217 | public override bool IsPhysical |
213 | { | 218 | { |
214 | get { return false; } | 219 | get { return false; } |
@@ -363,6 +368,11 @@ namespace OpenSim.Region.Physics.PhysXPlugin | |||
363 | get { return false; } | 368 | get { return false; } |
364 | set { return; } | 369 | set { return; } |
365 | } | 370 | } |
371 | public override bool SetAlwaysRun | ||
372 | { | ||
373 | get { return false; } | ||
374 | set { return; } | ||
375 | } | ||
366 | public override bool ThrottleUpdates | 376 | public override bool ThrottleUpdates |
367 | { | 377 | { |
368 | get { return false; } | 378 | get { return false; } |