public void ToStreamEx(Stream s, PmxElementFormat f = null) { PmxStreamHelper.WriteString(s, Name, f); PmxStreamHelper.WriteString(s, NameE, f); V3_BytesConvert.ToStream(s, Position); PmxStreamHelper.WriteElement_Int32(s, Parent, f.BoneSize); PmxStreamHelper.WriteElement_Int32(s, Level); PmxStreamHelper.WriteElement_Int32(s, (int)Flags, 2, signed: false); if (GetFlag(BoneFlags.ToBone)) { PmxStreamHelper.WriteElement_Int32(s, To_Bone, f.BoneSize); } else { V3_BytesConvert.ToStream(s, To_Offset); } if (GetFlag(BoneFlags.AddRotation) || GetFlag(BoneFlags.AddTranslation)) { PmxStreamHelper.WriteElement_Int32(s, AddParent, f.BoneSize); PmxStreamHelper.WriteElement_Float(s, AddRatio); } if (GetFlag(BoneFlags.FixAxis)) { V3_BytesConvert.ToStream(s, Axis); } if (GetFlag(BoneFlags.LocalFrame)) { if (!f.WithID) { NormalizeLocal(); } V3_BytesConvert.ToStream(s, LocalX); V3_BytesConvert.ToStream(s, LocalZ); } if (GetFlag(BoneFlags.ExtParent)) { PmxStreamHelper.WriteElement_Int32(s, ExtKey); } if (GetFlag(BoneFlags.IK)) { IK.ToStreamEx(s, f); } if (f.WithID) { PmxStreamHelper.WriteElement_UInt(s, base.UID); PmxStreamHelper.WriteElement_UInt(s, base.CID); } }