diff --git a/OpenSim/Region/Framework/Scenes/BinBVHAnimation.cs b/OpenSim/Region/Framework/Scenes/BinBVHAnimation.cs index 367e8d83a3..1dd961333f 100644 --- a/OpenSim/Region/Framework/Scenes/BinBVHAnimation.cs +++ b/OpenSim/Region/Framework/Scenes/BinBVHAnimation.cs @@ -345,6 +345,12 @@ namespace OpenSim.Region.Framework.Scenes // argh! floats into two bytes!.. bad bad bad bad // After fighting with it for a while.. -1, to 1 seems to give the best results rotations = readKeys(data, ref i, rotationkeys, -1f, 1f); + for (int iter = 0; iter < rotations.Length; iter++) + { + rotations[iter].W = 1f - + (rotations[iter].key_element.X + rotations[iter].key_element.Y + + rotations[iter].key_element.Z); + } if (!BitConverter.IsLittleEndian) @@ -481,6 +487,8 @@ namespace OpenSim.Region.Framework.Scenes /// public Vector3 key_element; + public float W; + public void WriteBytesToStream(BinaryWriter iostream, float InPoint, float OutPoint, float min, float max) { iostream.Write(BinBVHUtil.ES(Utils.UInt16ToBytes(BinBVHUtil.FloatToUInt16(time, InPoint, OutPoint))));