Skip to content

Releases: BigBang1112/gbx-net

GBX.NET 0.14.2

12 Dec 01:28
5fcccf3
Compare
Choose a tag to compare
  • Experimentally removed a check of AvailableInheritanceClasses when parsing chunks to solve an issue related to CGameCtnMediaBlockTimeSpeed, also speeding up the parsing by a little bit
  • Fixed a bug when writing compressed body after parsing only a header with readRawBody: true
  • Fixed GameBoxReader.ReadUntilNextChunk()

GBX.NET 0.14.1

03 Dec 03:55
d627d3d
Compare
Choose a tag to compare
  • Added readRawBody parameter to GameBox.ParseHeader and GameBox.ParseNodeHeader allowing to modify header values without reading the full GBX file
    • In this mode, changing the compression type is forbidden and HeaderOnlyParseLimitationException can be thrown by set;
  • Changed X, Y, ScaleX and ScaleY in CControlEffectSimi to Position and Scale by using Vec2
  • Added Centered(), WithColorBlendMode(), ContinousEffect() and Interpolated() methods to CControlEffectSimi builders
  • Replaced File.OpenWrite() with File.Create()
  • Updated defaults for CGameCtnMediaBlockSoundBuilder
  • GameBoxReader.ReadToEnd() now prefers non-seeking solution by default
  • Split some generic classes into files with OfT.cs suffix
  • Fixed CGameCtnMediaBlockTextBuilder not applying the color
  • Fixed Chunk.Remap() fatal bugs related to downgrading (down-mapping)
    • More GBX files should be now saveable in TMU and lower versions
  • Fixed GameBox.TryNode()

GBX.NET 0.14.0

27 Nov 05:09
7a12408
Compare
Choose a tag to compare
  • Library support has been shifted up to .NET 6. Support for .NET Framework 4.5 was dropped and replaced with .NET Framework 4.8. It is still possible for the framework support to be widened in the future.
  • Added 5 new node builders
    • CGameCtnMediaClip.Create()
    • CGameCtnMediaTrack.Create()
    • CGameCtnMediaBlockText.Create()
    • CGameCtnMediaBlockSound.Create()
    • CControlEffectSimi.Create()
  • Added some ghost sample data findings to CPlugEntRecordData by TheMrMiku and the TMDojo team
  • Expanded CGamePlayerProfile (Profile.Gbx)
  • Added CGameNetOnlineMessage
  • Added CGameLeague
  • Added support for CGameCtnMediaBlockTimeSpeed and CGameCtnMediaBlockCameraOrbital
  • Added GameBox.Decompress() static method that turns a GBX file into an uncompressed version while still being compatible with the game
    • GBX Decompressor tool is available in the Tools folder
  • Reduced overloads across the whole project more towards default parameters
  • Returning values of ParseNode and ParseNodeHeader are now marked as nullable (they can be null if the node is not recognized by the library)
  • All GameBoxReaderWriter methods now won't change the returned value to its written default after writing
  • All CMwNod.Parse() methods are now internal
  • Enhanced documentation across GameBoxReader, GameBoxWriter, GameBoxReaderWriter, but it still isn't complete because it takes ages xd
  • Generalogies in CGameCtnChallenge are back
  • Chunk's ToString now includes the version of the chunk
  • Added NodeCacheManager.GetNodeInstance()
  • Added GameBoxReader.ReadBytesUntilNextChunk()
  • Added GameBoxReaderWriter.Uri()
  • Lists reads/writes have been rewritten more towards iteration behavior
  • Time-related methods in GameBoxReaderWriter are now preferring truncating over rounding
  • Added AppliedWithChunkAttribute that will be used later in the updates to improve the reference/documentation of chunks availabilities across different Trackmania versions
  • Moved attributes to GBX.NET.Attributes and exceptions to GBX.NET.Exceptions
  • GameBox constructor is no longer exposed to guide the beginners towards static methods
  • Formatter has been replaced with the one from TmEssentials
  • CGameCtnBlock.AbsolutePositionInMap is now a nullable property
  • Ghost sample data now expose full data buffers instead of only showing the unknown buffers
  • CGameCtnGhost.SampleData will be null if its node ID is -1
  • Fixed LZO methods not being statically defined
  • Fixed bugs related to GameBoxReaderWriter.EnumInt32(), possibly fixing the camera game bug
  • Fixed the Y block coordinate on ManiaPlanet maps
  • Fixed CGameCtnGhost chunk 0x015 modifying the PlayerModel property even though it shouldn't
  • Code now fully uses file-scoped namespaces and implicit usings

The library has also started to add hundreds of unit and integration tests and this process is expected to expand on for the next years.

GBX.NET 0.13.0

26 Oct 18:29
429d785
Compare
Choose a tag to compare
  • Use TmEssentials library
  • Use C# 9 (C# 10 soon)
  • Use nullable reference types
  • Add more summaries
  • Add specialized exceptions
  • Improved parse speed of map blocks
  • Parse methods should not return null (this case might still exist) but throw exceptions
  • Replace Task<CGameCtnChallenge> Challenge with CGameCtnChallenge Challenge and GetChallengeAsync
  • Replace Task<CGameCtnGenealogy> Genealogies to CGameCtnGenealogy Genealogies
  • Fixed CGameCtnMediaBlockCameraEffectScript chunk version 0
  • Fixed reading of CGameCtnMediaBlockFxBlurDepth
  • Added some Plug engine progress
  • Fixed exception on item's and block's property Color
  • Fixed exception caused by ManiaPlanet 3 metadata chunk
  • Preparing new debugging methods, currently only available in Debug configuration
  • Remove public constructors from nodes (alternative solution coming in 0.14)

GBX.NET 0.12.0

