aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-01-08 00:54:39 +0000
committerJustin Clark-Casey (justincc)2014-01-08 00:54:39 +0000
commit0155d42b80ee7b35d0a882052d8cf4976e7d15de (patch)
tree9682aba4ce2a556695cb0535cacf481eebb5d297 /OpenSim/Region
parentAdd lsl arg syntax checking for control event (diff)
downloadopensim-SC-0155d42b80ee7b35d0a882052d8cf4976e7d15de.zip
opensim-SC-0155d42b80ee7b35d0a882052d8cf4976e7d15de.tar.gz
opensim-SC-0155d42b80ee7b35d0a882052d8cf4976e7d15de.tar.bz2
opensim-SC-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 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs25
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs2
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);