Exemple #1
0
 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(),
     };
 }
Exemple #2
0
        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;
        }
Exemple #3
0
        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() };
        }