26 Aug 19:17
956710e
Compare
Choose a tag to compare
  • Added PAK3 file parsing
  • Fixed reference table writing
  • Decreased the whole parse time by almost 3 times

GBX.NET 0.11.0

25 Jun 22:45
ff0b51f
Compare
Choose a tag to compare
  • Added new GameBox.ParseNode methods, the new conventional way to parse GBX with GBX.NET
  • Node has been transferred to CMwNod
  • First parse of GBX has been sped by more than 60%
  • All MediaTracker block Key[] have been changed to IList<Key>
  • Added CMwNod.Save method to simplify GBX saving
  • Added support for TM2020 block colors
  • Added IVersionable to group versionable chunks
  • Added IsValidatedForScriptModes to CGameCtnChallengeParameters
  • Added more samples and updated current samples
  • Added Byte(int) to reader-writer
  • Added CGameCtnReplayRecord.GetGhosts
  • Fixed map metadata parse
  • Fixed replay ghost validation chunk writing
  • Fixed ghost checkpoints to be nullable
  • Removed more obsoletes

Renames:

  • Renamed GameBox<T>.MainNode to GameBox<T>.Node

GBX.NET 0.10.2

06 Jun 15:24
c7e72db
Compare
Choose a tag to compare
  • Fixed exception related to EventsDuration == 0
  • Fixed problems with CGameCtnMediaBlockTime

GBX.NET 0.10.1

05 Jun 22:04
fbeebb3
Compare
Choose a tag to compare
  • Added GBX.NET.IO
  • Added null check on GameBox.AssignBodyToNode
  • Fixed parse of CGameCtnMediaTrack 0x004
  • Other fixes

GBX.NET 0.10.0

01 Jun 17:55
f9aa906
Compare
Choose a tag to compare

Version 0.10.0 is finally out together with GBX.NET.LZO and GBX.NET.Imaging.

The library successfully drops System.Drawing.Common from its needed supports, making the library package-independent in .NET Standard 2.0.

  • The library is now separated into GBX.NET and GBX.NET.LZO
    • GBX.NET, GBX.NET.Imaging, and GBX.NET.Json are now distributed under MIT
    • GBX.NET.LZO stays GNU GPL 3.0, which means you have to use GNU GPL 3.0 after referencing
    • More details available in README
  • Added support for TM2020 ghost sample data reading
    • CPlugEntRecordData has been successfully reverse-engineered
    • The ghost now provides the same data as a usual TM ghost (position, rotation, velocity, speed)
    • Shootmania ghost samples are also retrievable, but the only position that is accurate
  • CSystemConfig (.SystemConfig.Gbx) is now officially supported
  • Added support for input reading ranging TM1.0 - TM2
  • Added experimental readUncompressedBodyDirectly parameter recommended for parsing internal GBX files from the internet
  • Added support for reading nodes in streams with CanSeek: false
  • Added map lightmap read/write support
    • Methods currently missing in GBX.NET.Imaging
  • Map thumbnail is now presented as a byte array
    • GBX.NET.Imaging has extensions that convert them into Bitmap
  • Collector icons are now presented as 2D arrays of colors
    • GBX.NET.Imaging has extensions that convert them into Bitmap
  • Added INodeHeader to CGameCtnChallenge and CGameCtnReplayRecord
    • An interface that shows only the properties that can be read from the header
  • Added CGameCtnMediaBlockTimeSpeed
  • Added CCtnMediaBlockUiTMSimpleEvtsDisplay
  • Added GameBox.TryNode method
  • DiscoverAll method has now parallel and serial methods
  • Enhanced CGamePlayerProfile
  • GameBoxReader.ReadArray method now has an optional length parameter
  • Fixed ghost parse for TM Turbo
  • Fixed ghost checkpoints for TMUF and lower ghosts
  • Fixed light trail color for TM2 not showing
  • Fixed BakedBlocks property not discovering its chunks
  • Fixed name collisions with reference table classes
  • Removed more obsoletes
  • Class reorganizations
  • Tons of more minor changes

Renames:

  • Renamed CGameGhost.Data to CGameGhost.SampleData
  • Renamed MediaBlockKey to CGameCtnMediaBlock.Key
  • Renamed MapOrigin and MapTarget to MapCoordOrigin and MapCoordTarget
  • Renamed Embeds to EmbeddedObjects
  • Renamed SecondaryPackDesc to ForegroundPackDesc

GBX.NET 0.9.0

04 Mar 18:05
0d5e068
Compare
Choose a tag to compare
  • Project now supports AnyCPU and x64 for reading purposes
  • New parsing strategy so that GBX streams with CanSeek set to false can be parsed
  • Improved ghost's control entries to support analog input with ControlEntryAnalog class
  • Added a new contrustor GameBox<T>(T node) to make saving Node to GBX format easier
  • Added CGameCtnGhostData.GetSampleLerp for sample data interpolation
  • Added CGameCtnChallenge chunks 0x01A, 0x01B, 0x01D
  • Added CGameCtnReplayRecord chunk 0x018
  • Added CGameCtnGhost chunk 0x025, fixed parse of 0x000
  • Added AnchorTreeId to CGameCtnAnchoredObject
  • Added TriggerSize to offzones
  • Added CompressedStream to reduce repetitiveness
  • Added better handle of ghost data exceptions
  • Added more classes to ClassID.txt
  • Added GameBoxReader.HasMagic method
  • Added TimeSpan.ToStringTM method for a string representation similar to Trackmania's
  • Added Lerp methods for Vec2, Vec3 and Quaternion
  • DiscoverAll methods now discovers chunk in parallel
  • Block coords now substract by 1,1,1 only if chunk version >= 6
  • Changed FileRef LocatorUrl to Uri type
  • Removed DebugViews on nodes
  • Removed more obsolete features