diff options
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 25 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 15 |
2 files changed, 26 insertions, 14 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index c1aae3f..a04ded5 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -5091,7 +5091,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5091 | // acceleration = new Vector3(1, 0, 0); | 5091 | // acceleration = new Vector3(1, 0, 0); |
5092 | 5092 | ||
5093 | angularVelocity = presence.AngularVelocity; | 5093 | angularVelocity = presence.AngularVelocity; |
5094 | |||
5095 | // Whilst not in mouselook, an avatar will transmit only the Z rotation as this is the only axis | ||
5096 | // it rotates around. | ||
5097 | // In mouselook, X and Y co-ordinate will also be sent but when used in Rotation, these cause unwanted | ||
5098 | // excessive up and down movements of the camera when looking up and down. | ||
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 | ||
5101 | // body rotation. It does not affect sitting avatar since it's the sitting part rotation that takes | ||
5102 | // effect, not the avatar rotation. | ||
5094 | rotation = presence.Rotation; | 5103 | rotation = presence.Rotation; |
5104 | rotation.X = 0; | ||
5105 | rotation.Y = 0; | ||
5095 | 5106 | ||
5096 | if (sendTexture) | 5107 | if (sendTexture) |
5097 | textureEntry = presence.Appearance.Texture.GetBytes(); | 5108 | textureEntry = presence.Appearance.Texture.GetBytes(); |
@@ -5207,7 +5218,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5207 | data.OffsetPosition.ToBytes(objectData, 16); | 5218 | data.OffsetPosition.ToBytes(objectData, 16); |
5208 | // data.Velocity.ToBytes(objectData, 28); | 5219 | // data.Velocity.ToBytes(objectData, 28); |
5209 | // data.Acceleration.ToBytes(objectData, 40); | 5220 | // data.Acceleration.ToBytes(objectData, 40); |
5210 | data.Rotation.ToBytes(objectData, 52); | 5221 | |
5222 | // Whilst not in mouselook, an avatar will transmit only the Z rotation as this is the only axis | ||
5223 | // it rotates around. | ||
5224 | // In mouselook, X and Y co-ordinate will also be sent but when used in Rotation, these cause unwanted | ||
5225 | // excessive up and down movements of the camera when looking up and down. | ||
5226 | // 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 | ||
5228 | // body rotation. It does not affect sitting avatar since it's the sitting part rotation that takes | ||
5229 | // effect, not the avatar rotation. | ||
5230 | Quaternion rot = data.Rotation; | ||
5231 | rot.X = 0; | ||
5232 | rot.Y = 0; | ||
5233 | rot.ToBytes(objectData, 52); | ||
5211 | //data.AngularVelocity.ToBytes(objectData, 64); | 5234 | //data.AngularVelocity.ToBytes(objectData, 64); |
5212 | 5235 | ||
5213 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); | 5236 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index dae20a5..7ed3a4b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1652,20 +1652,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1652 | 1652 | ||
1653 | bool update_rotation = false; | 1653 | bool update_rotation = false; |
1654 | 1654 | ||
1655 | // Whilst not in mouselook, an avatar will transmit only the Z rotation as this is the only axis | 1655 | if (agentData.BodyRotation != Rotation) |
1656 | // it rotates around. | ||
1657 | // In mouselook, X and Y co-ordinate will also be sent but when used in Rotation, these cause unwanted | ||
1658 | // excessive up and down movements of the camera when looking up and down. | ||
1659 | // See http://opensimulator.org/mantis/view.php?id=3274 | ||
1660 | // This does not affect head movement, since this is controlled entirely by camera movement rather than | ||
1661 | // body rotation. It does not affect sitting avatar since it's the sitting part rotation that takes | ||
1662 | // effect, not the avatar rotation. | ||
1663 | // However, if we do need to store X and Y rotations in the future, another solution needs to be found | ||
1664 | // for the mouselook bug. Possibly, one could strip out X and Y rotations before sending the avatar | ||
1665 | // update messages. | ||
1666 | if (agentData.BodyRotation.Z != Rotation.Z || agentData.BodyRotation.W != Rotation.W) | ||
1667 | { | 1656 | { |
1668 | Rotation = new Quaternion(0, 0, agentData.BodyRotation.Z, agentData.BodyRotation.W); | 1657 | Rotation = agentData.BodyRotation; |
1669 | update_rotation = true; | 1658 | update_rotation = true; |
1670 | } | 1659 | } |
1671 | 1660 | ||