/// <param name="time">Time since the last call (last frame time in seconds)</param>\r
public virtual void Step(float time)\r
{\r
+ // Don't interpolate when parent changes (sit/stand link/unlink)\r
if (previousParent != BasePrim.ParentID)\r
{\r
previousParent = BasePrim.ParentID;\r
\r
string pos = bone.Attributes.GetNamedItem("pos").Value;\r
string[] posparts = pos.Split(' ');\r
- b.pos = new Vector3(float.Parse(posparts[0]), float.Parse(posparts[1]), float.Parse(posparts[2]));\r
+ b.pos = new Vector3(float.Parse(posparts[0], Utils.EnUsCulture), float.Parse(posparts[1], Utils.EnUsCulture), float.Parse(posparts[2], Utils.EnUsCulture));\r
b.orig_pos = new Vector3(b.pos);\r
\r
string rot = bone.Attributes.GetNamedItem("rot").Value;\r
string[] rotparts = rot.Split(' ');\r
- b.rot = Quaternion.CreateFromEulers((float)(float.Parse(rotparts[0]) * Math.PI / 180f), (float)(float.Parse(rotparts[1]) * Math.PI / 180f), (float)(float.Parse(rotparts[2]) * Math.PI / 180f));\r
+ b.rot = Quaternion.CreateFromEulers((float)(float.Parse(rotparts[0], Utils.EnUsCulture) * Math.PI / 180f), (float)(float.Parse(rotparts[1], Utils.EnUsCulture) * Math.PI / 180f), (float)(float.Parse(rotparts[2], Utils.EnUsCulture) * Math.PI / 180f));\r
b.orig_rot = new Quaternion(b.rot);\r
\r
string scale = bone.Attributes.GetNamedItem("scale").Value;\r
string[] scaleparts = scale.Split(' ');\r
- b.scale = new Vector3(float.Parse(scaleparts[0]), float.Parse(scaleparts[1]), float.Parse(scaleparts[2]));\r
+ b.scale = new Vector3(float.Parse(scaleparts[0], Utils.EnUsCulture), float.Parse(scaleparts[1], Utils.EnUsCulture), float.Parse(scaleparts[2], Utils.EnUsCulture));\r
b.orig_scale = new Vector3(b.scale);\r
\r
float[] deform = Math3D.CreateSRTMatrix(new Vector3(1, 1, 1), b.rot, b.orig_pos);\r
if (node.Attributes.GetNamedItem("wearable") != null)\r
Wearable = node.Attributes.GetNamedItem("wearable").Value;\r
\r
- MinValue = float.Parse(node.Attributes.GetNamedItem("value_min").Value);\r
- MaxValue = float.Parse(node.Attributes.GetNamedItem("value_max").Value);\r
+ MinValue = float.Parse(node.Attributes.GetNamedItem("value_min").Value, Utils.EnUsCulture);\r
+ MaxValue = float.Parse(node.Attributes.GetNamedItem("value_max").Value, Utils.EnUsCulture);\r
\r
// These do not exists for driven parameters\r
if (node.Attributes.GetNamedItem("label_min") != null)\r
XmlNode param = node.Attributes.GetNamedItem("max1");\r
if (param != null)\r
{\r
- d.max1 = float.Parse(param.Value);\r
- d.max2 = float.Parse(node.Attributes.GetNamedItem("max2").Value);\r
- d.min1 = float.Parse(node.Attributes.GetNamedItem("min1").Value);\r
- d.max2 = float.Parse(node.Attributes.GetNamedItem("min2").Value);\r
+ d.max1 = float.Parse(param.Value, Utils.EnUsCulture);\r
+ d.max2 = float.Parse(node.Attributes.GetNamedItem("max2").Value, Utils.EnUsCulture);\r
+ d.min1 = float.Parse(node.Attributes.GetNamedItem("min1").Value, Utils.EnUsCulture);\r
+ d.max2 = float.Parse(node.Attributes.GetNamedItem("min2").Value, Utils.EnUsCulture);\r
d.hasMinMax = true;\r
}\r
else\r
public static Vector3 XmlParseVector(string data)\r
{\r
string[] posparts = data.Split(' ');\r
- return new Vector3(float.Parse(posparts[0]), float.Parse(posparts[1]), float.Parse(posparts[2]));\r
+ return new Vector3(float.Parse(posparts[0], Utils.EnUsCulture), float.Parse(posparts[1], Utils.EnUsCulture), float.Parse(posparts[2], Utils.EnUsCulture));\r
}\r
\r
public static Quaternion XmlParseRotation(string data)\r