This library uses Semantic Versioning.
ImmutableArena
is now sealed.- Improved overflow exception message in
GameTime.FromGameUnits(ulong gameUnits)
method.
- Certain classes are now sealed:
Asset
AudioAssetInfo
MeshAssetInfo
ObjectBindingAssetInfo
ShaderAssetInfo
TextureAssetInfo
- Removed deprecated
TimeExtensions
methods.
- Fixed bug in OBJ parser.
- The types
ObjParsingContext
andParsedObjData
are now internal. These types weren't supposed to be public.
- Texture coordinates and normals are now exported explicitly for compatibility with some 3D modeling software.
- Removed
EntitySpawnReplayEvent
type. Calculate the entity ID yourself and use theReplayEvent
type instead.
- Fixed
EntitySpawnReplayEvent
andReplayEvent
constructors not being public.
Rewrote the Core.Replay library. A lot of functionality has been removed. The library is now only used for parsing and compiling replay buffers.
ReplayEventsData
has been removed in favor of justList<ReplayEvent>
orIReadOnlyList<ReplayEvent>
throughout the library.
- Removed
ReplayEventsData
type. - Removed
ReplayBinary<T>.CreateDefault
method. - Removed
ReplayBinary<T>
constructor accepting byte array of events data. ReplayEventsParser
is now internal.ReplayEventsCompiler
is now internal.
- Added
GameUnits
property toGameTime
struct. - Added operators to
GameTime
struct:+
-
*
/
%
<
>
<=
>=
- Added
ModBinaryTocEntry.IsEnabled
property.
- The mod binary TOC no longer allows assets with a name that is empty or consists only of whitespace.
- Added new
ModBinaryTocEntry
methods:Enable
Disable
- Added new
ModBinaryToc
methods:DisableAllAssets
EnableProhibitedAssets
EnableAsset
DisableAsset
- Added new
GameData
project which is a rewrite of theWiki
project. The plan is to eventually replace theWiki
project with this new project. - Added
GameTime
struct to theCommon
project.
- Some inaccuracies in the
EntityTypeExtensions.GetDamage
method have been fixed.
- Deprecated all
TimeExtensions
methods.
- Remove obsolete binary serialization support from exception types.
- The following types are now records instead of a record structs, and no longer have a public constructor:
Dagger
Death
Enemy
Upgrade
- Removed obsolete
Deaths.GetDeathByLeaderboardType
method. UseDeaths.GetDeathByType
instead.
- Support for loudness values has been added. A loudness asset is now automatically generated if needed.
- Added
float? loudnessValue
parameter toAudioModBinaryBuilder.AddAudio
method.
- Loudness file is now extracted to
loudness.ini
instead ofloudness.wav
.
Rewrote the Mod library. The API is now much more stable and easier to use.
- Added
AssetExtractionResult
record which is used to return the result of an asset extraction.- This allows for proper shader extraction where a single asset contains multiple files.
- The
ModBinary.ExtractAsset
methods now return an instance of this type.
- Renamed "chunks" to "TOC entries".
- Renamed
ModBinaryChunk
toModBinaryTocEntry
. - Renamed
ModBinaryBuilder.Chunks
toModBinaryBuilder.TocEntries
. - Renamed
ModBinaryToc.Chunks
toModBinaryToc.Entries
.
- Renamed
ModBinaryBuilder
is now abstract.- The
ModBinaryBuilder.AddAsset
method has been removed. - Use the
AudioModBinaryBuilder
andDdModBinaryBuilder
classes to create audio and dd mods respectively. - The
AudioModBinaryBuilder
class exposes anAddAudio
method. - The
DdModBinaryBuilder
class exposesAddMesh
,AddObjectBinding
,AddShader
, andAddTexture
methods.
- The
- Removed
AssetTypeExtensions.GetFileExtension
andAssetTypeExtensions.ToDisplayString
methods. - Removed
AssetConverter
class.
- Added
IEventData.CloneEventData
extension method.
- Upgraded to .NET 8.0.
- Added
CreateDefault
methods to all event data types.
- Updated
SixLabors.ImageSharp
from 3.0.2 to 3.1.2.
EnablePreviewFeatures
has been turned off since we don't use any preview features.
- Added
ReplayEventsData.GetEntityTypeIncludingNegated
method, which tries to resolve negated pede entity IDs as well. These are used inHitEventData
when a dead pede segment is hit.
ReplayEventsData.GetEntityType
now returnsnull
instead of throwing anArgumentOutOfRangeException
when the entity type is not found.
- Removed
EntityTypeExtensions.GetColor
method.
- Removed
DeathEventData
. This is now simply parsed asHitEventData
.
- Fixed not updating referring entity IDs when inserting or removing spawn events. Entity IDs that no longer refer to an existing entity are set to -1. This applies to:
BoidSpawnEventData.SpawnerEntityId
EntityOrientationEventData.EntityId
EntityPositionEventData.EntityId
EntityTargetEventData.EntityId
HitEventData.EntityIdA
HitEventData.EntityIdB
SpiderEggSpawnEventData.SpawnerEntityId
TransmuteEventData.EntityId
Working with replay events has been rewritten. All problems have been fixed and the API is now mostly stable.
- Added
ReplayEventsData.SpawnEventCount
property. - Added
ReplayEventsData.GetEntityType
method. - Added
ReplayEvent
andEntitySpawnReplayEvent
records. These types haveinternal
constructors and can only be created internally.
- All event structures have been renamed to end with 'Data', for example
BoidSpawnEvent
is nowBoidSpawnEventData
. - All event structures have been moved to the
DevilDaggersInfo.Core.Replay.Events.Data
namespace. - Event structures no longer contain data that is not written to the replay events buffer. This means that the
EntityId
property has been removed from all event structures. IEvent
interface has been replaced withIEventData
interface.IEntitySpawnEvent
interface has been replaced withISpawnEventData
interface.- Event structures are now wrapped in
ReplayEvent
orEntitySpawnReplayEvent
records. TheEntityId
property is now stored inEntitySpawnReplayEvent
. ReplayEventsData.AddEvent
andReplayEventsData.InsertEvent
now take anIEventData
instead of what was previously anIEvent
.ReplayEventsData.Events
is now of typeIReadOnlyList<ReplayEvent>
. This type is now used in various other places as well.
- Removed
ReplayEventsData.ChangeEntityType
method. This was a temporary method that is no longer needed. - Removed
ReplayEventsData.EntityTypes
property. You can now use theReplayEventsData.GetEntityType
method instead.
Replays can now be edited. This API is still a work in progress and currently has a couple problems which will be fixed later. See the remarks in the ReplayEventsData
class for more information.
- Added
ReplayEventsData.InsertEvent
andReplayEventsData.RemoveEvent
methods. - Added
ReplayEventsData.ChangeEntityType
method. This is a temporary method that will be removed in the future.
- Spawn events now have a public setter for
EntityId
. This should never be used and will be removed in the future. ReplayEventsData.AddEvent
now overwrites theEntityId
to be correct. This will change in the future in a way that doesn't let you pass anEntityId
to this method at all.
- Replay events are now reference types instead of value types. They were already being boxed, so this change should not affect performance. This fixes some issues where the values would be copied and couldn't be edited directly.
- Replay events are no longer immutable.
- Most replay event fields are now fields instead of properties. Values that are not supposed to be edited (in other words, are not written to the replay events buffer) are still properties.
- Removed
IInputsEvent
interface.
- Renamed
AssetContainer.GetIsProhibited
toAssetContainer.IsProhibited
.
- Fixed allocating memory when calling
AssetContainer.IsProhibited
.
- Added
ModBinaryToc.EnableAllAssets
andModBinaryToc.DisableProhibitedAssets
methods.
- Fixed not including
SixLabors.ImageSharp
dependency in the NuGet package.
- Initial public release. This library has already been in development for a long time, just without a version number. It is still not considered finished and breaking changes will happen until 1.0.0 releases.