aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2012-02-23 12:20:20 +0100
committerMelanie2012-02-23 12:20:20 +0100
commit56cc573d2ff71c6caa5b0f28d784f7c3c7751e52 (patch)
tree277ace8d703c68dbe4848e66191d6aec2c3bbf2f /OpenSim
parentMerge branch 'master' into careminster (diff)
downloadopensim-SC-56cc573d2ff71c6caa5b0f28d784f7c3c7751e52.zip
opensim-SC-56cc573d2ff71c6caa5b0f28d784f7c3c7751e52.tar.gz
opensim-SC-56cc573d2ff71c6caa5b0f28d784f7c3c7751e52.tar.bz2
opensim-SC-56cc573d2ff71c6caa5b0f28d784f7c3c7751e52.tar.xz
Show avatars as sitting on proot prims only to avoid motion jitter
for passengers
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs36
1 files changed, 31 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 161feda..1ac3b76 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -4828,9 +4828,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4828 { 4828 {
4829 ScenePresence presence = (ScenePresence)entity; 4829 ScenePresence presence = (ScenePresence)entity;
4830 4830
4831 position = presence.OffsetPosition;
4832 rotation = presence.Rotation;
4833
4834 if (presence.ParentID != 0)
4835 {
4836 SceneObjectPart part = m_scene.GetSceneObjectPart(presence.ParentID);
4837 if (part != null && part != part.ParentGroup.RootPart)
4838 {
4839 position = part.OffsetPosition + presence.OffsetPosition * part.RotationOffset;
4840 rotation = presence.Rotation * part.RotationOffset;
4841 }
4842 }
4843
4831 attachPoint = 0; 4844 attachPoint = 0;
4832 collisionPlane = presence.CollisionPlane; 4845 collisionPlane = presence.CollisionPlane;
4833 position = presence.OffsetPosition;
4834 velocity = presence.Velocity; 4846 velocity = presence.Velocity;
4835 acceleration = Vector3.Zero; 4847 acceleration = Vector3.Zero;
4836 4848
@@ -4840,7 +4852,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4840// acceleration = new Vector3(1, 0, 0); 4852// acceleration = new Vector3(1, 0, 0);
4841 4853
4842 angularVelocity = Vector3.Zero; 4854 angularVelocity = Vector3.Zero;
4843 rotation = presence.Rotation;
4844 4855
4845 if (sendTexture) 4856 if (sendTexture)
4846 textureEntry = presence.Appearance.Texture.GetBytes(); 4857 textureEntry = presence.Appearance.Texture.GetBytes();
@@ -4945,13 +4956,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4945 4956
4946 protected ObjectUpdatePacket.ObjectDataBlock CreateAvatarUpdateBlock(ScenePresence data) 4957 protected ObjectUpdatePacket.ObjectDataBlock CreateAvatarUpdateBlock(ScenePresence data)
4947 { 4958 {
4959 Vector3 offsetPosition = data.OffsetPosition;
4960 Quaternion rotation = data.Rotation;
4961 uint parentID = data.ParentID;
4962
4963 if (parentID != 0)
4964 {
4965 SceneObjectPart part = m_scene.GetSceneObjectPart(parentID);
4966 if (part != null && part != part.ParentGroup.RootPart)
4967 {
4968 offsetPosition = part.OffsetPosition + data.OffsetPosition * part.RotationOffset;
4969 rotation = data.Rotation * part.RotationOffset;
4970 parentID = part.ParentGroup.RootPart.LocalId;
4971 }
4972 }
4973
4948 byte[] objectData = new byte[76]; 4974 byte[] objectData = new byte[76];
4949 4975
4950 data.CollisionPlane.ToBytes(objectData, 0); 4976 data.CollisionPlane.ToBytes(objectData, 0);
4951 data.OffsetPosition.ToBytes(objectData, 16); 4977 offsetPosition.ToBytes(objectData, 16);
4952// data.Velocity.ToBytes(objectData, 28); 4978// data.Velocity.ToBytes(objectData, 28);
4953// data.Acceleration.ToBytes(objectData, 40); 4979// data.Acceleration.ToBytes(objectData, 40);
4954 data.Rotation.ToBytes(objectData, 52); 4980 rotation.ToBytes(objectData, 52);
4955 //data.AngularVelocity.ToBytes(objectData, 64); 4981 //data.AngularVelocity.ToBytes(objectData, 64);
4956 4982
4957 ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); 4983 ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock();
@@ -4965,7 +4991,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4965 update.NameValue = Utils.StringToBytes("FirstName STRING RW SV " + data.Firstname + "\nLastName STRING RW SV " + 4991 update.NameValue = Utils.StringToBytes("FirstName STRING RW SV " + data.Firstname + "\nLastName STRING RW SV " +
4966 data.Lastname + "\nTitle STRING RW SV " + data.Grouptitle); 4992 data.Lastname + "\nTitle STRING RW SV " + data.Grouptitle);
4967 update.ObjectData = objectData; 4993 update.ObjectData = objectData;
4968 update.ParentID = data.ParentID; 4994 update.ParentID = parentID;
4969 update.PathCurve = 16; 4995 update.PathCurve = 16;
4970 update.PathScaleX = 100; 4996 update.PathScaleX = 100;
4971 update.PathScaleY = 100; 4997 update.PathScaleY = 100;