Refactored `sincos` usage in `quaternion` to use tuple-based returns for improved readability. Introduced a `random` struct with methods for generating random values of various types and dimensions, including ranges and directions. Added a `DynamicArray` class for dynamic resizing and manipulation of collections. Enhanced `SlotMap` with new methods for safe access and updates. Updated `uint` vector types with `NumericConvertable` attributes for better type interoperability. Removed the `MathUtilities` class and refactored `adj` and `adjInverse` methods for encapsulation. Improved memory management with `StackAllocator` and `UnsafeArray` enhancements. Added geometry utilities like `AABB`, `OBB`, `Plane`, and `SphereBounds` for 3D operations. Updated project configuration for versioning and NuGet packaging. Performed general code cleanup, improved validation, and aligned with modern C# practices.
56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
namespace Misaki.HighPerformance.LowLevel.Collections.Contracts;
|
|
|
|
public unsafe interface IUnsafeCollection : IDisposable
|
|
{
|
|
/// <summary>
|
|
/// Indicates whether the object has been created. Returns true if the object is created, otherwise false.
|
|
/// </summary>
|
|
public bool IsCreated
|
|
{
|
|
get;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes all elements from the collection. The collection will be empty after this operation.
|
|
/// </summary>
|
|
public void Clear();
|
|
|
|
/// <summary>
|
|
/// Returns a pointer to an unmanaged memory location. This pointer can be used for low-level memory operations.
|
|
/// </summary>
|
|
/// <returns>The method returns a void pointer to the unsafe memory location.</returns>
|
|
public void* GetUnsafePtr();
|
|
}
|
|
|
|
public unsafe interface IUnsafeCollection<T> : IUnsafeCollection, IEnumerable<T>
|
|
where T : unmanaged
|
|
{
|
|
/// <summary>
|
|
/// Gets the number of elements in a collection. The value is read-only.
|
|
/// </summary>
|
|
public int Count
|
|
{
|
|
get;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes the size of a collection to the specified value.
|
|
/// </summary>
|
|
/// <remarks>This is to adjust the element count of the collection, not the size of the underlying buffer in memory.</remarks>
|
|
/// <param name="newSize">Specifies the new size to which the collection should be adjusted.</param>
|
|
public void Resize(int newSize);
|
|
}
|
|
|
|
public unsafe interface IUnTypedCollection : IUnsafeCollection
|
|
{
|
|
/// <summary>
|
|
/// The total size of the buffer in bytes.
|
|
/// </summary>
|
|
public uint Size
|
|
{
|
|
get;
|
|
}
|
|
|
|
public ref T GetElementAt<T>(uint index)
|
|
where T : unmanaged;
|
|
} |