public static PmdVertex Parse(BinaryReader br, PmdDocument doc) { return new PmdVertex { Position = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, Normal = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }, UV = new[] {br.ReadSingle(), br.ReadSingle() }, RelatedBones = new[] { doc.GetBone(br.ReadInt16()), doc.GetBone(br.ReadInt16()) }, BoneWeight = br.ReadByte() / 100f, NoEdge = br.ReadBoolean(), }; }
public static PmdIK Parse(BinaryReader br, PmdDocument doc) { var rt = new PmdIK { IKBone = doc.GetBone(br.ReadInt16()), TargetBone = doc.GetBone(br.ReadInt16()), }; var bindedBones = br.ReadByte(); rt.LoopCount = br.ReadUInt16(); rt.AngleLimitUnit = br.ReadSingle(); rt.BindedBones = Enumerable.Range(0, bindedBones).Select(_ => doc.GetBone(br.ReadInt16())).ToList(); return rt; }
public void Parse(BinaryReader br, PmdDocument doc) { this.Name = PmdDocument.ReadPmdString(br, 20); this.ParentBone = doc.GetBone(br.ReadInt16()); this.ConnectedToOrAssociatedBone = doc.GetBone(br.ReadInt16()); this.Kind = (PmdBoneKind)br.ReadByte(); var parentOrRate = br.ReadInt16(); if (this.Kind == PmdBoneKind.RotationAssociated) this.AssosiationRate = parentOrRate / 100f; else this.IKParentOrAffectedBone = doc.GetBone(parentOrRate); this.Position = new[] { br.ReadSingle(), br.ReadSingle(), br.ReadSingle() }; }