private Quaternion(string parsableText) { if (parsableText == null) { throw new ArgumentException("Text cannot be null."); } try { if (parsableText[0] == '[') //[pitch,yaw,roll], Rotation in euler angles in degrees { string[] vals = parsableText.TrimStart('[').TrimEnd(']').Split(','); Quaternion q = Quaternion.FromEulerAnglesInDegrees(float.Parse(vals[0]), float.Parse(vals[1]), float.Parse(vals[2])); w = q.w; x = q.x; y = q.y; z = q.z; } else { string[] vals = parsableText.TrimStart('(').TrimEnd(')').Split(','); x = float.Parse(vals[0]); y = float.Parse(vals[1]); z = float.Parse(vals[2]); w = float.Parse(vals[3]); } } catch (Exception) { throw new FormatException(string.Format("Could not parse Quaternion from '{0}'.", parsableText)); } }