mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-09 23:25:43 +00:00
Oliver Booth
0bf89bb82a
The methods no longer throw TypeInitializationException, and instead now throw ArgumentException.
30 KiB
30 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
4.0.0 - Unreleased
Added
- X10D: Added extension methods for
DateOnly
, for parity withDateTime
andDateTimeOffset
. - X10D: Added math-related extension methods for
BigInteger
. - X10D: Added
Span<T>.Replace(T, T)
. - X10D: Added
CountDigits
for integer types. - X10D: Added
IEnumerable<T>.Except(T)
. - X10D: Added
Progress<T>.OnProgressChanged([T])
. - X10D: Added
TextWriter.WriteNoAlloc(int[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteNoAlloc(uint[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteNoAlloc(long[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteNoAlloc(ulong[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteLineNoAlloc(int[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteLineNoAlloc(uint[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteLineNoAlloc(long[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
TextWriter.WriteLineNoAlloc(ulong[, ReadOnlySpan<char>[, IFormatProvider]])
. - X10D: Added
string.ConcatIf
. - X10D.Unity: Added
RaycastHit.GetComponent
andRaycastHit.TryGetComponent
. - X10D.Unity: Added
DebugUtility.DrawFunction
, andDebugUtility.DrawUnjoinedPolyhedron
on which it relies.
Fixed
- X10D: Fixed XMLDoc for
Line3D
to read "single-precision floating-point" instead of "32-bit signed integer".
Changed
- X10D: DateTime.Age(DateTime) and DateTimeOffset.Age(DateTimeOffset) parameter renamed from asOf to referenceDate.
- X10D: Methods which accepted the
Endianness
enum as an argument have been replaced with explicit BigEndian/LittleEndian methods. - X10D:
Stream.GetHash<>
andStream.TryWriteHash<>
now throw ArgumentException in lieu of TypeInitializationException.
Removed
- X10D: Removed
IEnumerable<T>.ConcatOne
- this functionality already exists withAppend
. - X10D: Removed
Endianness
enum. - X10D.DSharpPlus: Complete sunset of library. This library will not be updated to support DSharpPlus v5.0.0.
3.3.1 - 2023-08-21
Fixed
- X10D.Hosting: Fixed
AddHostedSingleton
not accepting an interface as the service type.
3.3.0 - 2023-08-21
Added
- X10D.Hosting: Added support for service/implementation registration with
AddHostedSingleton
.
3.2.2 - 2023-06-05
Added
- X10D.DSharpPlus: Added support for new usernames. See https://discord.com/blog/usernames
3.2.1 - 2023-06-05
ERRONEOUS RELEASE.
3.2.0 - 2023-04-03
Added
- Added new library X10D.DSharpPlus.
- Added new library X10D.Hosting.
- Added .NET 7 target.
- X10D: Added
IntrinsicExtensions
andIntrinsicUtility
which offer methods for vectors inSystem.Runtime.Instrinsics
. (#70) - X10D: Added
MathUtility.Bias(float, float)
andMathUtility.Bias(double, double)
. - X10D: Added
MathUtility.ExponentialDecay(float, float, float)
andMathUtility.ExponentialDecay(double, double, double)
. - X10D: Added
MathUtility.InverseLerp(float, float, float)
andMathUtility.InverseLerp(double, double, double)
. - X10D: Added
MathUtility.Pulse(float, float, float)
andMathUtility.Pulse(double, double, double)
. - X10D: Added
MathUtility.Sawtooth(float)
andMathUtility.Sawtooth(double)
. - X10D: Added
MathUtility.ScaleRange(float, float, float, float, float)
andMathUtility.ScaleRange(double, double, double, double, double)
- X10D: Added
MathUtility.Sigmoid(float)
andMathUtility.Sigmoid(double)
. - X10D: Added
MathUtility.SmoothStep(float, float, float)
andMathUtility.SmoothStep(double, double, double)
. - X10D: Added
Circle
,CircleF
,Cuboid
,Ellipse
,EllipseF
,Line3D
,Line
,LineF
,Polygon
,PolygonF
,Polyhedron
, andSphere
, to complement System.Drawing structs such asPoint
andRectangle
. - X10D: Added
Color.Deconstruct()
- with optional alpha parameter. - X10D: Added
Color.GetClosestConsoleColor()
. - X10D: Added
DateTime.GetIso8601WeekOfYear()
andDateTimeOffset.GetIso8601WeekOfYear()
. - X10D: Added
DirectoryInfo.Clear()
. - X10D: Added
double.LinearToGamma([gamma])
andfloat.LinearToGamma([gamma])
. (#60) - X10D: Added
double.GammaToLinear([gamma])
andfloat.GammaToLinear([gamma])
. (#60) - X10D: Added
GreatestCommonFactor
for built-in integer types. - X10D: Added
IEnumerable<T>.ConcatOne(T)
. - X10D: Added
IEnumerable<T>.CountWhereNot(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.FirstWhereNot(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.FirstWhereNotOrDefault(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.LastWhereNot(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.LastWhereNotOrDefault(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.MinMax()
andIEnumerable<T>.MinMaxBy()
. (#72) - X10D: Added
IEnumerable<T>.WhereNot(Func<T, bool>)
. - X10D: Added
IEnumerable<T>.WhereNotNull()
. - X10D: Added
IEnumerable<string>.Grep(string[, bool])
. - X10D: Added
IList<T>.RemoveRange(Range)
. - X10D: Added
IList<T>.Swap(IList<T>)
. (#62) - X10D: Added
IReadOnlyList<T>.IndexOf(T[, int[, int]])
. - X10D: Added
IReadOnlyList<T>.Slice(int[, int]])
. - X10D: Added
LowestCommonMultiple
for built-in integer types. - X10D: Added
Wrap(T[, T])
for built-in numeric types. (#60) - X10D: Added
Nullable<T>.TryGetValue(out T)
. (#61) - X10D: Added
Point.IsOnLine(LineF)
,Point.IsOnLine(PointF, PointF)
, andPoint.IsOnLine(Vector2, Vector2)
. - X10D: Added
PointF.IsOnLine(LineF)
,PointF.IsOnLine(PointF, PointF)
, andPointF.IsOnLine(Vector2, Vector2)
. - X10D: Added
Point.ToSize()
. - X10D: Added
Point.ToSizeF()
. - X10D: Added
Point.ToVector2()
. - X10D: Added
PointF.Round([float])
. - X10D: Added
PointF.ToSizeF()
. - X10D: Added
PointF.ToVector2()
for .NET < 6. - X10D: Added
PopCount()
for built-in integer types. - X10D: Added
Quaternion.ToAxisAngle(out float, out float)
. - X10D: Added
Quaternion.ToVector3()
. - X10D: Added
Random.NextFrom(Span<T>)
andRandom.NextFrom(ReadOnlySpan<T>)
. - X10D: Added
ReadOnlySpan<char>.CountSubstring(char)
. - X10D: Added
ReadOnlySpan<char>.CountSubstring(ReadOnlySpan<char>[, StringComparison])
. - X10D: Added
ReadOnlySpan<char>.ToTimeSpan()
. - X10D: Added
ReadOnlySpan<T>.Split(T)
. - X10D: Added
ReadOnlySpan<T>.Split(ReadOnlySpan<T>)
. - X10D: Added
RoundUpToPowerOf2()
for built-in integer types. - X10D: Added
Saturate()
for built-in floating-point types. - X10D: Added
Size.ToPoint()
. - X10D: Added
Size.ToPointF()
. - X10D: Added
Size.ToVector2()
. - X10D: Added
Span<char>.CountSubstring(char)
. - X10D: Added
Span<char>.CountSubstring(Span<char>[, StringComparison])
. - X10D: Added
Span<T>.Split(T)
. - X10D: Added
Span<T>.Split(Span<T>)
. - X10D: Added
string.CountSubstring(char)
. - X10D: Added
string.CountSubstring(string[, StringComparison])
. - X10D: Added
string.EnsureStartsWith()
andstring.EnsureEndsWith()
. - X10D: Added
string.IsEmpty()
. - X10D: Added
string.IsWhiteSpace()
. - X10D: Added
string.IsNullOrEmpty()
. - X10D: Added
string.IsNullOrWhiteSpace()
. - X10D: Added
TextReader.EnumerateLines()
andTextReader.EnumerateLinesAsync()
. - X10D: Added
TimeSpan.TryParse(ReadOnlySpan<char>, out TimeSpan)
. - X10D: Added
Quaternion.Multiply(Vector3)
- this functions as an equivalent to Unity'sQuaternion * Vector3
operator. - X10D: Added
Vector2.Deconstruct()
. - X10D: Added
Vector2.IsOnLine(LineF)
,Vector2.IsOnLine(PointF, PointF)
, andVector2.IsOnLine(Vector2, Vector2)
. - X10D: Added
Vector2.Round([float])
. - X10D: Added
Vector2.ToPointF()
. - X10D: Added
Vector2.ToSizeF()
. - X10D: Added
Vector3.Deconstruct()
. - X10D: Added
Vector3.Round([float])
. - X10D: Added
Vector4.Deconstruct()
. - X10D: Added
Vector4.Round([float])
. - X10D:
ComplexSqrt
is now exposed for all frameworks. - X10D.Unity: Added
DebugUtility
, which mimicsUnityEngine.Debug
while offering more useful primitive drawing methods. - X10D.Unity: Added
System.Drawing.Color.ToUnityColor()
. - X10D.Unity: Added
System.Drawing.Color.ToUnityColor32()
. - X10D.Unity: Added
Color.Deconstruct()
- with optional alpha parameter. - X10D.Unity: Added
Color.GetClosestConsoleColor()
. - X10D.Unity: Added
Color.ToSystemDrawingColor()
. - X10D.Unity: Added
Color32.Deconstruct()
- with optional alpha parameter. - X10D.Unity: Added
Color32.GetClosestConsoleColor()
. - X10D.Unity: Added
Color32.ToSystemDrawingColor()
. - X10D.Unity: Added
Point.ToUnityVector2()
. - X10D.Unity: Added
Point.ToUnityVector2Int()
. - X10D.Unity: Added
PointF.ToUnityVector2()
. - X10D.Unity: Added
Rect.ToSystemRectangleF()
. - X10D.Unity: Added
RectInt.ToSystemRectangle()
. - X10D.Unity: Added
RectInt.ToSystemRectangleF()
. - X10D.Unity: Added
Rectangle.ToUnityRect()
. - X10D.Unity: Added
Rectangle.ToUnityRectInt()
. - X10D.Unity: Added
RectangleF.ToUnityRect()
. - X10D.Unity: Added
Size.ToUnityVector2()
. - X10D.Unity: Added
Size.ToUnityVector2Int()
. - X10D.Unity: Added
SizeF.ToUnityVector2()
. - X10D.Unity: Added
Vector2.Deconstruct()
. - X10D.Unity: Added
Vector2.IsOnLine(LineF)
,Vector2.IsOnLine(PointF, PointF)
, andVector2.IsOnLine(Vector2, Vector2)
. - X10D.Unity: Added
Vector2Int.IsOnLine(LineF)
,Vector2Int.IsOnLine(PointF, PointF)
,Vector2Int.IsOnLine(Vector2, Vector2)
, andVector2Int.IsOnLine(Vector2Int, Vector2Int)
. - X10D.Unity: Added
Vector2.Round([float])
. - X10D.Unity: Added
Vector2.ToSystemPointF()
. - X10D.Unity: Added
Vector2.ToSystemSizeF()
. - X10D.Unity: Added
Vector2Int.Deconstruct()
. - X10D.Unity: Added
Vector2Int.ToSystemPoint()
. - X10D.Unity: Added
Vector2Int.ToSystemSize()
. - X10D.Unity: Added
Vector2Int.ToSystemVector()
. - X10D.Unity: Added
Vector2Int.WithX()
. - X10D.Unity: Added
Vector2Int.WithY()
. - X10D.Unity: Added
Vector3.Deconstruct()
. - X10D.Unity: Added
Vector3.Round([float])
. - X10D.Unity: Added
Vector3Int.Deconstruct()
. - X10D.Unity: Added
Vector3Int.ToSystemVector()
. - X10D.Unity: Added
Vector3Int.WithX()
. - X10D.Unity: Added
Vector3Int.WithY()
. - X10D.Unity: Added
Vector3Int.WithZ()
. - X10D.Unity: Added
Vector4.Deconstruct()
. - X10D.Unity: Added
Vector4.Round([float])
- X10D.Unity: Added
WaitForFrames
yield instruction. - X10D.Unity: Added
WaitForKeyDown
yield instruction. - X10D.Unity: Added
WaitForKeyUp
yield instruction. - X10D.Unity: Added
WaitForSecondsNoAlloc
yield instruction. - X10D.Unity: Added
WaitForSecondsRealtimeNoAlloc
yield instruction. - X10D.Unity: Added
WaitForTimeSpanNoAlloc
yield instruction. - X10D.Unity: Added
WaitForTimeSpanRealtimeNoAlloc
yield instruction.
Fixed
- X10D:
T[].Clear
will now correctly clear the specified range of elements by using the GetOffsetAndLength method. - X10D:
Stream.ReadSingle(Endianness)
now returns a float instead of a double. - X10D: Fixed
Stream.ReadDouble(Endianness)
,Stream.ReadSingle(Endianness)
,Stream.WriteDouble(double, Endianness)
,Stream.WriteSingle(float, Endianness)
writing and reading the wrong endianness.
Changed
- X10D: Performance for integer
Unpack
has been dramatically improved using vector parallelization. (#70) - X10D: Performance for
MemberInfo.HasCustomAttribute
has been improved. (#70) - X10D: Performance for
Rune.Repeat
has been improved. (#70) - X10D:
TimeSpanParser.TryParse
now accepts a nullable string, and returns false if this input is null or empty. - X10D.Unity:
Singleton<T>
now caches instance where possible. - X10D.Unity: Conversions between equivalent structures in
System.Numerics
andUnityEngine
now make use of "unsafe" reinterpretation, rather than constructing new instances. (#70)
3.1.0 - 2022-05-13
Added
- Reintroduced Unity support
- X10D: Added
Color.Inverted()
. (#54) - X10D: Added
Color.WithA()
. (#55) - X10D: Added
Color.WithB()
. (#55) - X10D: Added
Color.WithG()
. (#55) - X10D: Added
Color.WithR()
. (#55) - X10D: Added
ICollection<T>.ClearAndDisposeAll()
. - X10D: Added
ICollection<T>.ClearAndDisposeAllAsync()
. - X10D: Added
IEnumerable<T>.For()
. (#50) - X10D: Added
IEnumerable<T>.ForEach()
. (#50) - X10D: Added
IEnumerable<T>.DisposeAll()
. - X10D: Added
IEnumerable<T>.DisposeAllAsync()
. - X10D: Added
char.IsEmoji
. - X10D: Added
ReadOnlySpan<T>.Count(Predicate<T>)
. - X10D: Added
Rune.IsEmoji
. - X10D: Added
Span<T>.Count(Predicate<T>)
. - X10D: Added
string.IsEmoji
. - X10D: Added
Vector2.WithX()
. (#56) - X10D: Added
Vector2.WithY()
. (#56) - X10D: Added
Vector3.WithX()
. (#56) - X10D: Added
Vector3.WithY()
. (#56) - X10D: Added
Vector3.WithZ()
. (#56) - X10D: Added
Vector4.WithX()
. (#56) - X10D: Added
Vector4.WithY()
. (#56) - X10D: Added
Vector4.WithZ()
. (#56) - X10D: Added
Vector4.WithW()
. (#56) - X10D.Unity: Added
Singleton<T>
class. - X10D.Unity: Added
Color.Inverted()
. (#54) - X10D.Unity: Added
Color.WithA()
. (#55) - X10D.Unity: Added
Color.WithB()
. (#55) - X10D.Unity: Added
Color.WithG()
. (#55) - X10D.Unity: Added
Color.WithR()
. (#55) - X10D.Unity: Added
Color32.Inverted()
. (#54) - X10D.Unity: Added
Color32.WithA()
. (#55) - X10D.Unity: Added
Color32.WithB()
. (#55) - X10D.Unity: Added
Color32.WithG()
. (#55) - X10D.Unity: Added
Color32.WithR()
. (#55) - X10D.Unity: Added
Component.GetComponentsInChildrenOnly<T>()
. - X10D.Unity: Added
GameObject.GetComponentsInChildrenOnly<T>()
. - X10D.Unity: Added
GameObject.LookAt(GameObject[, Vector3])
. - X10D.Unity: Added
GameObject.LookAt(Transform[, Vector3])
. - X10D.Unity: Added
GameObject.LookAt(Vector3[, Vector3])
. - X10D.Unity: Added
GameObject.SetLayerRecursively(int)
. (#57) - X10D.Unity: Added
GameObject.SetParent(GameObject[, bool])
. - X10D.Unity: Added
GameObject.SetParent(Transform[, bool])
. - X10D.Unity: Added
System.Numerics.Quaternion.ToUnityQuaternion()
. - X10D.Unity: Added
Quaternion.ToSystemQuaternion()
. - X10D.Unity: Added
Random.NextColorArgb()
. - X10D.Unity: Added
Random.NextColor32Argb()
. - X10D.Unity: Added
Random.NextColorRgb()
. - X10D.Unity: Added
Random.NextColor32Rgb()
. - X10D.Unity: Added
Random.NextRotation()
. - X10D.Unity: Added
Random.NextRotationUniform()
. - X10D.Unity: Added
Random.NextUnitVector2()
. - X10D.Unity: Added
Random.NextUnitVector3()
. - X10D.Unity: Added
Transform.LookAt(GameObject[, Vector3])
. - X10D.Unity: Added
Transform.SetParent(GameObject[, bool])
. - X10D.Unity: Added
System.Numerics.Vector2.ToUnityVector()
. - X10D.Unity: Added
System.Numerics.Vector3.ToUnityVector()
. - X10D.Unity: Added
System.Numerics.Vector4.ToUnityVector()
. - X10D.Unity: Added
Vector2.ToSystemVector()
. - X10D.Unity: Added
Vector3.ToSystemVector()
. - X10D.Unity: Added
Vector4.ToSystemVector()
. - X10D.Unity: Added
Vector2.WithX()
. (#56) - X10D.Unity: Added
Vector2.WithY()
. (#56) - X10D.Unity: Added
Vector3.WithX()
. (#56) - X10D.Unity: Added
Vector3.WithY()
. (#56) - X10D.Unity: Added
Vector3.WithZ()
. (#56) - X10D.Unity: Added
Vector4.WithX()
. (#56) - X10D.Unity: Added
Vector4.WithY()
. (#56) - X10D.Unity: Added
Vector4.WithZ()
. (#56) - X10D.Unity: Added
Vector4.WithW()
. (#56)
3.0.0 - 2022-04-30
In the midst of writing these release notes, I may have missed some important changes. If you notice an API change that is not documented here, please open an issue!
Added
- Added
T.AsArrayValue()
. - Added
T.AsEnumerableValue()
. - Added
T.RepeatValue(int)
. - Added
T.ToJson([JsonSerializerOptions])
. - Added
string.FromJson([JsonSerializerOptions])
. - Added
T[].AsReadOnly()
. - Added
T[].Clear([Range])
andT[].Clear(int, int)
. - Added
DateTime.IsLeapYear()
. - Added
DateTimeOffset.IsLeapYear()
. - Added
Endianness
enum. - Added
FileInfo.GetHash<T>()
. - Added
FileInfo.TryWriteHash<T>(Span<byte>, out int)
. - Added
IComparable<T>.Clamp(T, T)
- this supersedesClamp
defined for hard-coded numeric types. (#24) - Added
IComparable<T1>.GreaterThan(T2)
. (#22) - Added
IComparable<T1>.GreaterThanOrEqualTo(T2)
. (#22) - Added
IComparable<T1>.LessThan(T2)
. (#22) - Added
IComparable<T1>.LessThanOrEqualTo(T2)
. (#22) - Added
IComparable<T1>.Max(T)
. (#23) - Added
IComparable<T1>.Min(T)
. (#23) - Added
IDictionary<TKey, TValue>.AddOrUpdate()
- Added
IEnumerable<TSource>.Product()
andIEnumerable<TSource>.Product<TResult>(Func<TSource>, TResult)
for all built-in numeric types, computing the product of all (optionally transformed) elements. - Added
IList<T>.Fill(T)
andIList<T>.Fill(T, int, int)
. - Added
IPAddress.IsIPv4()
andIPAddress.IsIPv6()
. - Added
IReadOnlyList<byte>.Pack8Bit()
. - Added
IReadOnlyList<byte>.Pack16Bit()
. - Added
IReadOnlyList<byte>.Pack32Bit()
. - Added
IReadOnlyList<byte>.Pack64Bit()
. - Added
MemberInfo.HasCustomAttribute<T>()
andMemberInfo.HasCustomAttribute(Type)
. - Added
defaultValue
overload forMemberInfo.SelectFromCustomAttribute<TAttr, TReturn>()
. - Added
Random.Next<T>()
(returns a random field from a specified enum type). - Added
Random.NextByte([byte[, byte]])
. - Added
Random.NextColorArgb()
, returning a random color in RGB space, including random alpha. - Added
Random.NextColorRgb()
, returning a random color in RGB space with alpha 255. - Added
Random.NextDouble(double[, double])
. - Added
Random.NextInt16([short[, short]])
. - Added
Random.NextSingle(float[, float])
. (#34) - Added
Random.NextUnitVector2()
. - Added
Random.NextUnitVector3()
. - Added
Random.NextRotation()
. - Added
Rune.Repeat(int)
. - Added
byte.IsEven()
. - Added
byte.IsOdd()
. - Added
byte.IsPrime()
. - Added
byte.UnpackBits()
. - Added
byte.RangeTo(byte)
,byte.RangeTo(short)
,byte.RangeTo(int)
, andbyte.RangeTo(long)
. - Added
int.Mod(int)
. - Added
int.RangeTo(int)
, andint.RangeTo(long)
. - Added
int.UnpackBits()
. - Added
long.Mod(long)
. - Added
long.RangeTo(long)
. - Added
long.UnpackBits()
. - Added
sbyte.IsEven()
. - Added
sbyte.IsOdd()
. - Added
sbyte.IsPrime()
. - Added
sbyte.Mod(sbyte)
. - Added
short.IsEven()
. - Added
short.IsOdd()
. - Added
short.Mod(short)
. - Added
short.RangeTo(short)
,short.RangeTo(int)
, andshort.RangeTo(long)
. - Added
short.UnpackBits()
. - Added
string.IsPalindrome()
. - Added
Stream.GetHash<T>()
. - Added
Stream.TryWriteHash<T>(Span<byte>, out int)
. - Added
Stream.ReadInt16([Endian])
. - Added
Stream.ReadInt32([Endian])
. - Added
Stream.ReadInt64([Endian])
. - Added
Stream.ReadUInt16([Endian])
. - Added
Stream.ReadUInt32([Endian])
. - Added
Stream.ReadUInt64([Endian])
. - Added
Stream.Write(short, [Endian])
. - Added
Stream.Write(int, [Endian])
. - Added
Stream.Write(long, [Endian])
. - Added
Stream.Write(ushort, [Endian])
. - Added
Stream.Write(uint, [Endian])
. - Added
Stream.Write(ulong, [Endian])
. - Added
TimeSpan.Ago()
. - Added
TimeSpan.FromNow()
. - Added
TimeSpanParser.TryParse
which supersedesTimeSpanParser.Parse
. - Added
Sqrt()
andComplexSqrt()
for all built-in decimal types. - Added
All()
andAny()
forSpan<T>
andReadOnlySpan<T>
, mimicking the corresponding methods inSystem.Linq
. - Added
Sign()
for built-in numeric types. For unsigned types, this never returns -1. - Added
Type.Implements<T>()
andType.Implements(Type)
. (#25) - Added
Type.Inherits<T>()
andType.Inherits(Type)
. (#25) - Added
DigitalRoot
function for built-in integer types. - Added
Factorial
function for built-in integer types. - Added
HostToNetworkOrder
andNetworkToHostOrder
forshort
,int
, andlong
. - Added
IsLeapYear
function forDateTime
andDateTimeOffset
, as well as built-in numeric types. - Added
MultiplicativePersistence
function for built-in integer types. - Added
RotateLeft
andRotateRight
for built-in integer types. - Added trigonometric functions for built-in numeric types,
including
Acos()
,Asin()
,Atan()
,Atan2()
,Cos()
,Sin()
,Tan()
(#49) - Added time-related extension methods for built-in numeric types,
including
Milliseconds()
,Seconds()
,Minutes()
,Hours()
,Days()
, andWeeks()
.Ticks()
is also available, but only for integers; not floating point. - Added
StringBuilderReader
(inheritingTextReader
) which allows reading from aStringBuilder
without consuming the underlying string. - Added extension methods for
System.Decimal
.
Changed
- Updated to .NET 6. (#45)
- Methods defined to accept
byte[]
have been changed acceptIReadOnlyList<byte>
. - Extension methods are now defined in appropriate child namespaces to reduce the risk of name collisions. (#7)
char[].Random(int)
,char[].Random(int, int)
,IEnumerable<char>.Random(int)
, andIEnumerable<char>.Random(int, int)
have been redefined asRandom.NextString(IReadOnlyList<char>, int)
.IComparable<T>.Between(T, T)
has been redefined asIComparable<T1>.Between(T2, T3, [InclusiveOptions])
to allow comparison of disparate yet comparable types, and also offers inclusivity options.DateTime
extensions now wrapDateTimeOffset
extensions.DateTime.ToUnixTimestamp([bool])
has been redefined asDateTime.ToUnixTimeMilliseconds()
andDateTime.ToUnixTimeSeconds()
.Dictionary<T1, T2>.ToGetParameters()
,IDictionary<T1, T2>.ToGetParameters()
, andIReadOnlyDictionary<T1, T2>.ToGetParameters()
, has been redefined asIEnumerable<KeyValuePair<T1, T2>>.ToGetParameters()
.Dictionary<T1, T2>.ToConnectionString()
,IDictionary<T1, T2>.ToConnectionString()
, andIReadOnlyDictionary<T1, T2>.ToConnectionString()
, has been redefined asIEnumerable<KeyValuePair<T1, T2>>.ToConnectionString()
.IList<T>.OneOf([Random])
andIEnumerable<T>.OneOf([Random])
have been redefined asRandom.NextFrom<T>(IEnumerable<T>)
to fall in line with the naming convention ofSystem.Random
. (#21)IList<T>.Shuffle([Random])
now uses a Fisher-Yates shuffle implementation.IList<T>.Shuffle([Random])
has been repurposed to shuffle the list in place, rather than returning a new enumerable.IEnumerable<T>.Shuffle([Random])
has been renamed toIEnumerable<T>.Shuffled([Random])
to avoid confusion withIList<T>.Shuffle([Random])
.
Random.CoinToss()
has been redefined asRandom.NextBoolean()
to fall in line with the naming convention ofSystem.Random
.Random.OneOf<T>(T[])
andRandom.OneOf<T>(IList<T>)
have been redefined asRandom.NextFrom<T>(IEnumerable<T>)
to fall in line with the naming convention ofSystem.Random
.Enum.Next([bool])
andEnum.Previous([bool])
have been redefined. asEnum.Next()
,Enum.Previous()
,Enum.NextUnchecked()
,Enum.PreviousUnchecked()
. TheUnchecked
variants of these methods do not perform index validation, and will throwIndexOutOfRangeException
when attempting to access an invalid index. The checked variants will perform a modulo to wrap the index.- Seperated
string.WithAlternative(string, [bool])
tostring.WithEmptyAlternative(string)
andstring.WithWhiteSpaceAlternative(string)
. string.AsNullIfEmpty()
andstring.AsNullIfWhiteSpace()
now accept a nullablestring
.IEnumerable<byte>.GetString([Encoding])
has been renamed toIReadOnlyList<byte>.ToString
and itsEncoding
parameter has been made non-optional.- Fixed a bug where
IEnumerable<KeyValuePair<K,V>>.ToConnectionString()
would not sanitize types with customToString()
implementation. (#20) Renamedstring.Random(int[, Random])
tostring.Randomize(int[, Random])
. - Redefined
char[].Random(int)
,char[].Random(int, Random)
,IEnumerable<char>.Random(int)
, andIEnumerable<char>.Random(int, Random)
, asRandom.NextString(IReadOnlyList<char>, int)
. - Improved performance for:
string.IsLower()
string.IsUpper()
string.Reverse()
TimeSpanParser
Removed
- Indefinitely suspended Unity support, until such a time that Unity can be updated to a newer version of .NET. See: https://forum.unity.com/threads/unity-future-net-development-status.1092205/
- Removed
bool.And(bool)
. - Removed
bool.NAnd(bool)
. - Removed
bool.NOr(bool)
. - Removed
bool.Not(bool)
. - Removed
bool.Or(bool)
. - Removed
bool.ToByte()
. - Removed
bool.ToInt16()
. - Removed
bool.ToInt64()
. - Removed
bool.XNOr()
. - Removed
bool.XOr()
. - Removed
IConvertible.To<T>([IFormatProvider])
. (#13) - Removed
IConvertible.ToOrDefault<T>([IFormatProvider])
. (#13) - Removed
IConvertible.ToOrDefault<T>(out T, [IFormatProvider])
. (#13) - Removed
IConvertible.ToOrNull<T>([IFormatProvider])
. (#13) - Removed
IConvertible.ToOrNull<T>(out T, [IFormatProvider])
. (#13) - Removed
IConvertible.ToOrOther<T>(T, [IFormatProvider])
. (#13) - Removed
IConvertible.ToOrOther<T>(out T, T, [IFormatProvider])
. (#13) - Removed
IEnumerable<T>.Split(int)
- this functionality is now provided by .NET in the form of theChunk
method. See: https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk?view=net-6.0. - Removed
MemberInfo.GetDefaultValue()
(useSelectFromCustomAttribute()
instead). - Removed
MemberInfo.GetDescription()
(useSelectFromCustomAttribute()
instead). - Removed
int.ToBoolean()
. - Removed
long.ToBoolean()
. - Removed
short.ToBoolean()
. - Removed
uint.ToBoolean()
. - Removed
ushort.ToBoolean()
. - Removed
ulong.ToBoolean()
. - Removed
WaitHandle.WaitOneAsync()
. For suspensions of execution during asynchronous operations, favourTaskCompletionSource
orTaskCompletionSource<T>
. See: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskcompletionsource?view=net-6.0 and https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskcompletionsource-1?view=net-6.0
2.6.0 - 2020-10-20
Added
- Add
string.AsNullIfEmpty()
.- Returns the current string, or
null
if the current string is null or empty.
- Returns the current string, or
- Add
string.AsNullIfWhiteSpace()
.- Returns the current string, or
null
if the current string is null, empty, or consists of only whitespace.
- Returns the current string, or
- Add
string.Reverse()
.- Reverses the current string.
- Add
string.WithAlternative()
.- Returns the current string, or an alternative value if the current string is null or empty, or optionally if the current string consists of only whitespace.
Changed
- n/a
Removed
- n/a
2.5.0 - 2020-07-15
Added
WaitHandle.WaitOneAsync()
.- Wraps
WaitHandle.WaitOne
as aTask
.
- Wraps
- Add support for Unity 2019.4.3f1.
- Add
GameObject.LookAt(GameObject)
.- Rotates the Transform on the current GameObject so that it faces the Transform on another GameObject.
- Add
GameObject.LookAt(Transform)
.- Rotates the Transform on the current GameObject so that it faces another transform.
- Add
Transform.LookAt(GameObject)
- Rotates the current Transform so that it faces the Transform on another GameObject.
- Add
Vector3.Round([float])
.- Returns a rounded Vector3 by calling
float.Round()
on each component.
- Returns a rounded Vector3 by calling
- Add
Vector3.WithX(float)
.- Returns a Vector3 with a new X component value.
- Add
Vector3.WithY(float)
.- Returns a Vector3 with a new Y component value.
- Add
Vector3.WithZ(float)
.- Returns a Vector3 with a new Z component value.
- Add
Vector3.WithXY(float, float)
.- Returns a Vector3 with new X and Y component values.
- Add
Vector3.WithXZ(float, float)
.- Returns a Vector3 with new X and Z component values.
- Add
Vector3.WithYZ(float, float)
.- Returns a Vector3 with new Y and Z component values.
- Add
BetterBehavior
(experimental wrapper overMonoBehaviour
).
- Add
Changed
- n/a
Removed
- n/a
2.2.0 - 2020-04-21
Added
-
Add
string.ChangeEncoding(Encoding, Encoding)
.- Converts this string from one encoding to another.
-
Add
string.IsLower()
.- Determines if all alpha characters in this string are considered lowercase.
-
Add
string.IsUpper()
.- Determines if all alpha characters in this string are considered uppercase.
-
Various extension methods with regards to reflection:
GetDefaultValue
andGetDefaultValue<T>
- gets the value stored in the member'sDefaultValue
attribute.GetDescription
- gets the value stored in the member'sDescription
attribute.SelectFromCustomAttribute<T1, T2>
- Internally callsGetCustomAttribute<T1>
and passes it to aFunc<T1, T2>
so that specific members may be selected.
Changed
- n/a
Removed
- n/a
2.1.0 - 2020-04-18
Added
- Add
bool bool.And(bool)
.- Performs logical AND.
- Add
bool bool.Or(bool)
.- Performs logical OR.
- Add
bool bool.Not(bool)
.- Performs logical NOT.
- Add
bool bool.XOr(bool)
.- Performs Logical XOR.
- Add
bool bool.NAnd(bool)
.- Performs logical NAND.
- Add
bool bool.NOr(bool)
.- Performs logical NOR.
- Add
bool bool.XNOr(bool)
.- Performs logical XNOR.
- Add
byte bool.ToByte()
.- 1 if
true
, 0 otherwise.
- 1 if
- Add
short bool.ToInt16()
.- 1 if
true
, 0 otherwise.
- 1 if
- Add
long bool.ToInt64()
.- 1 if
true
, 0 otherwise.
- 1 if
Changed
- n/a
Removed
- n/a
2.0.0 - 2020-04-18
Added
- Add
IEnumerable<T>.Split(int)
.- Performs the same operation as the previously defined
IEnumerable<byte>.Chunkify(int)
, except now accepts any typeT
.
- Performs the same operation as the previously defined
Changed
- Fix
DateTime.Last(DayOfWeek)
implementation.- Now returns the correct date/time for a given day of the week.
Removed
- Remove
IEnumerable<byte>.Chunkify(int)
.- Replaced by a method of the same behaviour
IEnumerable<T>.Split(int)
.
- Replaced by a method of the same behaviour
Earlier versions
Earlier versions of this package are undocumented and unlisted from package results.