Releases: BigBang1112/gbx-net
GBX.NET 2.4.2
- Fixed write of LightmapCache when discovered
- Fixed TMUnlimiter write in vanilla mode
- Improved various
ToStrings - Added checks for the number of nodes
- Added more attributes to various properties
CGameCtnChallenge.Checkpointsis nowList
Assets were automatically generated using the publish workflow.
GBX.NET 2.4.1
- Fixed sample reading of TMF and older versions
- Added
TryCreateChunk - Implemented
CControlList0x007 - Slightly reduced allocation size of
BoundedStream - Fixed
CCtnMediaBlockUiTMSimpleEvtsDisplayto inheritCGameCtnMediaBlockUi
Assets were automatically generated using the publish workflow.
GBX.NET 2.4.0
- Added support for modifying ghost samples (
CPlugEntRecordDataandCGameGhost.Dataclasses)- Individual sample data is now stored as integers and bytes to avoid possible floating point issues
- Previous values are directly mapped from those integers and bytes in real time (small performance cost of retrieving them)
- To have an interface reaching the raw data, cast to
CSceneVehicleCar.ISampleRawDataorCSceneVehicleVis.IEntRecordDeltaRawData - Support ranges from roughly TMO to TM2020
- Added TMUnlimiter support for all of its versions
- The object tree is not 100% ideal yet, but it is working as expected
- Some older TMUnlimiter tracks reexported in 2.0 may not work yet, that's expected and to be resolved later
- Any tracks containing AngelScript bytecode cannot be parsed properly due to a mistake in the TMUnlimiter serializer not providing a length prefix, slim chances this is gonna get resolved
- Added full Profile.Gbx support for ManiaPlanet and TM2020
CGamePlayerProfilerecognizes all profile chunksCGameUserProfileparses successfully for the latest TM2020 Gbx, but misses most of the namings
- Added full
CHmsLightMapCachesupport- In
CGameCtnChallenge, it is thread-safe lazy-loaded upon accessing most of the lightmap properties
- In
- Removed all special explicit parse features (it is just a cast now)
- This change reduces code size and makes
CPlugFileGenparse possible for the cost of less trimming capabilities and a small performance cost
- This change reduces code size and makes
- Implemented support of
VehicleTunings.Gbxfor TM2020 - Refactored
CompressedDatatoZlibData- Newly has
Exceptionproperty to track errors that aren't disastrous to the parse - Also includes
Parsed, which is used to handle lazy-loading features
- Newly has
- Added
RawData, which works similarly toZlibDatabut without compression tracking- Some raw encapsulated data is available:
CGameCtnChallenge.ZoneGenealogyData,CGameCtnReplayRecord.ChallengeGbxData
- Some raw encapsulated data is available:
CGameCtnChallenge.ZoneGenealogyis now lazy-loaded - improves initial parse speed for TM2+- Inputs from TMS, TMNESWC, and TMO have been moved from
CGameCtnReplayRecord.Inputsto the first ghost'sCGameCtnGhost.InputsCGameCtnReplayRecord.Inputshad to stay due to TM1.0 storing the whole binding configuration with it before the ghost is parsed
- Reworked
ChunkSetsystem to be more consistent and reliable- Internally, there's no sorting applied
- Each added chunk is stored in multiple hashmaps
- On external chunk addition, a comparer is applied, and the chunk is inserted at a binary-searched index
- The comparer now considers base class IDs as it should
- Many more methods have been added to
CMwNodfor interaction as it was in v1
- Implemented data boundaries system
- Data regions that include a length prefix (userdata, skippable chunks, larger byte arrays) are now wrapped into a special
BoundedStream - It is designed to disallow reading past the defined length of the expected buffer without allocating larger byte arrays when possible
- If the data can be sought, it simply calculates allowed positions and disallows reading further. If seeking is not allowed, then it behaves like a
MemoryStream, reading all the bytes beforehand and working within this allocated buffer - This replaces the old wonky "limiter" that existed (only) in Gbx header reading
- GBX.NET is now much safer to use on the web backend thanks to this
- Data regions that include a length prefix (userdata, skippable chunks, larger byte arrays) are now wrapped into a special
- Added full support for
Scores.Gbx(also including write) - Added
CScriptTraitsPersistentsupport (ScriptCache.Gbx) - Added
CGameCtnChallengeGroup0x00A - Added
CGameCtnBlockInfoClipHorizontalandCGameCtnBlockInfoClipVertical(by Zai) - Added weak support for
CPlugFileGen - Added
CGameCtnChallenge.ThumbnailRotationMatrix - Added
Quat.IdentityandVec3.One - Added Gbx file extensions (as many as I could figure out)
- Improved input parsing performance
- Support for TMCP inputs v3 (by Tomashu)
- Fixed many instances of improper stream reading, often appearing in network streaming or during zipping
- Fixed various class ID remapping issues during write in main node, header chunks, and node references
- Fixed
CGameCtnCollectionnot writing icon file references properly - Fixed
CGameCtnCampaign.CollectionIdto beIdinstead ofstring - Fixed
CPlugBitmapAtlasnot handling many Lagoon textures properly - Fixed
CPlugSurfacev5 - Fixed
CPlugSkelv20 - Fixed
systemtimetype to read/write correct datetimes - Fixed
Quatmultiplication - Fixed
CSystemConfig0x057 - Fixed
CGameCtnZonedecryption issue in TM2+ paks - Fixed
CPlugVehiclePhyModelfor TM2020 - Fixed inheritance issues for adding
AppliedWithChunkattributes - Class names now prefer the last provided name instead of the first one in
ClassId.txt - Improved some
ToStrings - Updated TmEssentials to 2.6.2
GBX.NET.PAK 2.4.2
- Added
Pak.CheckIsGbx
GBX.NET.Crypto 1.2.1
- Added more guard clauses
GBX.NET.LZO 2.1.5
- Added more decompression checks
GBX.NET.Templates 0.2.1
- Added 404.html to GbxBlazorWasmApp
- Removed CRC32 features from templates
Gbx Explorer
- Game version is automatically determined from the remembered Gbx parameters (checkbox for older games is no longer available)
- This has some rare issues at times, for example, when exporting the
Challengenode from older TM replay, but other than that, it's very reliable
- This has some rare issues at times, for example, when exporting the
- All
byte[]now include theExportbutton, which saves all the bytes into a file (can be used onChallengeGbxData.Datafor example) - Added support for trace logs (shows chunk parse speeds)
- Brought back file extensions with a few improvements
- Fixed
[Flags]to display individual values - improvesGameVersiondisplay - Fixed a crash when modifying an immutable object that doesn't apply readonly
Assets were automatically generated using the publish workflow.
GBX.NET 1.2.13
- Competition Patch 2 updates by Tomashu:
- Support TMCP 2.0 inputs format v3
- Do not output inputs after finish
- Fixed
CPlugEntRecordDatav11 to use correct sample times
GBX.NET 2.3.4
- Expanded support for
SystemConfig.Gbxto all Nadeo games - Added
SolidandSolidReftoCGameObjectVisModel - CRC32 implementation is now directly part of the main GBX.NET library and enabled by default
- GBX.NET.Hashing will soon be deprecated
- Fixed compressed Gbx reading in networking/zipping scenarios
GBX.NET.PAK 2.4.1
- Made Pak6 public
- Disabled automatic processing of file tree for MP3 title packs to avoid a key-less crash
- Fixed
GbxHeadersStartto beuint
GBX.NET.Crypto 1.2.0
- Added
Blowfish.Encryptwith IV andBlowfish.EncryptHexa - Completed
RSAExtensionswith stablePublicDecryptandPrivateEncrypt
Assets were automatically generated using the publish workflow.
GBX.NET 2.3.3
- Added
Gbx.IsGbxAsync - Fixed
IsGbxthrowing when it shouldn't - Fixed TM2020 macroblocks that included skinnable items
- Fixed TM2020
CScriptTraitsMetadatafor arrays inside structs
GBX.NET.Crypto 1.1.0
- Added custom implementation of Blowfish (little-endian, little-endian Pak 18, and big-endian tricks)
- Added
DecryptHexareplica - Added an extension
RSA.PublicDecrypt(experimental)
GBX.NET.PAK 2.4.0
- Added
computeKeywhich runs the key hashing trick- If true, base key is expected, if false, the final key is expected
PakListreflects that and returns the base keys- All current Pak solutions need to be updated to use base keys or opt out of
computeKey
- Switched to use the Blowfish implementation from GBX.NET.Crypto
- Title packs can now display folders and files without providing a key (data still needs the key)
- The library is now MIT licensed
GBX.NET.Templates 0.2.0
- Added GBX.NET Blazor WebAssembly App template
- Updated dependencies
Assets were automatically generated using the publish workflow.
GBX.NET 2.3.2
- Added
Gbx.IsGbxfor quickGbxchecking without throwing exceptions CGameItemModel:- Added
VFXandMaterialModifier - Fixed
EntityModelEditionif it included a file
- Added
- Added
CPlugBitmapDecals.MatterId - Implemented
CPlugImageArray - Attempt to implement
CPlugCurveSimpleNod - Fixed
CPlugEntRecordDatav11 to use correct sample times - Fixed
CPlugVisual0x00F - Fixed
CSceneLayout0x01C
GBX.NET.PAK 2.3.0
- Transformed the parsing API to require only one key (either PakList-resolved key or the ManiaPlanet base key)
- Made the parsing fully support async (except for individual files) to allow efficient client-side parsing on WebAssembly
- Slightly improved bruteforcing to catch some parent folders
- Moved some
Pak6parts to thePakclass
Assets were automatically generated using the publish workflow.
GBX.NET 2.3.1
- Added new collection IDs: RedIsland, GreenCoast, BlueBay, WhiteShore
CGameCtnChallenge:- Added read-only
ExpectedEmbeddedItemModelsfor verifying packaged content (it doesn't have to match the modified zip) - Added
HasClonesand updatedCreateHeaderXmlto reflect this
- Added read-only
CGameCtnChallengeParameters: Added support for the newRaceValidateGhostin TM2020CGameCtnReplayRecord:- Added
ChallengeParameters(wtf? it's in the map file already) - Implemented chunks
0x026,0x027,0x028
- Added
CGameCtnCollection:- Added
VehicleTransform_...,BlockSkins_Default_..., andGlobalMaterialModifiermembers - Fixed various chunks
- Added
- Fixed
CPlugEntRecordDatav11 that now uses new delta encoding- The sample times might be off still, this will be resolved soon in a later update
- Fixed
CGameItemModel0x01F - Fixed
CGameCtnGhost.GetDisplayableInputsto handle TM2 and TMT properly
GBX.NET.LZO 2.1.4
- Updated to NativeSharpLzo 0.3.5
- Improved locking mechanism for parallelism
GBX.NET.PAK 2.2.2
- Updated to NativeSharpLzo 0.3.5
- Updated to NativeSharpZlib 0.2.9
Full Changelog: v2.3.0...v2.3.1
Assets were automatically generated using the publish workflow.
GBX.NET 1.2.12
- Fixed
CPlugEntRecordDatav11 that now uses new delta encoding- The sample times might be off still, this will be resolved soon only on v2 in a later update
GBX.NET 1.2.11
- Fixed
CGameCtnGhost.GetDisplayableInputsto handle TM2 and TMT properly and added a missing version constraint to it.
This is a rare GBX.NET v1 update as Clip Input still runs on v1.