private void ParseKeyFrame(TextParser parser, Anim mesh) { var frame = this.context.Resolve<AnimKeyFrame>(); parser.Consume("CIwAnimKeyFrame"); parser.Consume("{"); AnimBone bone = null; for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "time") { parser.Consume(); frame.Time = parser.ConsumeFloat(); continue; } if (attribute == "bone") { parser.Consume(); bone = frame.Bones[frame.Bones.EnsureItem(parser.ConsumeString())]; continue; } if (attribute == "pos") { parser.Consume(); bone.BindingPos = parser.ConsumeVector3(); continue; } if (attribute == "rot") { parser.Consume(); bone.BindingRot = parser.ConsumeQuaternion(); continue; } parser.UnknownLexemError(); } mesh.AddFrame(frame); }
private static void ParseVerts(TextParser parser, ListMeshStream<Vector3> vertices) { for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "numVerts") { parser.Consume(); vertices.Capacity = parser.ConsumeInt(); continue; } if (attribute == "v") { parser.Consume(); vertices.Add(parser.ConsumeVector3()); continue; } parser.UnknownLexemError(); } }
private static void ParseBone(TextParser parser, AnimSkel mesh) { parser.Consume("{"); AnimBone bone = null; for (;;) { var attribute = parser.Lexem; if (attribute == "}") { parser.Consume(); break; } if (attribute == "name") { parser.Consume(); bone = mesh.Bones[mesh.EnsureBone(parser.ConsumeString())]; continue; } if (attribute == "parent") { parser.Consume(); bone.Parent = mesh.EnsureBone(parser.ConsumeString()); continue; } if (attribute == "pos") { parser.Consume(); bone.BindingPos = parser.ConsumeVector3(); continue; } if (attribute == "rot") { parser.Consume(); bone.BindingRot = parser.ConsumeQuaternion(); continue; } parser.UnknownLexemError(); } }