Releases: BigBang1112/gbx-net
Releases · BigBang1112/gbx-net
GBX.NET 0.14.2
- Experimentally removed a check of
AvailableInheritanceClasses
when parsing chunks to solve an issue related toCGameCtnMediaBlockTimeSpeed
, 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
- Added
readRawBody
parameter toGameBox.ParseHeader
andGameBox.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 byset;
- In this mode, changing the compression type is forbidden and
- Changed
X
,Y
,ScaleX
andScaleY
inCControlEffectSimi
toPosition
andScale
by usingVec2
- Added
Centered()
,WithColorBlendMode()
,ContinousEffect()
andInterpolated()
methods toCControlEffectSimi
builders - Replaced
File.OpenWrite()
withFile.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
- 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
andCGameCtnMediaBlockCameraOrbital
- 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
andParseNodeHeader
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 toGBX.NET.Exceptions
GameBox
constructor is no longer exposed to guide the beginners towards static methodsFormatter
has been replaced with the one fromTmEssentials
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 benull
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
chunk0x015
modifying thePlayerModel
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
- 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
withCGameCtnChallenge Challenge
andGetChallengeAsync
- Replace
Task<CGameCtnGenealogy> Genealogies
toCGameCtnGenealogy 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
- Added PAK3 file parsing
- Fixed reference table writing
- Decreased the whole parse time by almost 3 times
GBX.NET 0.11.0
- Added new
GameBox.ParseNode
methods, the new conventional way to parse GBX with GBX.NET Node
has been transferred toCMwNod
- First parse of GBX has been sped by more than 60%
- All MediaTracker block
Key[]
have been changed toIList<Key>
- Added
CMwNod.Save
method to simplify GBX saving - Added support for TM2020 block colors
- Added
IVersionable
to group versionable chunks - Added
IsValidatedForScriptModes
toCGameCtnChallengeParameters
- 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
toGameBox<T>.Node
GBX.NET 0.10.2
- Fixed exception related to
EventsDuration == 0
- Fixed problems with CGameCtnMediaBlockTime
GBX.NET 0.10.1
- Added
GBX.NET.IO
- Added null check on
GameBox.AssignBodyToNode
- Fixed parse of
CGameCtnMediaTrack
0x004
- Other fixes
GBX.NET 0.10.0
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
- Getting TM2020 to work is likely impossible
- 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
toCGameCtnChallenge
andCGameCtnReplayRecord
- 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 optionallength
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
toCGameGhost.SampleData
- Renamed
MediaBlockKey
toCGameCtnMediaBlock.Key
- Renamed
MapOrigin
andMapTarget
toMapCoordOrigin
andMapCoordTarget
- Renamed
Embeds
toEmbeddedObjects
- Renamed
SecondaryPackDesc
toForegroundPackDesc
GBX.NET 0.9.0
- Project now supports AnyCPU and x64 for reading purposes
- New parsing strategy so that GBX streams with
CanSeek
set tofalse
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 savingNode
to GBX format easier - Added
CGameCtnGhostData.GetSampleLerp
for sample data interpolation - Added
CGameCtnChallenge
chunks0x01A
,0x01B
,0x01D
- Added
CGameCtnReplayRecord
chunk0x018
- Added
CGameCtnGhost
chunk0x025
, fixed parse of0x000
- Added
AnchorTreeId
toCGameCtnAnchoredObject
- 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 forVec2
,Vec3
andQuaternion
DiscoverAll
methods now discovers chunk in parallel- Block coords now substract by 1,1,1 only if chunk version >= 6
- Changed
FileRef
LocatorUrl
toUri
type - Removed DebugViews on nodes
- Removed more obsolete features