public void Read(BinaryReader br) { br.BaseStream.Position = offset; int flags = br.ReadInt32(); //leftAligned = ((flags & 1) != 0); // bit 0 //rightAligned = ((flags & 2) != 0); // bit 1 //pulsing = ((flags & 4) != 0); // bit 2 //tinyText = ((flags & 8) != 0); // bit 3 period = br.ReadInt32(); int keyFrameCount = br.ReadInt32(); int keyFrameOffset = br.ReadInt32() - meta.magic; if (keyFrameCount > 0) { BinaryReader br2 = br; int keyFrameTag = meta.Map.Functions.ForMeta.FindMetaByOffset(keyFrameOffset); if (keyFrameTag != meta.TagIndex) { Meta newMeta = Map.GetMetaFromTagIndex(keyFrameTag, meta.Map, false, true); br2 = new BinaryReader(newMeta.MS); keyFrameOffset -= newMeta.offset; } else keyFrameOffset -= meta.offset; keyFrames = new keyFrame[keyFrameCount]; for (int i = 0; i < keyFrameCount; i++) { keyFrames[i] = new keyFrame(order); keyFrames[i].offset = keyFrameOffset + i * 20; keyFrames[i].Read(br2); } } }
public void Read(BinaryReader br) { br.BaseStream.Position = offset; int flags = br.ReadInt32(); //leftAligned = ((flags & 1) != 0); // bit 0 //rightAligned = ((flags & 2) != 0); // bit 1 //pulsing = ((flags & 4) != 0); // bit 2 //tinyText = ((flags & 8) != 0); // bit 3 period = br.ReadInt32(); int keyFrameCount = br.ReadInt32(); int keyFrameOffset = br.ReadInt32() - meta.magic; if (keyFrameCount > 0) { BinaryReader br2 = br; int keyFrameTag = meta.Map.Functions.ForMeta.FindMetaByOffset(keyFrameOffset); if (keyFrameTag != meta.TagIndex) { Meta newMeta = Map.GetMetaFromTagIndex(keyFrameTag, meta.Map, false, true); br2 = new BinaryReader(newMeta.MS); keyFrameOffset -= newMeta.offset; } else { keyFrameOffset -= meta.offset; } keyFrames = new keyFrame[keyFrameCount]; for (int i = 0; i < keyFrameCount; i++) { keyFrames[i] = new keyFrame(order); keyFrames[i].offset = keyFrameOffset + i * 20; keyFrames[i].Read(br2); } } }
private void ParseFile(string filename) { try { using (StreamReader sr = new StreamReader(FInputFileName[0])) { //int i = 0; while (sr.Peek() >= 0) { List<string> names = sr.ReadLine().Split(';').ToList<string>(); if (names.Count > 17) { keyFrame _keyFrame = new keyFrame(); Matrix4x4 _matrix = new Matrix4x4(); int recordingIndex = -1; for (int i = 0; i < keyFramesList2.Count; i++) { if (keyFramesList2[i].name == names[0]) { recordingIndex = i; } } //name not found, add new recordingtrack if (recordingIndex == -1) { recordingIndex = keyFramesList2.Count; keyFramesList2.Add(new keyFrames()); keyFramesList2[recordingIndex].name = names[0]; keyFramesList2[recordingIndex].frame = new List<keyFrame>(); } //_keyFrame.name = names[0]; _keyFrame.timeCode = double.Parse(names[1], System.Globalization.CultureInfo.InvariantCulture); for (int j = 0; j < 16; j++) { _matrix[j] = double.Parse(names[j + 2], System.Globalization.CultureInfo.InvariantCulture); } _keyFrame.Transfrom = _matrix; keyFramesList.Add(_keyFrame); keyFramesList2[recordingIndex].frame.Add(_keyFrame); } } FOutputEnd.SliceCount = keyFramesList2.Count; FOutputStart.SliceCount = keyFramesList2.Count; for (int j = 0; j < keyFramesList2.Count; j++) { // FOutputEnd[j] = keyFramesList[(keyFramesList.Count - 1)].timeCode; // FOutputStart[j] = keyFramesList[0].timeCode; FOutputEnd[j] = keyFramesList2[j].frame[keyFramesList2[j].frame.Count-1].timeCode; FOutputStart[j] = keyFramesList2[j].frame[0].timeCode; } } } catch (IOException ioex) { } }