public static BpBoneData[] Read(string path)
    {
        XmlDocument Doc = new XmlDocument();
        Doc.Load(path);
        XmlNode Bp = Doc.SelectSingleNode("BoneProperty");

        BpBoneData[] Data = new BpBoneData[int.Parse(Bp.Attributes["Count"].Value)];

        for (int i = 0; i < Data.Length; i++)
        {
            XmlNode Bone = Bp.ChildNodes[i];
            Data[i].Name = Bone.Name;
            Data[i].Level = int.Parse(Bone.ChildNodes[0].Attributes["Value"].Value);
            Data[i].ParentBoneIdx = int.Parse(Bone.ChildNodes[1].Attributes["Value"].Value);
            Data[i].TransMat = toMatrix(Bone.ChildNodes[2].InnerText);
            Data[i].OffsetMat = toMatrix(Bone.ChildNodes[3].InnerText);
            Data[i].EulerMode = int.Parse(Bone.ChildNodes[4].Attributes["Value"].Value);
            Data[i].BoneLayers = int.Parse(Bone.ChildNodes[5].Attributes["Value"].Value);
            Data[i].BoneFlag = new int[2];
            Data[i].BoneFlag[0] = int.Parse(Bone.ChildNodes[6].Attributes["Value"].Value);
            Data[i].BoneFlag[1] = int.Parse(Bone.ChildNodes[6].Attributes["Value2"].Value);
            Data[i].LimitAng = toLimitAng(Bone.ChildNodes[7].InnerText);
            Data[i].Windom_FileName = Bone.ChildNodes[8].Attributes["Text"].Value;
            Data[i].Windom_Hide = int.Parse(Bone.ChildNodes[9].Attributes["Value"].Value);
        }

        return Data;
    }
    public static void Write(BpBoneData[] Data)
    {

    }