diff options
author | Justin Clark-Casey (justincc) | 2014-01-08 00:54:39 +0000 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2014-01-08 00:54:39 +0000 |
commit | 0155d42b80ee7b35d0a882052d8cf4976e7d15de (patch) | |
tree | 9682aba4ce2a556695cb0535cacf481eebb5d297 /OpenSim | |
parent | Add lsl arg syntax checking for control event (diff) | |
download | opensim-SC_OLD-0155d42b80ee7b35d0a882052d8cf4976e7d15de.zip opensim-SC_OLD-0155d42b80ee7b35d0a882052d8cf4976e7d15de.tar.gz opensim-SC_OLD-0155d42b80ee7b35d0a882052d8cf4976e7d15de.tar.bz2 opensim-SC_OLD-0155d42b80ee7b35d0a882052d8cf4976e7d15de.tar.xz |
If an agent is sitting, then do send the rotation in the agent update instead of zeroing it to resolve mouselook camera problems
Addresses http://opensimulator.org/mantis/view.php?id=6892
Thanks to tglion for this spot.
This resolves a recent regression from 17b32b764acd815400d9eb903aaec6dcebd60ac7
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 25 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 |
2 files changed, 19 insertions, 8 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index a04ded5..c38c829 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -5098,11 +5098,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5098 | // excessive up and down movements of the camera when looking up and down. | 5098 | // excessive up and down movements of the camera when looking up and down. |
5099 | // See http://opensimulator.org/mantis/view.php?id=3274 | 5099 | // See http://opensimulator.org/mantis/view.php?id=3274 |
5100 | // This does not affect head movement, since this is controlled entirely by camera movement rather than | 5100 | // This does not affect head movement, since this is controlled entirely by camera movement rather than |
5101 | // body rotation. It does not affect sitting avatar since it's the sitting part rotation that takes | 5101 | // body rotation. We still need to transmit X and Y for sitting avatars but mouselook does not change |
5102 | // effect, not the avatar rotation. | 5102 | // the rotation in this case. |
5103 | rotation = presence.Rotation; | 5103 | rotation = presence.Rotation; |
5104 | rotation.X = 0; | 5104 | |
5105 | rotation.Y = 0; | 5105 | if (!presence.IsSatOnObject) |
5106 | { | ||
5107 | rotation.X = 0; | ||
5108 | rotation.Y = 0; | ||
5109 | } | ||
5106 | 5110 | ||
5107 | if (sendTexture) | 5111 | if (sendTexture) |
5108 | textureEntry = presence.Appearance.Texture.GetBytes(); | 5112 | textureEntry = presence.Appearance.Texture.GetBytes(); |
@@ -5225,11 +5229,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5225 | // excessive up and down movements of the camera when looking up and down. | 5229 | // excessive up and down movements of the camera when looking up and down. |
5226 | // See http://opensimulator.org/mantis/view.php?id=3274 | 5230 | // See http://opensimulator.org/mantis/view.php?id=3274 |
5227 | // This does not affect head movement, since this is controlled entirely by camera movement rather than | 5231 | // This does not affect head movement, since this is controlled entirely by camera movement rather than |
5228 | // body rotation. It does not affect sitting avatar since it's the sitting part rotation that takes | 5232 | // body rotation. We still need to transmit X and Y for sitting avatars but mouselook does not change |
5229 | // effect, not the avatar rotation. | 5233 | // the rotation in this case. |
5230 | Quaternion rot = data.Rotation; | 5234 | Quaternion rot = data.Rotation; |
5231 | rot.X = 0; | 5235 | |
5232 | rot.Y = 0; | 5236 | if (!data.IsSatOnObject) |
5237 | { | ||
5238 | rot.X = 0; | ||
5239 | rot.Y = 0; | ||
5240 | } | ||
5241 | |||
5233 | rot.ToBytes(objectData, 52); | 5242 | rot.ToBytes(objectData, 52); |
5234 | //data.AngularVelocity.ToBytes(objectData, 64); | 5243 | //data.AngularVelocity.ToBytes(objectData, 64); |
5235 | 5244 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 7ed3a4b..49f70c4 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1640,6 +1640,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1640 | ControllingClient.SendAgentTerseUpdate(this); | 1640 | ControllingClient.SendAgentTerseUpdate(this); |
1641 | 1641 | ||
1642 | PhysicsActor actor = PhysicsActor; | 1642 | PhysicsActor actor = PhysicsActor; |
1643 | |||
1644 | // This will be the case if the agent is sitting on the groudn or on an object. | ||
1643 | if (actor == null) | 1645 | if (actor == null) |
1644 | { | 1646 | { |
1645 | SendControlsToScripts(flagsForScripts); | 1647 | SendControlsToScripts(flagsForScripts); |