public void TestImportAMC()
        {
            AMCParser parser = new AMCParser();

            using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestAnimation01.amc"))
            {
                parser.ImportAMC(strm);
            }
        }
        public void TestImportAMCCreateRelativeMatrices()
        {
            AMCParser parser = new AMCParser();

            using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestAnimation02.amc"))
            {
                parser.ImportAMC(strm);
            }

            // Import skeleton
            var asfParser = new ASFParser();

            using (var strm = EmbeddedFile.GetStream("MHGameWork.TheWizards.Tests.Features.Simulation.Animation.Files.TestSkeleton02.asf"))
            {
                asfParser.ImportASF(strm);
            }
            var skeleton = asfParser.ImportSkeleton();


            var game = new DX11Game();
            var vis  = new SkeletonVisualizer();

            for (int i = 0; i < skeleton.Joints.Count; i++)
            {
                skeleton.Joints[i].RelativeMatrix = Matrix.Identity;
            }

            float time  = 0;
            float speed = 1;

            game.GameLoopEvent += delegate
            {
                game.LineManager3D.DrawGroundShadows = true;

                time += game.Elapsed;
                var sampleNum = (int)(time * 120 * speed) % parser.Samples.Count;

                for (int i = 0; i < parser.Samples[sampleNum].Segments.Count; i++)
                {
                    var seg = parser.Samples[sampleNum].Segments[i];

                    var asfJoint = asfParser.Joints.Find(j => j.name == seg.JointName);
                    var joint    = skeleton.Joints.Find(j => j.Name == seg.JointName);

                    Matrix relativeMat = parser.CalculateRelativeMatrix(seg, asfJoint);

                    joint.RelativeMatrix = relativeMat;
                }
                skeleton.UpdateAbsoluteMatrices();

                vis.VisualizeSkeleton(game, skeleton, new Vector3(4, 0, 4));
            };

            game.Run();
        }