In this release
- Fixed issue where UniTask's
PlayerLoopSystem
was not being injected correctly - Updated UniTask from v2.5.5 to v2.5.10
- See this link for the changelog
- Added ZString v2.4.4 (this is the latest version available for Unity 2019.4.39f1) as a near zero-allocation string builder alternative
- Added new extension methods for Unity MonoBehaviours/Components
- Added new structures:
Closure<TContext>
,ObjectPool<T>
, andIProcessor<TProcessor, TData>
Closure<TContext>
is a struct to allow you to manually control the closure lifetime for a lambda/anonymous method instead of allowing C# to usually create closures for you, which can lead to unnecessary allocations. Recommended to use withObjectPool<T>
ObjectPool<T>
is a class that allows you to recycle a list of objects instead of creating new objects, which would generate garbageIProcessor<TProcessor, TData>
is an interface for the chain of responsibility (COR) pattern, whereTProcessor
is the processor class, whileTData
is the data you want to pass into the processor
- Added a new
ModulePatchManager
class which can be used in your client mod plugin to automatically enable your mod patches- Usage:
var currentAssembly = Assembly.GetExecutingAssembly(); new ModulePatchManager(currentAssembly).EnableAllPatches();
- You can also store the instance to a field/property/variable and reuse it to manually enable or disable specific patches:
var currentAssembly = Assembly.GetExecutingAssembly(); var patchManager = new ModulePatchManager(currentAssembly).EnableAllPatches(); patchManager.DisablePatch<MyPatchClass>();
- There is also an attribute to disable your patches without needing to do it at runtime (only works if you use UnityToolkit's
ModulePatchManager
):[DisablePatch] public class MyPatchClass : ModulePatch
- Usage: