Matrix4x4[] IAnimMatricesProvider.ProvideMatrices(double delta) { absTime += delta; var matrixOutStream = new MemoryStream(); emuRunner.Permit( null, animReader.cntb1, null, animReader.cntb2, 0, (float)absTime, matrixOutStream ); var br = new BinaryReader(matrixOutStream); matrixOutStream.Position = 0; var matrixOut = new Matrix4x4[animReader.cntb1]; for (int t = 0; t < animReader.cntb1; t++) { var m = new Matrix4x4(); m.M11 = br.ReadSingle(); m.M12 = br.ReadSingle(); m.M13 = br.ReadSingle(); m.M14 = br.ReadSingle(); m.M21 = br.ReadSingle(); m.M22 = br.ReadSingle(); m.M23 = br.ReadSingle(); m.M24 = br.ReadSingle(); m.M31 = br.ReadSingle(); m.M32 = br.ReadSingle(); m.M33 = br.ReadSingle(); m.M34 = br.ReadSingle(); m.M41 = br.ReadSingle(); m.M42 = br.ReadSingle(); m.M43 = br.ReadSingle(); m.M44 = br.ReadSingle(); matrixOut[t] = m; } return(matrixOut); }
public EmuBasedAnimMatricesProvider( AnimReader animReader, Stream mdlxStream, Stream animStream ) { emuRunner = new Mlink(); this.animReader = animReader; var matrixOutStream = new MemoryStream(); mdlxStream.Position = 0; animStream.Position = 0; // initialize emulator memory space emuRunner.Permit( mdlxStream, animReader.cntb1, animStream, animReader.cntb2, 0, (float)absTime, matrixOutStream ); }
Matrix4x4[] IAnimMatricesProvider.ProvideMatrices(double delta) { absTime += delta; var matrixOutStream = new MemoryStream(); emuRunner.Permit( null, animReader.cntb1, null, animReader.cntb2, 0, (float)absTime, matrixOutStream ); var br = new BinaryReader(matrixOutStream); matrixOutStream.Position = 0; var matrixOut = new Matrix4x4[animReader.cntb1]; for (int t = 0; t < animReader.cntb1; t++) { matrixOut[t] = matrixOutStream.ReadMatrix4x4(); } return(matrixOut); }