[]
Utility class.
public static class DXUtil
The multiplier for conversion from radians to degrees.
public const float ToDegrees = 57.29578
The multiplier for conversion from degrees to radians.
public const float ToRadians = 0.017453292
The value for which all absolute numbers smaller than are considered equal to zero.
public const float ZeroTolerance = 1E-06
Allocate an aligned memory buffer and clear it with a specified value (0 by default).
public static IntPtr AllocateClearedMemory(int sizeInBytes, byte clearValue = 0, int align = 16)
sizeInBytes
intSize of the buffer to allocate.
clearValue
byteDefault value used to clear the buffer.
align
intAlignment, 16 bytes by default.
A pointer to a buffer aligned.
To free this buffer, call FreeMemory(IntPtr).
Allocate an aligned memory buffer.
public static IntPtr AllocateMemory(int sizeInBytes, int align = 16)
A pointer to a buffer aligned.
To free this buffer, call FreeMemory(IntPtr).
Test if there is an element in this enumeration.
public static bool Any<T>(IEnumerable<T> source)
source
IEnumerable<T>The enumerable source.
true
if there is an element in this enumeration, false
otherwise
T
Type of the element
Creates an Array of count elements with the given value.
public static T[] Array<T>(T value, int count)
value
Tcount
intT
Builds a fast property getter from a type and a property info.
public static GetValueFastDelegate<T> BuildPropertyGetter<T>(Type customEffectType, PropertyInfo propertyInfo)
customEffectType
TypeType of the custom effect.
propertyInfo
PropertyInfoThe property info to get the value from.
A compiled delegate.
T
Type of the getter.
Builds a fast property setter from a type and a property info.
public static SetValueFastDelegate<T> BuildPropertySetter<T>(Type customEffectType, PropertyInfo propertyInfo)
customEffectType
TypeType of the custom effect.
propertyInfo
PropertyInfoThe property info to set the value to.
A compiled delegate.
T
Type of the setter.
Clamps the specified value.
public static int Clamp(int value, int min, int max)
The result of clamping a value between min and max
Clamps the specified value.
public static float Clamp(float value, float min, float max)
The result of clamping a value between min and max
Clears the memory.
public static void ClearMemory(IntPtr dest, byte value, int sizeInBytesToClear)
Compares two collection, element by elements.
public static bool Compare(IEnumerator leftIt, IEnumerator rightIt)
leftIt
IEnumeratorA "from" enumerator.
rightIt
IEnumeratorA "to" enumerator.
true
if lists are identical; otherwise, false
.
Compares two block of memory.
public static bool CompareMemory(IntPtr from, IntPtr against, int sizeToCompare)
from
IntPtrThe pointer to compare from.
against
IntPtrThe pointer to compare against.
sizeToCompare
intThe size in bytes to compare.
true
if the buffers are equivalent; otherwise, false
.
Converts Bool array to bool array.
public static bool[] ConvertToBoolArray(Bool[] array)
array
Bool[]The array.
Converted array of bool.
Native memcpy.
public static void CopyMemory(IntPtr dest, IntPtr src, int sizeInBytesToCopy)
dest
IntPtrThe destination memory location.
src
IntPtrThe source memory location.
sizeInBytesToCopy
intThe byte count.
Safely dispose a referencem if not null, and set it to null after dispose.
public static void Dispose<T>(ref T comObject) where T : class, IDisposable
comObject
TObject to dispose.
T
The type of COM interface to dispose.
The reference will be set to null after dispose.
Selects distinct elements from an enumeration.
public static IEnumerable<TSource> Distinct<TSource>(IEnumerable<TSource> source, IEqualityComparer<TSource> comparer = null)
source
IEnumerable<TSource>The source.
comparer
IEqualityComparer<TSource>The comparer.
A enumeration of selected values
TSource
The type of the T source.
Releases native pointers to already disposed shadow objects.
public static void FreeDisposedShadowPointers()
Call this method when all unmanaged objects using shadows are destroyed.
Allocate an aligned memory buffer.
public static void FreeMemory(IntPtr alignedBuffer)
alignedBuffer
IntPtrThe buffer must have been allocated with AllocateMemory(int, int).
Gets the custom attribute.
public static T GetCustomAttribute<T>(MemberInfo memberInfo, bool inherited = false) where T : Attribute
memberInfo
MemberInfoThe member info.
inherited
boolif set to true
[inherited].
The custom attribute or null if not found.
T
Type of the custom attribute.
Gets the custom attributes.
public static IEnumerable<T> GetCustomAttributes<T>(MemberInfo memberInfo, bool inherited = false) where T : Attribute
memberInfo
MemberInfoThe member info.
inherited
boolif set to true
[inherited].
The custom attribute or null if not found.
T
Type of the custom attribute.
Gets the Guid from a type.
public static Guid GetGuidFromType(Type type)
type
TypeThe type.
The guid associated with this type.
Determines whether fromType can be assigned to toType.
public static bool IsAssignableFrom(Type toType, Type fromType)
true
if [is assignable from] [the specified to type]; otherwise, false
.
Determines whether the specified type to test is an enum.
public static bool IsEnum(Type typeToTest)
typeToTest
TypeThe type to test.
true
if the specified type to test is an enum; otherwise, false
.
Determines whether the specified value is close to one (1.0f).
public static bool IsOne(float a)
a
floatThe floating value.
true
if the specified value is close to one (1.0f); otherwise, false
.
Determines whether the specified type to test is a value type.
public static bool IsValueType(Type typeToTest)
typeToTest
TypeThe type to test.
true
if the specified type to test is a value type; otherwise, false
.
Determines whether the specified value is close to zero (0.0f).
public static bool IsZero(float a)
a
floatThe floating value.
true
if the specified value is close to zero (0.0f); otherwise, false
.
String helper join method to display an enumrable of object as a single string.
public static string Join(string separator, IEnumerator elements)
separator
stringThe separator.
elements
IEnumeratorThe enumerable.
A string with array elements serparated by the seperator.
Interpolates between two values using a linear function by a given amount.
public static double Lerp(double from, double to, double amount)
from
doubleValue to interpolate from.
to
doubleValue to interpolate to.
amount
doubleInterpolation amount.
The result of linear interpolation of values based on the amount.
See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/
Interpolates between two values using a linear function by a given amount.
public static float Lerp(float from, float to, float amount)
from
floatValue to interpolate from.
to
floatValue to interpolate to.
amount
floatInterpolation amount.
The result of linear interpolation of values based on the amount.
See http://www.encyclopediaofmath.org/index.php/Linear_interpolation and http://fgiesen.wordpress.com/2012/08/15/linear-interpolation-past-present-and-future/
Checks if a and b are almost equals, taking into account the magnitude of floating point numbers. See Remarks. See remarks.
public static bool NearEqual(float a, float b)
true
if a almost equal to b, false
otherwise
The code is using the technique described by Bruce Dawson in Comparing Floating point numbers 2012 edition.
Pins the specified source and call an action with the pinned pointer.
public static void Pin<T>(ref T source, Action<IntPtr> pinAction) where T : struct
T
The type of the structure to pin.
Pins the specified source and call an action with the pinned pointer.
public static void Pin<T>(T[] source, Action<IntPtr> pinAction) where T : struct
source
T[]The source array.
pinAction
Action<IntPtr>The pin action to perform on the pinned pointer.
T
The type of the structure to pin.
Converts a pointer to a null-terminating string up to maxLength characters to a .Net string.
public static string PtrToStringUni(IntPtr pointer, int maxLength)
The converted string.
Reads the specified T data from a memory location.
public static IntPtr ReadAndPosition<T>(IntPtr source, ref T data) where T : struct
source
IntPtrMemory location to read from.
data
TThe data write to.
source pointer + sizeof(T).
T
Type of a data to read.
Reads the specified T data from a memory location.
public static void ReadOut<T>(IntPtr source, out T data) where T : struct
source
IntPtrMemory location to read from.
data
TThe data write to.
T
Type of a data to read.
Read stream to a byte[] buffer.
public static byte[] ReadStream(Stream stream, ref int readLength)
A byte[] buffer.
Reads the specified T data from a memory location.
public static T Read<T>(IntPtr source) where T : struct
source
IntPtrMemory location to read from.
The data read from the memory location.
T
Type of a data to read.
Reads the specified T data from a memory location.
public static void Read<T>(IntPtr source, ref T data) where T : struct
source
IntPtrMemory location to read from.
data
TThe data write to.
T
Type of a data to read.
Reads the specified array T[] data from a memory location.
public static IntPtr Read<T>(IntPtr source, T[] data, int offset, int count) where T : struct
source
IntPtrMemory location to read from.
data
T[]The data write to.
offset
intThe offset in the array to write to.
count
intThe number of T element to read from the memory location.
source pointer + sizeof(T) * count.
T
Type of a data to read.
Select elements from an enumeration.
public static IEnumerable<TResult> SelectMany<TSource, TResult>(IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector)
source
IEnumerable<TSource>The source.
selector
Func<TSource, IEnumerable<TResult>>The selector.
A enumeration of selected values
TSource
The type of the T source.
TResult
The type of the T result.
Return the sizeof a struct from a CLR. Equivalent to sizeof operator but works on generics too.
public static int SizeOf<T>() where T : struct
Size of this struct.
T
A struct to evaluate.
Return the sizeof an array of struct. Equivalent to sizeof operator but works on generics too.
public static int SizeOf<T>(T[] array) where T : struct
array
T[]The array of struct to evaluate.
Size in bytes of this array of struct.
T
A struct.
Suspends the current thread.
public static void Sleep(TimeSpan sleepTimeInMillis)
sleepTimeInMillis
TimeSpanThe duration to sleep in milliseconds.
Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies.
public static IntPtr StringToHGlobalAnsi(string s)
s
stringA managed string to be copied.
The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null.
Copies the contents of a managed String into unmanaged memory.
public static IntPtr StringToHGlobalUni(string s)
s
stringA managed string to be copied.
The address, in unmanaged memory, to where s was copied, or IntPtr.Zero if s is null.
Transforms an IEnumerable<T> to an array of T.
public static T[] ToArray<T>(IEnumerable<T> source)
source
IEnumerable<T>The enumerable source.
an array of T
T
Type of the element
Converts a structured array to an equivalent byte array.
public static byte[] ToByteArray<T>(T[] source) where T : struct
source
T[]The source array.
Converted byte array.
T
The type of source array.
Checks if a - b are almost equals within a float epsilon.
public static bool WithinEpsilon(float a, float b, float epsilon)
true
if a almost equal to b within a float epsilon, false
otherwise
Writes the specified T data to a memory location.
public static IntPtr WriteAndPosition<T>(IntPtr destination, ref T data) where T : struct
destination
IntPtrMemory location to write to.
data
TThe data to write.
destination pointer + sizeof(T).
T
Type of a data to write.
Writes the specified T data to a memory location.
public static void Write<T>(IntPtr destination, ref T data) where T : struct
destination
IntPtrMemory location to write to.
data
TThe data to write.
T
Type of a data to write.
Writes the specified array T[] data to a memory location.
public static IntPtr Write<T>(IntPtr destination, T[] data, int offset, int count) where T : struct
destination
IntPtrMemory location to write to.
data
T[]The array of T data to write.
offset
intThe offset in the array to read from.
count
intThe number of T element to write to the memory location.
destination pointer + sizeof(T) * count.
T
Type of a data to write.