public static ETX FromStream(Stream stream) { long pos = stream.Position; var asset_header = new AssetHeader(stream); stream.Position = pos; if (asset_header.EngineVersion == AssetUtil.EngineVersion.Version1804Edge) { return(new ETX1804(stream)); } if (((long)asset_header.EngineVersion & 0xFF) == 0x03) { return(new ETX1803(stream)); } throw new InvalidDataException("Unrecognised engine version " + AssetUtil.GetEngineVersionName(asset_header.EngineVersion)); }