Releases: Emik03/wawa
GetUnmanaged singular binary fix
Version 4.7.2
This update fixes a bug in Wawa.IO.PathFinder.GetUnmanaged<T>
that broke when there only existed a single binary in a given library subfolder. wawa.IO
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.7.2 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- Fix
Wawa.IO.PathFinder.GetUnmanaged<T>
claiming there was an error when traversing through folders ends up in a directory that only contains a single binary that matches the file name, as well as removing unnecessary overhead involving the attempt of creation of directories that always exist, and the verification of files.
[Hotfix] GetUnmanaged editor support
Version 4.7.1
This update improves the usability experience of wawa.IO
in the editor. wawa.IO
and wawa.TwitchPlays
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.7.1 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- A huge limitation finally got lifted:
Wawa.IO.PathFinder.GetUnmanaged<T>
now fully works in the editor! The previous behavior was to always return no value. - Automatically return no value when this mod has been confirmed to have mod ids conflicting with another. The previous behavior was that the first mod would always be accepted, which could result in the second mod writing from the wrong folder, a potentially dangerous operation!
wawa.TwitchPlays
:
- Fix
Wawa.TwitchPlays.Domains.InstructionCore.Flatten
to no longer dispose the enumerator prematurely, which prevented classes likeUnityWebRequest
from working correctly. This means that the caller has responsibility to dispose of the enumerator themselves, although it was already necessitated, so this is not a breaking change.
Loosen internal assertions further
Version 4.7
This update removes exception-throwing for a number of APIs, attempting to use sane fallbacks. wawa.IO
, wawa.Modules
, and wawa.TwitchPlays
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.7 just to keep Unity's assembly conflict problems away.
MINOR
wawa.IO
:
- Add optional parameters to
Wawa.IO.PathFinder.AssemblyLog
, more as a byproduct of the way the library requires it. The behavior of this function as such has been changed, with the format explicitly marking the method caller's name and log level for every use of this function. The method no longer guards null, as you are allowed to pass a null message. - All methods in
Wawa.IO.PathFinder
no longer throw. Error or warning messages will be logged as they arrive, and the library makes an attempt to continue execution with a few workarounds and fallbacks.
wawa.Modules
- Add overloads for
Wawa.Modules.ModdedModule.Log
andWawa.Modules.ModdedModule.LogLower
for people who use C# 6's string interpolation feature. This worked prior to Version 4.7, but had unnecessary additional overhead. Wawa.Modules.ModdedModule.Play
and similar no longer throw if you didn't have exactly oneKMAudio
instance. Instead, the error is simply logged, and the method prematurely returns, since this method is strictly side-effect based. Similar assertions exist inWawa.Modules.ModdedModule.Awake
, which also no longer throws.
PATCH
wawa.IO
:
- Remove undocumented requirements that Wawa.IO.PathFinder.GetFile expected the developer to fulfill, which made it an inconsistent API to work with. It should now behave normally.
- Improve logging for
Wawa.IO.PathFinder.GetDirectory
andWawa.IO.PathFinder.GetUnmanaged<T>
. - Micro-optimize mod id collecting to be negligibly faster.
wawa.TwitchPlays
:
- Uses appropriate log levels for editor-only assertions.
- No longer throws when no commands are found, however an error log is still produced.
wawa.IO Editor fix
Version 4.6.2
This update fixes an editor-only bug that caused wawa.IO
to throw a TypeLoadException
. wawa.IO
, wawa.Modules
, and wawa.TwitchPlays
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.6.2 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- Fix bug relating to Wawa.IO.PathFinder which caused any function that accessed in-game values to throw when running in the Unity Editor. This did not affect any module in-game.
- Switch to an integer-based hashmap over strings where applicable, causing a negligible micro-optimization.
wawa.Modules
:
- Fix bug relating to Wawa.Modules.Stringifier.Stringify which would throw
[ArgumentException](https://learn.microsoft.com/en-us/dotnet/api/system.argumentexception?view=net-8.0): The type 'System.Void' may not be used as a type argument.
if any type during serialization contained a void pointer (void*
).
wawa.TwitchPlays
:
- Fix inherited members being ignored when reflecting values to grab fields for parsing or methods as commands.
Sequential GetAssets/GetUnmanaged fix
Version 4.6.1
This update fixes a bug to do with loading external assets and libraries. wawa.IO
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.6.1 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- Fix bug relating to Wawa.IO.PathFinder.GetAssets and Wawa.IO.PathFinder.GetUnmanaged relating to using the same function twice on the same assembly, but with different type parameters on both. This would cause an unexpected
InvalidCastException
.
Status Light manipulation
Version 4.6
This update adds new APIs for changing the status light or max strikes, faking strikes, and other opt-in checks. All binaries have been recompiled to take advantage of the new compiler optimizations.
MINOR
wawa.DDL
:
- Add
Wawa.DDL.KMBombStrikeExtensions.Detonate
for instant detonation. - Add
Wawa.DDL.KMBombStrikeExtensions.GetMaxStrikes
, andWawa.DDL.KMBombStrikeExtensions.SetMaxStrikes
for getting and setting the strike count until the bomb detonates. - Add optional parameter in
Wawa.DDL.KMBombStrikeExtensions.SetStrikes
to auto-detonate if the strike count exceeds the maximum.
wawa.Recall
- Add
Wawa.DDL.Entity.Change
and its corresponding argument typeWawa.DDL.StatusLights
to allow toggling different status lights. - Add
Wawa.DDL.Entity.FakeStrike
to make a module pretend it struck.
PATCH
wawa.Modules
and wawa.TwitchPlays
:
- Micro-optimize and reuse collections throughout the library when possible.
General:
- Use the new .NET 9 Preview SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.
Correctly serialize System.Reflection.Pointer
Version 4.5
This update addresses a problem with the logging serialization. wawa.Modules
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.5 just to keep Unity's assembly conflict problems away.
MINOR
wawa.Modules
:
- Add
Wawa.Modules.Stringifier.ToHexString
, allowing for a proper string representation ofSystem.Reflection.Pointer
. - Use aforementioned method for internal use to properly serialize instances of
System.Reflection.Pointer
withinStringifier.Stringify
and its overload. This changes the return value of the function when serializing said values.
Loosen internal assertion
Version 4.4.2
This update aims to fix a problem reported regarding this log file. wawa.IO
is the only assembly with any changes, public or internal. This library has been recompiled as version 4.4.2 just to keep Unity's assembly conflict problems away.
PATCH
wawa.IO
:
- Fix library throwing when a local and Steam Workshop build co-exist, but one is unloaded. The library will still however throw when two mods load with the same id.
- Optimize caching, less overhead for calling
PathFinder
methods extremely frequently with the same inputs. Granted, it is still recommended you store the instance yourself, but now the performance impact is far less aggregious.
1 year anniversary of wawa!
Version 4.4.1
It has been exactly 1 year since Version 1 was published! wawa.Editors
and wawa.Modules
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.4.1 just to keep Unity's assembly conflict problems away.
PATCH
wawa.Editors
:
- Fix highlight scale in Scaffolder feature incorrectly setting its value to
Vector3.zero
instead ofVector3.one
.
wawa.Modules
- Change behavior of
Wawa.Modules.State.IsSolved
to better reflect needies. - Change needy autosolver to consistently deactivate itself. This both applies for Twitch Plays and for the exception handler.
- Fix
Wawa.Modules.ModdedModule.Solve
not doing anything on calls past the first time.
Twitch Plays improvements
Version 4.4
Provides a set of new APIs for Twitch Plays command processing, as well as new diagnostics to prevent certain pitfalls. wawa.Editors
and wawa.TwitchPlays
are the only assemblies with any changes, public or internal. This library has been recompiled as version 4.4 just to keep Unity's assembly conflict problems away.
MINOR
wawa.Editors
:
- Add warning for when the Scaffolder feature is unable to add an asset to a component, which is usually an indication that the respective file that it is looking for is missing.
wawa.TwitchPlays
:
- Add warning for when an unsupported query is passed into the forced solve. This warning is editor-only, as in the future this warning may be deprecated if the Twitch Plays mod ever unionizes the functionality of the command processor and the forced solver.
- Change behavior of processing twitch commands:
yield return null
will no longer be intercepted if a the object returns true onWawa.TwitchPlays.Domains.TwitchString.IsSendMessage
. - New APIs:
Wawa.TwitchPlays.Domains.Instruction.UsableInForcedSolve
determines whether the query can be processed in a forced solve context. Used by the library to warn the consumer that the query passed in is not supported in forced solvers.Wawa.TwitchPlays.Twitch<TModule>.Equal
determines whether the two strings passed in are equal, without accounting for case. This is by far the most common operation when dealing with raw strings.Wawa.TwitchPlays.Domains.TwitchString.IsSendMessage
determines whether the query represents a message to be sent in Twitch Chat. Used by the library to determine whether the consumer intends on cancelling after the firstyield return
is confirmed to be such an instance.
- New optional parameters in existing methods, allowing you to toggle both formatting and halting:
PATCH
wawa.TwitchPlays
:
- Remove unnecessary internal
yield return null
in situations where such a value does nothing. This allows your command to be processed one (1) frame faster!
General:
- Add additional JetBrains annotations for better analysis with ReSharper.
- Micro-optimize, such as removing unnecessary calls to
GetEnumerator
where applicable. - Use the new .NET 8 Stable SDK which grants improvements in compiler optimizations. All versions from here on out will be using the new SDK when compiling.