public void Read(BinaryReader br) { br.BaseStream.Seek(0xB4, SeekOrigin.Begin); uint offset = ResourceUtil.ReadOffset(br); if (offset != 0) { Drawable = new DrawableModel(); br.BaseStream.Seek(offset, SeekOrigin.Begin); Drawable.Read(br); } else { throw new Exception("No model in FragType"); } br.BaseStream.Seek(0x1F3, SeekOrigin.Begin); int childCount = br.ReadByte(); br.BaseStream.Seek(0xD4, SeekOrigin.Begin); uint childListOffset = ResourceUtil.ReadOffset(br); br.BaseStream.Seek(childListOffset, SeekOrigin.Begin); var childOffsets = new SimpleArray <uint>(br, childCount, ResourceUtil.ReadOffset); Children = new FragTypeChild[childCount]; for (int i = 0; i < childCount; i++) { br.BaseStream.Seek(childOffsets[i], SeekOrigin.Begin); Children[i] = new FragTypeChild(br); } foreach (var child in Children) { if (child.Drawable != null) { child.Drawable.ShaderGroup = Drawable.ShaderGroup; } } }
public void Read(BinaryReader br) { br.BaseStream.Seek(0xB4, SeekOrigin.Begin); uint offset = ResourceUtil.ReadOffset(br); if (offset != 0) { Drawable = new DrawableModel(); br.BaseStream.Seek(offset, SeekOrigin.Begin); Drawable.Read(br); } else { throw new Exception("No model in FragType"); } br.BaseStream.Seek(0x1F3, SeekOrigin.Begin); int childCount = br.ReadByte(); br.BaseStream.Seek(0xD4, SeekOrigin.Begin); uint childListOffset = ResourceUtil.ReadOffset(br); br.BaseStream.Seek(childListOffset, SeekOrigin.Begin); var childOffsets = new SimpleArray<uint>(br, childCount, ResourceUtil.ReadOffset); Children = new FragTypeChild[childCount]; for(int i=0;i<childCount; i++) { br.BaseStream.Seek(childOffsets[i], SeekOrigin.Begin); Children[i] = new FragTypeChild(br); } foreach (var child in Children) { if (child.Drawable != null) { child.Drawable.ShaderGroup = Drawable.ShaderGroup; } } }