黄宗银 1 år sedan
förälder
incheckning
d5340422f8

BIN
Debug/net8.0/Apq.Web5.dll


BIN
Debug/net8.0/Apq.Web5.pdb


BIN
Debug/net8.0/Apq.dll


BIN
Debug/net8.0/Apq.pdb


+ 7 - 2
Debug/net8.0/Apq.xml

@@ -3172,16 +3172,21 @@
             </summary>
             </summary>
             <returns>新项的插入位置。</returns>
             <returns>新项的插入位置。</returns>
         </member>
         </member>
-        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按索引位置获取子项,越界则取类型T的默认值
             按索引位置获取子项,越界则取类型T的默认值
             </summary>
             </summary>
         </member>
         </member>
-        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByFirst``1(System.Collections.Generic.IList{``0},System.Int32)">
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrFirstOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按索引位置获取子项,越界则取第一个值
             按索引位置获取子项,越界则取第一个值
             </summary>
             </summary>
         </member>
         </member>
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrLastOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取最后一个值
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按循环索引获取子项
             按循环索引获取子项

+ 66 - 0
Debug/net8.0/BepuPhysics.deps.json

@@ -0,0 +1,66 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "BepuPhysics/2.5.0-beta.13": {
+        "dependencies": {
+          "BepuUtilities": "2.5.0-beta.13",
+          "Microsoft.SourceLink.GitHub": "1.1.1"
+        },
+        "runtime": {
+          "BepuPhysics.dll": {}
+        }
+      },
+      "Microsoft.Build.Tasks.Git/1.1.1": {},
+      "Microsoft.SourceLink.Common/1.1.1": {},
+      "Microsoft.SourceLink.GitHub/1.1.1": {
+        "dependencies": {
+          "Microsoft.Build.Tasks.Git": "1.1.1",
+          "Microsoft.SourceLink.Common": "1.1.1"
+        }
+      },
+      "BepuUtilities/2.5.0-beta.13": {
+        "runtime": {
+          "BepuUtilities.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "BepuPhysics/2.5.0-beta.13": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "Microsoft.Build.Tasks.Git/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==",
+      "path": "microsoft.build.tasks.git/1.1.1",
+      "hashPath": "microsoft.build.tasks.git.1.1.1.nupkg.sha512"
+    },
+    "Microsoft.SourceLink.Common/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==",
+      "path": "microsoft.sourcelink.common/1.1.1",
+      "hashPath": "microsoft.sourcelink.common.1.1.1.nupkg.sha512"
+    },
+    "Microsoft.SourceLink.GitHub/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==",
+      "path": "microsoft.sourcelink.github/1.1.1",
+      "hashPath": "microsoft.sourcelink.github.1.1.1.nupkg.sha512"
+    },
+    "BepuUtilities/2.5.0-beta.13": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    }
+  }
+}

BIN
Debug/net8.0/BepuPhysics.dll


BIN
Debug/net8.0/BepuPhysics.pdb


+ 8010 - 0
Debug/net8.0/BepuPhysics.xml

@@ -0,0 +1,8010 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>BepuPhysics</name>
+    </assembly>
+    <members>
+        <member name="T:BepuPhysics.BatchCompressor">
+            <summary>
+            Handles the movement of constraints from higher indexed batches into lower indexed batches to avoid accumulating a bunch of unnecessary ConstraintBatches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BatchCompressor.TargetCandidateFraction">
+            <summary>
+            Gets or sets the desired number of candidates to analyze as a fraction of the total number of constraints.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BatchCompressor.MaximumCompressionFraction">
+            <summary>
+            Gets or sets the maximum number of constraint moves that can occur in a single execution of Compress as a fraction of the total number of constraints.
+            </summary>       
+        </member>
+        <member name="F:BepuPhysics.BatchCompressor.nextBatchIndex">
+            <summary>
+            Index of the constraint batch to optimize.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BatchCompressor.Compress(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,System.Boolean)">
+            <summary>
+            Incrementally finds and applies a set of compressions to apply to the constraints in the solver's batches.
+            Constraints in higher index batches try to move to lower index batches whenever possible.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyMemoryLocation">
+            <summary>
+            Location of a body in memory.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyMemoryLocation.SetIndex">
+            <summary>
+            Index of the set owning the body reference. If the set index is 0, the body is awake. If the set index is greater than zero, the body is asleep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyMemoryLocation.Index">
+            <summary>
+            Index of the body within its owning set.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Bodies">
+            <summary>
+            Collection of all allocated bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.HandleToLocation">
+            <summary>
+            Remaps a body handle integer value to the actual array index of the body.
+            The backing array index may change in response to cache optimization.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.HandlePool">
+            <summary>
+            Pool from which handles are pulled for new bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.Sets">
+            <summary>
+            The set of existing bodies. The slot at index 0 contains all active bodies. Later slots, if allocated, contain the bodies associated with inactive islands.
+            Note that this buffer does not necessarily contain contiguous elements. When a set is removed, a gap remains.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Bodies.ActiveSet">
+            <summary>
+            Gets a reference to the active set, stored in the index 0 of the Sets buffer.
+            </summary>
+            <returns>Reference to the active body set.</returns>
+        </member>
+        <member name="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to a body in the collection.
+            </summary>
+            <param name="handle">Handle of the body to pull a reference for.</param>
+            <returns>Reference to the requested body.</returns>
+            <remarks>This is an alias for the older <see cref="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)"/> and the <see cref="T:BepuPhysics.BodyReference"/> constructor. They are all equivalent.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Bodies.Pool">
+            <summary>
+            Gets the pool used by the bodies collection to allocate and free memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Bodies.MinimumConstraintCapacityPerBody">
+            <summary>
+            Gets or sets the minimum constraint capacity for each body. Future resizes or allocations will obey this minimum, but changing this does not immediately resize existing lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,BepuPhysics.CollisionDetection.BroadPhase,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a new bodies collection. Initialize must be called for the instance to be ready for use.
+            </summary>
+            <param name="pool">Pool for the collection to pull persistent allocations from.</param>
+            <param name="shapes">Shapes referenced by the collection's bodies.</param>
+            <param name="broadPhase">Broad phase containing the body collidables.</param>
+            <param name="initialBodyCapacity">Initial number of bodies to allocate space for in the active set.</param>
+            <param name="initialIslandCapacity">Initial number of islands to allocate space for in the Sets buffer.</param>
+            <param name="initialConstraintCapacityPerBody">Expected number of constraint references per body to allocate space for.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Initialize(BepuPhysics.Solver,BepuPhysics.IslandAwakener,BepuPhysics.IslandSleeper)">
+            <summary>
+            Initializes the bodies set. Used to complete bidirectional dependencies.
+            </summary>
+            <param name="solver">Solver responsible for the constraints connected to the collection's bodies.</param>
+            <param name="awakener">Island awakener to use when bodies undergo transitions requiring that they exist in the active set.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.UpdateBounds(BepuPhysics.BodyHandle)">
+            <summary>
+            Updates the bounds held within the broad phase for the body's current state. Does not expand the bounding box by velocity. If there is no shape associated with the body, this does nothing.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Add(BepuPhysics.BodyDescription@)">
+            <summary>
+            Adds a new active body to the simulation.
+            </summary>
+            <param name="description">Description of the body to add.</param>
+            <returns>Handle of the created body.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.RemoveAt(System.Int32)">
+            <summary>
+            Removes an active body by its index. Any constraints connected to this body will be removed. Assumes that the input location is valid.
+            </summary>
+            <param name="activeBodyIndex">Index of the active body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Remove(BepuPhysics.BodyHandle)">
+            <summary>
+            Removes a body from the set by its handle. If the body is inactive, all bodies in its island will be forced active.
+            </summary>
+            <param name="handle">Handle of the body to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.AddConstraint(System.Int32,BepuPhysics.ConstraintHandle,System.Int32)">
+            <summary>
+            Adds a constraint to an active body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the body to add the constraint to.</param>
+            <param name="constraintHandle">Handle of the constraint to add.</param>
+            <param name="indexInConstraint">Index of the body in the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.RemoveConstraintReference(System.Int32,BepuPhysics.ConstraintHandle)">
+            <summary>
+            Removes a constraint from an active body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the active body.</param>
+            <param name="constraintHandle">Handle of the constraint to remove.</param>
+            <returns>True if the number of constraints remaining attached to the body is 0, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertia)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematicUnsafeGCHole(BepuPhysics.BodyInertia@)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze. Must be a reference to fixed data; a pointer will be taken.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+            <remarks>This is not exposed by default because of the risk of a non-obvious GC hole.
+            It exists because it's a mildly more convenient form than the pointer overload, and every use within the engine references only pinned data.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertiaWide)">
+            <summary>
+            Checks inertia lanes for kinematicity (all inverse mass and inertia values are zero).
+            </summary>
+            <param name="inertia">Inertia to examine for kinematicity.</param>
+            <returns>Mask of lanes which contain zeroed inverse masses and inertias.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertia*)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.HasLockedInertia(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Gets whether the angular inertia matches that of a kinematic body (that is, all inverse inertia tensor components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.HasLockedInertia(BepuUtilities.Symmetric3x3*)">
+            <summary>
+            Gets whether the angular inertia matches that of a kinematic body (that is, all inverse inertia tensor components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.SetLocalInertia(BepuPhysics.BodyHandle,BepuPhysics.BodyInertia@)">
+            <summary>
+            Changes the local mass and inertia tensor associated with a body. Properly handles the transition between kinematic and dynamic.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed.
+            Wakes up the body.
+            </summary>
+            <param name="handle">Handle of the body whose inertia should change.</param>
+            <param name="localInertia">New local inertia for the body.</param>
+            <remarks>
+            This function is only necessary when the inertia change could potentially result in a transition between dynamic and kinematic states.
+            If it is guaranteed to be dynamic before and after the change, the inertia can be directly modified without issue.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.SetShape(BepuPhysics.BodyHandle,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a body. Properly handles the transition between shapeless and shapeful. If the body is inactive, it will be forced awake.
+            Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="handle">Handle of the body to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.ApplyDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)">
+            <summary>
+            Applies a description to a body. Properly handles any transitions between dynamic and kinematic and between shapeless and shapeful.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed. Wakes up the body.
+            Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="handle">Handle of the body to receive the description.</param>
+            <param name="description">Description to apply to the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)">
+            <summary>
+            Gets the description of a body by handle.
+            </summary>
+            <param name="handle">Handle of the body to look up.</param>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetDescription(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets the description of a body by handle.
+            </summary>
+            <param name="handle">Handle of the body to look up.</param>
+            <returns>Description of the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to a body by its handle.
+            </summary>
+            <param name="handle">Handle of the body to grab a reference of.</param>
+            <returns>Reference to the desired body.</returns>
+            <remarks>This is an alias for <see cref="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)"/> and the <see cref="T:BepuPhysics.BodyReference"/> constructor. They are all equivalent.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.BodyExists(BepuPhysics.BodyHandle)">
+            <summary>
+            Checks whether a body handle is currently registered with the bodies set.
+            </summary>
+            <param name="bodyHandle">Handle to check for.</param>
+            <returns>True if the handle exists in the collection, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnumerateConnectedBodyIndices``1(System.Int32,``0@)">
+            <summary>
+            Enumerates all the bodies connected to a given active body.
+            Bodies which are connected by more than one constraint will be reported multiple times.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to execute on each connected body.</typeparam>
+            <param name="activeBodyIndex">Index of the active body to enumerate the connections of. This body will not appear in the set of enumerated bodies, even if it is connected to itself somehow.</param>
+            <param name="enumerator">Enumerator instance to run on each connected body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnumerateConnectedBodies``1(BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Enumerates all the bodies connected to a given body.
+            Bodies which are connected by more than one constraint will be reported multiple times.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to execute on each connected body.</typeparam>
+            <param name="bodyHandle">Handle of the body to enumerate the connections of. This body will not appear in the set of enumerated bodies, even if it is connected to itself somehow.</param>
+            <param name="enumerator">Enumerator instance to run on each connected body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Clear">
+            <summary>
+            Clears all bodies from all sets without releasing any memory that wouldn't be released by a sequence of regular removals.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Resize(System.Int32)">
+            <summary>
+            Resizes the allocated spans for active body data. Note that this is conservative; it will never orphan existing objects.
+            </summary>
+            <param name="capacity">Target body data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.ResizeConstraintListCapacities">
+            <summary>
+            Resizes all active body constraint lists to meet the MinimumConstraintCapacityPerBody. Inactive bodies are untouched.
+            Resizes are guaranteed to never shrink a list below the current count.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of active body buffers if needed to hold the target capacity.
+            </summary>
+            <param name="capacity">Target data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnsureConstraintListCapacities">
+            <summary>
+            Ensures all active body constraint lists can hold at least MinimumConstraintCapacityPerBody constraints. Inactive bodies are untouched.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Dispose">
+            <summary>
+            Returns all body resources to the pool used to create them.
+            </summary>
+            <remarks>The object can be reused if it is reinitialized by using EnsureCapacity or Resize.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Bodies.DynamicLimit">
+            <summary>
+            Constraint body references greater than a given unsigned value are either kinematic (bit 30 set) or correspond to an empty lane (bit 31 set).
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.BodyReferenceMask">
+            <summary>
+            Mask of bits containing the decoded body reference in a constraint body reference. For active constraints this would be the body index bits, for sleeping constraints this would be the body handle bits.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsEncodedDynamicReference(System.Int32)">
+            <summary>
+            Checks whether a constraint encoded body reference value refers to a dynamic body.
+            </summary>
+            <param name="encodedBodyReferenceValue">Raw encoded value taken from a constraint.</param>
+            <returns>True if the encoded body reference refers to a dynamic body, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsEncodedKinematicReference(System.Int32)">
+            <summary>
+            Checks whether a constraint encoded body reference value refers to a kinematic body.
+            </summary>
+            <param name="encodedBodyReferenceValue">Raw encoded value taken from a constraint.</param>
+            <returns>True if the encoded body reference refers to a kinematic body, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.TransposeMotionStates(BepuUtilities.Memory.Buffer{BepuPhysics.MotionState},BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transposes of bundle of array-of-structures layout motion states into a bundle of array-of-structures-of-arrays layout.
+            Size of buffer must be no larger than the <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/>.
+            </summary>
+            <param name="states">Array-of-structures data to transpose.</param>
+            <param name="position">Array-of-structures-of-arrays positions.</param>
+            <param name="orientation">Array-of-structures-of-arrays orientations.</param>
+            <param name="velocity">Array-of-structures-of-arrays velocities.</param>
+        </member>
+        <member name="T:BepuPhysics.BodyActivityDescription">
+            <summary>
+            Describes the thresholds for a body going to sleep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivityDescription.SleepThreshold">
+            <summary>
+            Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivityDescription.MinimumTimestepCountUnderThreshold">
+            <summary>
+            The number of time steps that the body must be under the sleep threshold before the body becomes a sleep candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyActivityDescription.#ctor(BepuUtilities.Numerics.Number,System.Byte)">
+            <summary>
+            Creates a body activity description.
+            </summary>
+            <param name="sleepThreshold">Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).</param>
+            <param name="minimumTimestepCountUnderThreshold">The number of time steps that the body must be under the sleep threshold before the body becomes a sleep candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyActivityDescription.op_Implicit(BepuUtilities.Numerics.Number)~BepuPhysics.BodyActivityDescription">
+            <summary>
+            Creates a body activity description. Uses a <see cref="F:BepuPhysics.BodyActivityDescription.MinimumTimestepCountUnderThreshold"/> of 32.
+            </summary>
+            <param name="sleepThreshold">Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.</param>
+        </member>
+        <member name="T:BepuPhysics.BodyDescription">
+            <summary>
+            Describes a body's state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Pose">
+            <summary>
+            Position and orientation of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Velocity">
+            <summary>
+            Linear and angular velocity of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.LocalInertia">
+            <summary>
+            Mass and inertia tensor of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Collidable">
+            <summary>
+            Shape and collision detection settings for the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Activity">
+            <summary>
+            Sleeping settings for the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.GetDefaultSpeculativeMargin``1(``0@)">
+            <summary>
+            Computes a decent default speculative margin for a shape based on its minimum and maximum radii.
+            </summary>
+            <typeparam name="TShape">Type of the shape to compute a speculative margin for.</typeparam>
+            <param name="shape">Shape to compute a speculative margin for.</param>
+            <returns>Speculative margin for the given shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.GetDefaultActivity``1(``0@)">
+            <summary>
+            Computes a decent default activity description for a shape.
+            </summary>
+            <typeparam name="TShape">Type of the shape to create an activity description for.</typeparam>
+            <param name="shape">Shape to create an activity description for.</param>
+            <returns>Default activity description for the given shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateDynamic(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.BodyInertia,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a dynamic body description.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="inertia">Local inertia of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateDynamic(BepuPhysics.RigidPose,BepuPhysics.BodyInertia,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a dynamic body description with zero initial velocity.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="inertia">Local inertia of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexDynamic``1(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a dynamic body description with collidable, inertia, and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="mass">Mass of the body. The inertia tensor will be calculated based on this mass and the shape.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexDynamic``1(BepuPhysics.RigidPose,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a dynamic body description with zero initial velocity and collidable, inertia, and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="mass">Mass of the body. The inertia tensor will be calculated based on this mass and the shape.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateKinematic(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a kinematic body description.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateKinematic(BepuPhysics.RigidPose,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a kinematic body description with zero initial velocity.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexKinematic``1(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a kinematic body description with collidable and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexKinematic``1(BepuPhysics.RigidPose,BepuPhysics.Collidables.Shapes,``0)">
+            <summary>
+            Creates a kinematic body description with zero initial velocity and collidable and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="T:BepuPhysics.MotionState">
+            <summary>
+            Describes the pose and velocity of a body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.MotionState.Pose">
+            <summary>
+            Pose of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.MotionState.Velocity">
+            <summary>
+            Linear and angular velocity of the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.MotionState.ToString">
+            <summary>
+            Returns a string representing the MotionState.
+            </summary>
+            <returns>String representing the MotionState.</returns>
+        </member>
+        <member name="T:BepuPhysics.RigidPose">
+            <summary>
+            Represents a rigid transformation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.RigidPose.Orientation">
+            <summary>
+            Orientation of the pose.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.RigidPose.Position">
+            <summary>
+            Position of the pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.RigidPose.Identity">
+            <summary>
+            Returns a pose with a position at (0,0,0) and identity orientation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Creates a rigid pose with the given position and orientation.
+            </summary>
+            <param name="position">Position of the pose.</param>
+            <param name="orientation">Orientation of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a rigid pose with the given position and identity orientation.
+            </summary>
+            <param name="position">Position of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(BepuUtilities.Numerics.Vector3)~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose by treating a <see cref="T:BepuUtilities.Numerics.Vector3"/> as a position. Orientation is set to identity.
+            </summary>
+            <param name="position">Position to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(BepuUtilities.Numerics.Quaternion)~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose by treating a <see cref="T:BepuUtilities.Numerics.Quaternion"/> as an orientation in the pose. Position is set to zero.
+            </summary>
+            <param name="orientation">Orientation to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(System.ValueTuple{BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion})~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose from a tuple of a position and orientation.
+            </summary>
+            <param name="poseComponents">Position and orientation to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.Transform(BepuUtilities.Numerics.Vector3,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by the rigid pose: v * pose.Orientation + pose.Position.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="pose">Pose to transform the vector with.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.TransformByInverse(BepuUtilities.Numerics.Vector3,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by the inverse of a rigid pose: (v - pose.Position) * pose.Orientation^-1.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="pose">Pose to invert and transform the vector with.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.Invert(BepuPhysics.RigidPose@,BepuPhysics.RigidPose@)">
+            <summary>
+            Inverts the rigid transformation of the pose.
+            </summary>
+            <param name="pose">Pose to invert.</param>
+            <param name="inverse">Inverse of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.MultiplyWithoutOverlap(BepuPhysics.RigidPose@,BepuPhysics.RigidPose@,BepuPhysics.RigidPose@)">
+            <summary>
+            Concatenates one rigid transform with another. The resulting transform is equivalent to performing transform a followed by transform b.
+            </summary>
+            <param name="a">First transform to concatenate.</param>
+            <param name="b">Second transform to concatenate.</param>
+            <param name="result">Result of the concatenation.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.ToString">
+            <summary>
+            Returns a string representing the RigidPose as "Position, Orientation".
+            </summary>
+            <returns>String representing the RigidPose.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyVelocity">
+            <summary>
+            Linear and angular velocity for a body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyVelocity.Linear">
+            <summary>
+            Linear velocity associated with the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyVelocity.Angular">
+            <summary>
+            Angular velocity associated with the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a new set of body velocities. Angular velocity is set to zero.
+            </summary>
+            <param name="linear">Linear velocity to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a new set of body velocities.
+            </summary>
+            <param name="linear">Linear velocity to use for the body.</param>
+            <param name="angular">Angular velocity to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.op_Implicit(BepuUtilities.Numerics.Vector3)~BepuPhysics.BodyVelocity">
+            <summary>
+            Creates a body velocity by treating a <see cref="T:BepuUtilities.Numerics.Vector3"/> as a linear velocity. Angular velocity is set to zero.
+            </summary>
+            <param name="linearVelocity">Linear velocity to use in the body velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.op_Implicit(System.ValueTuple{BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3})~BepuPhysics.BodyVelocity">
+            <summary>
+            Creates a body velocity from a tuple of linear and angular velocities..
+            </summary>
+            <param name="velocities">Velocities to use in the body velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.ToString">
+            <summary>
+            Returns a string representing the BodyVelocity as "Linear, Angular".
+            </summary>
+            <returns>String representing the BodyVelocity.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyInertia">
+            <summary>
+            Stores the inertia for a body.
+            </summary>
+            <remarks>This representation stores the inverse mass and inverse inertia tensor. Most of the high frequency use cases in the engine naturally use the inverse.</remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyInertia.InverseInertiaTensor">
+            <summary>
+            Inverse of the body's inertia tensor.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertia.InverseMass">
+            <summary>
+            Inverse of the body's mass.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyInertia.ToString">
+            <summary>
+            Returns a string representing the BodyInertia as "InverseMass, InverseInertiaTensor".
+            </summary>
+            <returns>String representing the BodyInertia.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyInertias">
+            <summary>
+            Stores the local and world views of a body's inertia, packed together for efficient access.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertias.Local">
+            <summary>
+            Local inertia of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertias.World">
+            <summary>
+            Transformed world inertia of the body. Note that this is only valid between the velocity integration that updates it and the pose integration that follows.
+            Outside of that execution window, this should be considered undefined.
+            </summary>
+            <remarks>
+            We cache this here because velocity integration wants both the local and world inertias, and any integration happening within the solver will do so without the benefit of sequential loads.
+            In that context, being able to load a single cache line to grab both local and world inertia helps quite a lot.</remarks>
+        </member>
+        <member name="M:BepuPhysics.BodyInertias.ToString">
+            <summary>
+            Returns a string representing the BodyInertias.
+            </summary>
+            <returns>String representing the BodyInertias.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyDynamics">
+            <summary>
+            Stores all body information needed by the solver together.
+            </summary>
+            <remarks>
+            With 2.4's revamp of the solver, every solving stage loads pose, velocity, and inertia for every body in each constraint.
+            L2 prefetchers often fetch memory in even-odd pairs of cache lines (see https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf#page=162).
+            Since L2 is likely pulling in adjacent cache lines when loading either motion state or inertias, they might as well live together in one block.
+            Note that this goes along with a change to the buffer pool's default alignment to 128 bytes.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyDynamics.Motion">
+            <summary>
+            Pose and velocity information for the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDynamics.Inertia">
+            <summary>
+            Inertia information for the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyDynamics.ToString">
+            <summary>
+            Returns a string representing the BodyDynamics.
+            </summary>
+            <returns>String representing the BodyDynamics.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyActivity">
+            <summary>
+            Describes how a body sleeps, and its current state with respect to sleeping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.SleepThreshold">
+            <summary>
+            Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            Setting this to a negative value guarantees the body cannot go to sleep without user action.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.MinimumTimestepsUnderThreshold">
+            <summary>
+            The number of time steps that the body must be under the sleep threshold before the body becomes a sleeping candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.TimestepsUnderThresholdCount">
+            <summary>
+            If the body is awake, this is the number of time steps that the body has had a velocity below the sleep threshold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.SleepCandidate">
+            <summary>
+            True if this body is a candidate for being slept. If all the bodies that it is connected to by constraints are also candidates, this body may go to sleep.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyReference">
+            <summary>
+            Convenience structure for directly referring to a body's properties.
+            </summary>
+            <remarks>Note that this type makes no attempt to protect against unsafe modification of body properties, nor does modifying its properties try to wake up bodies if they are asleep.</remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyReference.Handle">
+            <summary>
+            Handle of the body that this reference refers to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyReference.Bodies">
+            <summary>
+            The bodies collection containing the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.#ctor(BepuPhysics.BodyHandle,BepuPhysics.Bodies)">
+            <summary>
+            Constructs a new body reference.
+            </summary>
+            <param name="handle">Handle of the body to refer to.</param>
+            <param name="bodies">Collection containing the body.</param>
+            <remarks>This is equivalent to <see cref="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)"/> and <see cref="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)"/>.</remarks>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Exists">
+            <summary>
+            Gets whether the body reference exists within the body set. True if the handle maps to a valid memory location that agrees that the handle points to it, false otherwise.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.MemoryLocation">
+            <summary>
+            Gets a reference to the body's memory location stored in the handle to location mapping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Awake">
+            <summary>
+            Gets or sets whether the body is in the active set. Setting this to true will attempt to wake the body; setting it to false will force the body and any constraint-connected bodies asleep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Velocity">
+            <summary>
+            Gets a reference to the body's velocity.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Pose">
+            <summary>
+            Gets a reference to the body's pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.MotionState">
+            <summary>
+            Gets a reference to the body's motion state, including both pose and velocity.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Dynamics">
+            <summary>
+            Gets a reference to the body's solver-relevant state, including pose, velocity, and inertia.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Collidable">
+            <summary>
+            Gets a reference to the body's collidable.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.LocalInertia">
+            <summary>
+            Gets a reference to the body's local inertia.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Activity">
+            <summary>
+            Gets a reference to the body's activity state.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Constraints">
+            <summary>
+            Gets a reference to the list of the body's connected constraints.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.CollidableReference">
+            <summary>
+            <para>Gets a CollidableReference for this body. CollidableReferences uniquely identify a collidable object in a simulation by including both the dynamic/kinematic/static state of the object and its handle.</para>
+            <para>Despite an unfortunate naming collision, CollidableReferences are distinct from a direct reference to a body's collidable data, which you can get from the Collidable property.</para>
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Kinematic">
+            <summary>
+            Gets whether the body is kinematic, meaning its inverse inertia and mass are all zero.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.HasLockedInertia">
+            <summary>
+            Gets whether the body has locked inertia, meaning its inverse inertia tensor is zero.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.BecomeKinematic">
+            <summary>
+            If the body is dynamic, turns the body kinematic by setting all inverse inertia and mass values to zero and activates it.
+            Any constraints connected to the body that now only contain kinematic references are removed.
+            If the body is kinematic, does nothing.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.SetLocalInertia(BepuPhysics.BodyInertia@)">
+            <summary>
+            Sets the body's local inertia to the provided inertia. Wakes up the body and correctly handles any transition between dynamic and kinematic states.
+            If the body moves from dynamic to kinematic, any constraints connected to the body that now only contain kinematic references are removed.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ComputeInverseInertia(BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the world space inverse inertia tensor for the body based on the LocalInertia and Pose.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetDescription(BepuPhysics.BodyDescription@)">
+            <summary>
+            Gets a description of the body.
+            </summary>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyDescription(BepuPhysics.BodyDescription@)">
+            <summary>
+            Sets a body's properties according to a description. Properly handles any transitions between dynamic and kinematic and between shapeless and shapeful.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed. Wakes up the body and updates its bounds in the broad phase.
+            </summary>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.SetShape(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a body. Properly handles the transition between shapeless and shapeful. If the body is inactive, it will be forced awake. Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="newShape">Index of the new shape to use for the body.</param>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.BoundingBox">
+            <summary>
+            Gets a copy of the body's bounding box. If the body has no shape, the bounding box has a min at Number.MaxValue and a max at Number.MinValue.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetBoundsReferencesFromBroadPhase(BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets direct pointers to the body's bounding box minimum and maximum in the broad phase. Outputs null if the body has no shape.
+            </summary>
+            <param name="min">Pointer to the bounding box minimum in the broad phase. Null if the body has no shape.</param>
+            <param name="max">Pointer to the bounding box maximum in the broad phase. Null if the body has no shape.</param>
+            <returns>True if the body has a shape and bounds, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.UpdateBounds">
+            <summary>
+            Updates the body's bounds in the broad phase for its current state. Does not include velocity expansion. Does nothing if the body has no shape.
+            </summary>
+            <remarks>Can be useful if you made modifications to the body's state that you want reflected in the broad phase before the next timestep.
+            For example, if you want to perform ray casts against the broad phase after moving objects around directly, their bounds must be updated or else the broad phase bounds will be out of date and the ray will likely miss.</remarks>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.BodyInertia@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@)">
+            <summary>
+            Applies an impulse to a body by index. Does not wake the body up.
+            </summary>
+            <param name="pose">Pose of the body to apply impulse to.</param>
+            <param name="velocity">Velocity of the body to apply impulse to.</param>
+            <param name="localInertia">Local inertia of the body to apply impulse to.</param>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset from the center of the body to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuPhysics.BodySet@,System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a body by index. Does not wake the body up.
+            </summary>
+            <param name="set">Body set containing the body to apply an impulse to.</param>
+            <param name="index">Index of the body in the body set.</param>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset from the center of the body to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyAngularImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Applies an angular impulse to an angular velocity. Does not wake the body up.
+            </summary>
+            <param name="angularImpulse">Impulse to apply to the velocity.</param>
+            <param name="inverseInertiaTensor">Inverse inertia tensor to transform the impulse with.</param>
+            <param name="angularVelocity">Angular velocity to be modified.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyLinearImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Applies an impulse to a linear velocity. Does not wake the body up.
+            </summary>
+            <param name="impulse">Impulse to apply to the velocity.</param>
+            <param name="inverseMass">Inverse mass to transform the impulse with.</param>
+            <param name="linearVelocity">Linear velocity to be modified.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a body at the given world space position. Does not modify activity states.
+            </summary>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyLinearImpulse(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a linear velocity. Does not wake the body up.
+            </summary>
+            <param name="impulse">Impulse to apply to the velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetVelocityForOffset(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the velocity of an offset point attached to the body.
+            </summary>
+            <param name="offset">Offset from the body's center to </param>
+            <param name="velocity">Effective velocity of the point if it were attached to the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyAngularImpulse(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an angular impulse to an angular velocity. Does not wake the body up.
+            </summary>
+            <param name="angularImpulse">Impulse to apply to the velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.op_Implicit(BepuPhysics.BodyReference)~BepuPhysics.BodyHandle">
+            <summary>
+            Implicitly converts a <see cref="T:BepuPhysics.BodyReference"/> to the <see cref="T:BepuPhysics.BodyHandle"/> that the body reference was created from.
+            </summary>
+            <param name="reference">Body reference to extract the handle from.</param>
+        </member>
+        <member name="T:BepuPhysics.BodySet">
+            <summary>
+            Stores a group of bodies- either the set of active bodies, or the bodies involved in an inactive simulation island.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.IndexToHandle">
+            <summary>
+            Remaps a body index to its handle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.DynamicsState">
+            <summary>
+            Stores all data involved in solving constraints for a body, including pose, velocity, and inertia.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Collidables">
+            <summary>
+            The collidables owned by each body in the set. Speculative margins, continuity settings, and shape indices can be changed directly.
+            Shape indices cannot transition between pointing at a shape and pointing at nothing or vice versa without notifying the broad phase of the collidable addition or removal.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Activity">
+            <summary>
+            Activity states of bodies in the set.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Constraints">
+            <summary>
+            List of constraints associated with each body in the set.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodySet.Allocated">
+            <summary>
+            Gets whether this instance is backed by allocated memory.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodySet.RemoveConstraintReference(System.Int32,BepuPhysics.ConstraintHandle,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a constraint from a body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the body to remove the constraint reference from.</param>
+            <param name="constraintHandle">Handle of the constraint to remove.</param>
+            <param name="minimumConstraintCapacityPerBody">Minimum constraint capacity to maintain the body's constraint list. The list will automatically downsize as constraints are removed, but its capacity will not go below this threshold.</param>
+            <param name="pool">Pool to use to resize the constraint list.</param>
+            <returns>True if the number of constraints remaining attached to the body is 0, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodySet.DisposeBuffers(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the buffers, but nothing inside of the buffers. Per-body constraint lists stored in the set will not be returned.
+            </summary>
+            <param name="pool">Pool to return the set's top level buffers to.</param>
+        </member>
+        <member name="M:BepuPhysics.BodySet.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the body set's buffers and any resources within them.
+            </summary>
+            <param name="pool">Pool to return resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.ExpandLocalBoundingBoxes(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Expands the bounding box surrounding a shape A in the local space of some other collidable B.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.GetLocalBoundingBoxForSweep(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.Shapes,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a child shape A in the local space of some other collidable B with a sweep direction representing the net linear motion.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.GetLocalBoundingBoxForSweep``1(``0@,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of shape A in the local space of some other collidable B with a sweep direction representing the net linear motion.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollidableProperty`1">
+            <summary>
+            Convenience collection that stores extra properties about bodies and statics, indexed by the body or static handle.
+            </summary>
+            <typeparam name="T">Type of the data to store.</typeparam>
+            <remarks>This is built for use cases relying on random access like the narrow phase. For maximum performance with sequential access, an index-aligned structure would be better.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.#ctor(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Constructs a new collection to store handle-aligned body properties. Assumes the Initialize function will be called later to provide the Bodies collection.
+            </summary>
+            <param name="pool">Pool from which to pull internal resources. If null, uses the later Initialize-provided Bodies pool.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.#ctor(BepuPhysics.Simulation,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Constructs a new collection to store handle-aligned body and static properties.
+            </summary>
+            <param name="simulation">Simulation to track.</param>
+            <param name="pool">Pool from which to pull internal resources. If null, uses the Simulation pool.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Initializes the property collection if the Bodies/Statics-less constructor was used.
+            </summary>
+            <param name="simulation">Simulation whose bodies and statics will be tracked.</param>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to the properties associated with a body's handle.
+            </summary>
+            <param name="bodyHandle">Body handle to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a body handle.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to the properties associated with a static's handle.
+            </summary>
+            <param name="staticHandle">Static handle to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a static handle.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Gets a reference to the properties associated with a collidable.
+            </summary>
+            <param name="staticHandle">Collidable to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.BodyHandle)">
+            <summary>
+            Ensures there is space for a given body handle and returns a reference to the used memory.
+            </summary>
+            <param name="bodyHandle">Body handle to allocate for.</param>
+            <returns>Reference to the data for the given body.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.StaticHandle)">
+            <summary>
+            Ensures there is space for a given static handle and returns a reference to the used memory.
+            </summary>
+            <param name="handle">Static handle to allocate for.</param>
+            <returns>Reference to the data for the given static.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Ensures there is space for a given collidable reference and returns a reference to the used memory.
+            </summary>
+            <param name="handle">Collidable reference to allocate for.</param>
+            <returns>Reference to the data for the given collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.EnsureBodyCapacity(System.Int32)">
+            <summary>
+            Ensures that the internal structures have at least the given capacity for bodies.
+            </summary>
+            <param name="capacity">Capacity to ensure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.EnsureStaticCapacity(System.Int32)">
+            <summary>
+            Ensures that the internal structures have at least the given capacity for statics.
+            </summary>
+            <param name="capacity">Capacity to ensure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.CompactBodies">
+            <summary>
+            Compacts the memory used by the collection for bodies to a safe minimum based on the Bodies collection.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.CompactStatics">
+            <summary>
+            Compacts the memory used by the collection for statics to a safe minimum based on the Statics collection.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Dispose">
+            <summary>
+            Returns all held resources.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.BigCompound">
+            <summary>
+            Compound shape containing a bunch of shapes accessible through a tree acceleration structure. Useful for compounds with lots of children.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Tree">
+            <summary>
+            Acceleration structure for the compound children.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Children">
+            <summary>
+            Buffer of children within this compound.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.CreateWithoutTreeBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a BigCompound shape instance, but leaves the Tree in an unbuilt state. The Tree must be built before the compound can be used.
+            </summary>
+            <param name="children">Children to use in the compound.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created compound shape.</returns>
+            <remarks>In some cases, the default binned build may not be the ideal builder. This function does everything needed to set up a tree without the expense of figuring out the details of the acceleration structure.
+            The user can then run whatever build/refinement process is appropriate.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.FillSubtreesForChildren(System.Span{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,System.Span{BepuPhysics.Trees.NodeChild})">
+            <summary>
+            Fills a buffer of subtrees according to a buffer of triangles.
+            </summary>
+            <remarks>The term "subtree" is used because the binned builder does not care whether the input came from leaf nodes or a refinement process's internal nodes.</remarks>
+            <param name="children">Children to build subtrees from.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="subtrees">Subtrees created for the triangles.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.CreateWithSweepBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a compound shape instance and builds an acceleration structure using a sweep builder.
+            </summary>
+            <param name="children">Children to use in the compound.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created compound shape.</returns>
+            <remarks>The sweep builder is significantly slower than the binned builder, but can sometimes create higher quality trees.
+            <para>Note that the binned builder can be tuned to create higher quality trees. That is usually a better choice than trying to use the sweep builder; this is here primarily for legacy reasons.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Creates a compound shape with an acceleration structure.
+            </summary>
+            <param name="children">Set of children in the compound.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="pool">Pool to use to allocate acceleration structures.</param>
+            <param name="dispatcher">Thread dispatcher to use to multithread the acceleration structure build, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.Add(BepuPhysics.Collidables.CompoundChild,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Adds a child to the compound.
+            </summary>
+            <param name="child">Child to add to the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+            <param name="shapes">Shapes collection containing the compound's children.</param>
+            <remarks><para>This function keeps the <see cref="F:BepuPhysics.Collidables.BigCompound.Tree"/> in a valid state, but significant changes over time may degrade the tree's quality and result in reduced collision/query performance.
+            If this happens, consider calling <see cref="M:BepuPhysics.Trees.Tree.RefitAndRefine(BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.Numerics.Number)"/> with a refinementIndex that changes with each call (to prioritize different parts of the tree).
+            Incrementing a counter with each call would work fine. The ideal frequency of refinement depends on the kind of modifications being made, but it's likely to be rare.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.RemoveAt(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a child from the compound by index. The last child is pulled to fill the gap left by the removed child.
+            </summary>
+            <param name="childIndex">Index of the child to remove from the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+            <remarks>This function keeps the <see cref="F:BepuPhysics.Collidables.BigCompound.Tree"/> in a valid state, but significant changes over time may degrade the tree's quality and result in reduced collision/query performance.
+            If this happens, consider calling <see cref="M:BepuPhysics.Trees.Tree.RefitAndRefine(BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.Numerics.Number)"/> with a refinementIndex that changes with each call (to prioritize different parts of the tree).
+            Incrementing a counter with each call would work fine. The ideal frequency of refinement depends on the kind of modifications being made, but it's likely to be rare.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Id">
+            <summary>
+            Type id of compound shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Box">
+            <summary>
+            Collision shape representing a solid cuboid.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfWidth">
+            <summary>
+            Half of the box's width along its local X axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfHeight">
+            <summary>
+            Half of the box's height along its local Y axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfLength">
+            <summary>
+            Half of the box's length along its local Z axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Width">
+            <summary>
+            Gets or sets the width of the box along its local X axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Height">
+            <summary>
+            Gets or sets the height of the box along its local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Length">
+            <summary>
+            Gets or sets the length of the box along its local Z axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Box.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a Box shape.
+            </summary>
+            <param name="width">Width of the box along the local X axis.</param>
+            <param name="height">Height of the box along the local Y axis.</param>
+            <param name="length">Length of the box along the local Z axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.Id">
+            <summary>
+            Type id of box shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Capsule">
+            <summary>
+            Collision shape representing a sphere-expanded line segment.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.Radius">
+            <summary>
+            Spherical expansion applied to the internal line segment.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.HalfLength">
+            <summary>
+            Half of the length of the internal line segment. Oriented along the local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Capsule.Length">
+            <summary>
+            Gets or sets the length of the capsule's internal line segment along the local Y axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Capsule.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a capsule shape.
+            </summary>
+            <param name="radius">Radius of the capsule.</param>
+            <param name="length">Length of the capsule's internal line segment along the local Y axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.Id">
+            <summary>
+            Type id of capsule shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ContinuousDetectionMode">
+            <summary>
+            Defines how a collidable will handle collision detection in the presence of velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will not be expanded by velocity beyond the speculative margin.</para>
+            <para>This is the cheapest mode. If a Discrete mode collidable is moving quickly and the maximum speculative margin is limited,
+            the fact that its bounding box is not expanded may cause it to miss a collision even with a non-Discrete collidable.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will be expanded by velocity without being limited by the speculative margin.</para>
+            <para>This is useful when a collidable may move quickly and does not itself require continuous detection, but there exist other collidables with continuous modes 
+            that should avoid missing collisions.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous">
+            <summary>
+            <para>Collision detection will start with a sweep test to identify a likely time of impact. Speculative contacts will be generated for the predicted collision.</para>
+            <para>This mode can capture angular motion with very few ghost collisions. It can, however, miss secondary collisions that would have occurred due to the primary impact's velocity change.</para>
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ContinuousDetection">
+            <summary>
+            Defines how a collidable handles collisions with significant velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.Mode">
+            <summary>
+            The continuous collision detection mode.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.MinimumSweepTimestep">
+            <summary>
+            If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, this defines the minimum progress that the sweep test will make when searching for the first time of impact.
+            Collisions lasting less than <see cref="F:BepuPhysics.Collidables.ContinuousDetection.MinimumSweepTimestep"/> may be missed by the sweep test. Using larger values can significantly increase the performance of sweep tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.SweepConvergenceThreshold">
+            <summary>
+            If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, sweep tests will terminate if the time of impact region has been refined to be smaller than <see cref="F:BepuPhysics.Collidables.ContinuousDetection.SweepConvergenceThreshold"/>.
+            Values closer to zero will converge more closely to the true time of impact, but for speculative contact generation larger values usually work fine.
+            Larger values allow the sweep to terminate much earlier and can significantly improve sweep performance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.AllowExpansionBeyondSpeculativeMargin">
+            <summary>
+            Gets whether the continuous collision detection configuration will permit bounding box expansion beyond the calculated speculative margin.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.Discrete">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will not be expanded by velocity beyond the speculative margin.</para>
+            <para>This can be marginally cheaper than Passive modes if using a limited maximum speculative margin. If a Discrete mode collidable is moving quickly and the maximum speculative margin is limited,
+            the fact that its bounding box is not expanded may cause it to miss a collision even with a non-Discrete collidable.</para>
+            <para>Note that Discrete and Passive only differ if maximum speculative margin is restricted.</para>
+            </summary>
+            <returns>Detection settings for the given discrete configuration.</returns>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.Passive">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box and speculative margin will be expanded by velocity.</para>
+            <para>This is useful when a collidable may move quickly and does not itself require continuous detection, but there exist other collidables with continuous modes that should avoid missing collisions.</para>
+            </summary>
+            <returns>Detection settings for the passive configuration.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ContinuousDetection.Continuous(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            <para>Collision detection will start with a sweep test to identify a likely time of impact. Speculative contacts will be generated for the predicted collision.</para>
+            <para>This mode can capture angular motion with very few ghost collisions. It can, however, miss secondary collisions that would have occurred due to the primary impact's velocity change.</para>
+            </summary>
+            <param name="minimumSweepTimestep">Minimum progress that the sweep test will make when searching for the first time of impact.
+            Collisions lasting less than MinimumProgress may be missed by the sweep test. Using larger values can significantly increase the performance of sweep tests.</param>
+            <param name="sweepConvergenceThreshold">Threshold against which the time of impact region is compared for sweep termination. 
+            If the region has been refined to be smaller than SweepConvergenceThreshold, the sweep will terminate.
+            Values closer to zero will converge more closely to the true time of impact, but for speculative contact generation larger values usually work fine.
+            Larger values allow the sweep to terminate much earlier and can significantly improve sweep performance.</param>
+            <returns>Detection settings for the given continuous configuration.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Collidable">
+            <summary>
+            Description of a collidable used by a body living in the broad phase and able to generate collision pairs.
+            Collidables with a ShapeIndex that points to nothing (a default constructed <see cref="T:BepuPhysics.Collidables.TypedIndex"/>) are not capable of colliding with anything.
+            This can be used for a body which needs no collidable representation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.Shape">
+            <summary>
+            Index of the shape used by the body. While this can be changed, any transition from shapeless->shapeful or shapeful->shapeless must be reported to the broad phase. 
+            If you need to perform such a transition, consider using <see cref="M:BepuPhysics.Bodies.SetShape(BepuPhysics.BodyHandle,BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.Bodies.ApplyDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)"/>; those functions update the relevant state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.Continuity">
+            <summary>
+            Continuous collision detection settings for this collidable. Includes the collision detection mode to use and tuning variables associated with those modes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.MinimumSpeculativeMargin">
+            <summary>
+            Lower bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks>0 tends to be a good default value. Higher values can be chosen if velocity magnitude is a poor proxy for speculative margins, but these cases are rare.
+            In those cases, try to use the smallest value that still satisfies requirements to avoid creating unnecessary contact constraints.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin">
+            <summary>
+            Upper bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks><see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> tends to be a good default value for discrete or passive mode collidables. 
+            The speculative margin will increase in size proportional to velocity magnitude, so having an unlimited maximum won't cost extra if the body isn't moving fast.
+            <para>Smaller values can be useful for improving performance in chaotic situations where missing a collision is acceptable. When using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, a speculative margin larger than the velocity magnitude will result in the sweep test being skipped, so lowering the maximum margin can help avoid ghost collisions.</para>
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.SpeculativeMargin">
+            <summary>
+            Automatically computed size of the margin around the surface of the shape in which contacts can be generated. These contacts will have negative depth and only contribute if the frame's velocities
+            would push the shapes of a pair into overlap. 
+            <para>This is automatically set by bounding box prediction each frame, and is bound by the collidable's <see cref="F:BepuPhysics.Collidables.Collidable.MinimumSpeculativeMargin"/> and <see cref="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin"/> values.
+            The effective speculative margin for a collision pair can also be modified from <see cref="T:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks"/> callbacks.</para>
+            <para>This should be positive to avoid jittering.</para>
+            <para>It can also be used as a form of continuous collision detection, but excessively high values combined with fast motion may result in visible 'ghost collision' artifacts. 
+            For continuous collision detection with less chance of ghost collisions, use <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>.</para>
+            <para>If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, consider setting <see cref="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin"/> to a smaller value to help filter ghost collisions.</para>
+            <para>For more information, see the ContinuousCollisionDetection.md documentation.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.BroadPhaseIndex">
+            <summary>
+            Index of the collidable in the broad phase. Used to look up the target location for bounding box scatters. Under normal circumstances, this should not be set externally.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableDescription">
+            <summary>
+            Describes a collidable and how it should handle continuous collision detection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.Shape">
+            <summary>
+            Shape of the collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.Continuity">
+            <summary>
+            Continuous collision detection settings used by the collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin">
+            <summary>
+            Lower bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks>0 tends to be a good default value. Higher values can be chosen if velocity magnitude is a poor proxy for speculative margins, but these cases are rare.
+            In those cases, try to use the smallest value that still satisfies requirements to avoid creating unnecessary contact constraints.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin">
+            <summary>
+            Upper bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks><see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> tends to be a good default value for discrete or passive mode collidables. 
+            The speculative margin will increase in size proportional to velocity magnitude, so having an unlimited maximum won't cost extra if the body isn't moving fast.
+            <para>Smaller values can be useful for improving performance in chaotic situations where missing a collision is acceptable. When using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, a speculative margin larger than the velocity magnitude will result in the sweep test being skipped, so lowering the maximum margin can help avoid ghost collisions.</para>
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="minimumSpeculativeMargin">Lower bound on the value of the speculative margin used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/>.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="minimumSpeculativeMargin">Lower bound on the value of the speculative margin used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description. Uses 0 for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> .
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description. Uses 0 for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> and <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/> .
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/>. Will use a <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> of 0 and a <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/> of <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/>.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <remarks><see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/> and <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> are equivalent in behavior when the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/>  is <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> since they both result in the same (unbounded) expansion of body bounding boxes in response to velocity.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/>. Will use a minimum speculative margin of 0 and the given maximumSpeculativeMargin.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Maximum speculative margin to be used with the discrete continuity configuration.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.op_Implicit(BepuPhysics.Collidables.TypedIndex)~BepuPhysics.Collidables.CollidableDescription">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/>. Will use a minimum speculative margin of 0 and a maximum of <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/>.
+            </summary>
+            <param name="shapeIndex">Shape index to use for the collidable.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableMobility">
+            <summary>
+            Represents how a collidable can interact and move.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Dynamic">
+            <summary>
+            Marks a collidable as owned by a dynamic body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Kinematic">
+            <summary>
+            Marks a collidable as owned by a kinematic body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Static">
+            <summary>
+            Marks the collidable as an independent immobile collidable.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableReference">
+            <summary>
+            Uses a bitpacked representation to refer to a body or static collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableReference.Packed">
+            <summary>
+            Bitpacked representation of the collidable reference.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.Mobility">
+            <summary>
+            Gets the mobility state of the owner of this collidable.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.BodyHandle">
+            <summary>
+            Gets the body handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.StaticHandle">
+            <summary>
+            Gets the static handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.RawHandleValue">
+            <summary>
+            Gets the integer value of the handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.Collidables.CollidableMobility,System.Int32)">
+            <summary>
+            Creates a collidable reference.
+            </summary>
+            <param name="mobility">Mobility type of the owner of the collidable.</param>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.Collidables.CollidableMobility,BepuPhysics.BodyHandle)">
+            <summary>
+            Creates a collidable reference for a body.
+            </summary>
+            <param name="mobility">Mobility type of the owner of the collidable.</param>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.StaticHandle)">
+            <summary>
+            Creates a collidable reference for a static.
+            </summary>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CompoundChild">
+            <summary>
+            Shape and pose of a child within a compound shape.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.LocalOrientation">
+            <summary>
+            Local orientation of the child in the compound.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.LocalPosition">
+            <summary>
+            Local position of the child in the compound.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.ShapeIndex">
+            <summary>
+            Index of the shape within whatever shape collection holds the compound's child shape data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundChild.AsPose(BepuPhysics.Collidables.CompoundChild@)">
+            <summary>
+            Reintreprets the 32 bytes of a compound child as a pose.
+            </summary>
+            <param name="child">Child to reinterpret.</param>
+            <returns>Reference to the child as a pose.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Compound">
+            <summary>
+            Minimalist compound shape containing a list of child shapes. Does not make use of any internal acceleration structure; should be used only with small groups of shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Compound.Children">
+            <summary>
+            Buffer of children within this compound.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild})">
+            <summary>
+            Creates a compound shape with no acceleration structure.
+            </summary>
+            <param name="children">Set of children in the compound.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ValidateChildIndex(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Checks if a shape index.
+            </summary>
+            <param name="shapeIndex">Shape index to analyze.</param>
+            <param name="shapeBatches">Shape collection into which the index indexes.</param>
+            <returns>True if the index is valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ValidateChildIndices(System.Span{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Checks if a set of children shape indices are all valid.
+            </summary>
+            <param name="children">Children to examine.</param>
+            <param name="shapeBatches">Shape collection into which the children index.</param>
+            <returns>True if all child indices are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.Add(BepuPhysics.Collidables.CompoundChild,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Adds a child to the compound.
+            </summary>
+            <param name="child">Child to add to the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.RemoveAt(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a child from the compound by index. The last child is pulled to fill the gap left by the removed child.
+            </summary>
+            <param name="childIndex">Index of the child to remove from the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Compound.Id">
+            <summary>
+            Type id of list based compound shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CompoundBuilder">
+            <summary>
+            Reusable convenience type for incrementally building compound shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundBuilder.Child.Weight">
+            <summary>
+            Weight associated with this child. Acts as the child's mass when interpreted as a dynamic compound.
+            When interpreted as kinematic with recentering, it is used as a local pose weight to compute the center of rotation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundBuilder.Child.LocalInverseInertia">
+            <summary>
+            Inverse inertia tensor of the child in its local space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,System.Int32)">
+            <summary>
+            Creates a compound builder.
+            </summary>
+            <param name="pool">Buffer pool to allocate memory from when necessary.</param>
+            <param name="shapes">Shapes collection to access when constructing the compound children.</param>
+            <param name="initialBuilderCapacity">Number of children the compound builder can hold without resizing.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Add(BepuPhysics.Collidables.TypedIndex,BepuPhysics.RigidPose@,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator.
+            </summary>
+            <param name="shape">Index of the shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass. Otherwise, it is used for recentering.</param>
+            <param name="localInverseInertia">Inverse inertia tensor of the shape being added in its local space. This is assumed to already be scaled as desired by the weight.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.AddForKinematic(BepuPhysics.Collidables.TypedIndex,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, assuming it has infinite inertia.
+            </summary>
+            <param name="shape">Index of the shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape used for computing the center of rotation.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Add``1(``0@,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, creating a new shape in the shapes set. The mass used to compute the inertia tensor will be based on the given weight.
+            </summary>
+            <typeparam name="TShape">Type of the shape to add to the accumulator and the shapes set.</typeparam>
+            <param name="shape">Shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass and scales the inertia tensor. 
+            Otherwise, it is used for recentering.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.AddForKinematic``1(``0@,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, creating a new shape in the shapes set. Inertia is assumed to be infinite.
+            </summary>
+            <typeparam name="TShape">Type of the shape to add to the accumulator and the shapes set.</typeparam>
+            <param name="shape">Shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass. Otherwise, it is used for recentering.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.GetOffsetInertiaContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Gets the contribution to an inertia tensor of a point mass at the given offset from the center of mass.
+            </summary>
+            <param name="offset">Offset from the center of mass.</param>
+            <param name="mass">Mass of the point.</param>
+            <param name="contribution">Contribution to the inertia tensor.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildDynamicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuPhysics.BodyInertia@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a dynamic compound.
+            Computes a center of mass and recenters child shapes relative to it. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="inertia">Combined inertia of the compound.</param>
+            <param name="center">Computed center of rotation based on the poses and weights of accumulated children.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildDynamicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuPhysics.BodyInertia@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a dynamic compound. Does not recenter the children. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="inertia">Combined inertia of the compound.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertiaForChild(BepuPhysics.RigidPose@,BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the uninverted inertia contribution of a child.
+            </summary>
+            <param name="pose">Pose of the child.</param>
+            <param name="inverseLocalInertia">Inverse inertia tensor of the child in its local space.</param>
+            <param name="mass">Mass of the child.</param>
+            <returns>Inertia contribution of the child to a compound given its relative pose.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertiaForChild(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the uninverted inertia contribution of a child.
+            </summary>
+            <param name="position">Position of the child.</param>
+            <param name="orientation">Orientation of the child.</param>
+            <param name="inverseLocalInertia">Inverse inertia tensor of the child in its local space.</param>
+            <param name="mass">Mass of the child.</param>
+            <returns>Inertia contribution of the child to a compound given its relative pose.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Does not recenter the children.
+            </summary>
+            <param name="children">Children and their associated poses.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the inverse inertia for a set of compound children based on their poses and the provided inverse inertias. Does not recenter the children.
+            </summary>
+            <param name="childPoses">Poses of the compound's children.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <param name="inverseMass">Inverse of the sum of all child masses.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="childPoses">Poses of the children in the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <param name="inverseMass">Inverse of the sum of all child masses.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="childPoses">Poses of the children in the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Recenters the children onto the computed center of mass.
+            </summary>
+            <param name="children">Children and their associated poses. Center of mass will be subtracted from the child position.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <param name="centerOfMass">Computed center of mass that was subtracted from the child positions.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Recenters the children onto the computed center of mass.
+            </summary>
+            <param name="childPoses">Poses of the compound's children. Center of mass will be subtracted from the child position.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <param name="centerOfMass">Computed center of mass that was subtracted from the child positions.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="children">Children of the compound. Child local positions will have the calculated center of mass subtracted from them.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildKinematicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a kinematic compound.
+            Computes a center of mass and recenters child shapes relative to it. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="center">Computed center of rotation based on the poses and weights of accumulated children.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildKinematicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a kinematic compound. Does not recenter children. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Reset">
+            <summary>
+            Empties out the accumulated children.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Dispose">
+            <summary>
+            Returns internal resources to the pool, rendering the builder unusable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullBoundingPlanes.Normal">
+            <summary>
+            Normal of the bounding plane.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullBoundingPlanes.Offset">
+            <summary>
+            Offset from the origin to a point on the plane along the normal. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.Points">
+            <summary>
+            Bundled points of the convex hull.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.BoundingPlanes">
+            <summary>
+            Bundled bounding planes associated with the convex hull's faces.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.FaceVertexIndices">
+            <summary>
+            Combined set of vertices used by each face. Use FaceToVertexIndicesStart to index into this for a particular face. Indices stored in counterclockwise winding in right handed space, clockwise in left handed space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.FaceToVertexIndicesStart">
+            <summary>
+            Start indices of faces in the FaceVertexIndices.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHull.#ctor(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Creates a convex hull from a point set.
+            </summary>
+            <param name="points">Points to compute the convex hull of.</param>
+            <param name="pool">Pool in which to allocate the convex hull and any temporary resources needed to compute the hull.</param>
+            <param name="center">Computed center of the convex hull before the hull was recentered.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.Id">
+            <summary>
+            Type id of convex hull shapes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullWide.EstimateEpsilonScale(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Provides an estimate of the scale of a shape. 
+            </summary>
+            <param name="terminatedLanes">Mask of lanes which are inactive.</param>
+            <param name="epsilonScale">Approximate scale of the shape for use in epsilons.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.HullFace">
+            <summary>
+            Stores references to the points composing one of a convex hull's faces.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.HullFace.VertexCount">
+            <summary>
+            Gets the number of vertices in the face.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.HullFace.Item(System.Int32)">
+            <summary>
+            Gets the index of the vertex associated with the given face vertex index in the source point set.
+            </summary>
+            <param name="index">Index into the face's vertex list.</param>
+            <returns>Index of the vertex associated with the given face vertex index in the source point set.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.HullData">
+            <summary>
+            Raw data representing a convex hull.
+            </summary>
+            <remarks>This is not yet transformed into a runtime format. It requires additional processing to be used in a ConvexHull shape; see ConvexHullHelper.ProcessHull.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.OriginalVertexMapping">
+            <summary>
+            Mapping of points on the convex hull back to the original point set.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.FaceVertexIndices">
+            <summary>
+            List of indices composing the faces of the hull. Individual faces indexed by the FaceIndices.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.FaceStartIndices">
+            <summary>
+            Starting index in the FaceVertexIndices for each face.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ConvexHullHelper">
+            <summary>
+            Helper methods to create and process convex hulls from point clouds.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ConvexHullHelper.EdgeFaceIndices">
+            <summary>
+            Tracks the faces associated with a detected surface edge. 
+            During hull calculation, surface edges that have only one face associated with them should have an outstanding entry in the edges to visit set.
+            Surface edges can never validly have more than two faces associated with them. Two means that an edge is 'complete', or should be.
+            Detecting a third edge implies an error condition. By tracking *which* faces were associated with an edge, we can attempt to fix the error.
+            This type of error tends to occur when there is a numerical disagreement about what vertices are coplanar with a face.
+            One iteration could find what it thinks is a complete face, and a later iteration ends up finding more vertices *including* the ones already contained in the previous face.
+            That's a recipe for excessive edge faces, but it's also a direct indicator that we should merge the involved faces for being close enough to coplanar that the error happened in the first place.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.ComputeHull(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.HullData@)">
+            <summary>
+            Computes the convex hull of a set of points.
+            </summary>
+            <param name="points">Point set to compute the convex hull of.</param>
+            <param name="pool">Buffer pool to pull memory from when creating the hull.</param>
+            <param name="hullData">Convex hull of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuPhysics.Collidables.HullData,BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Processes hull data into a runtime usable convex hull shape. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Point array into which the hull data indexes.</param>
+            <param name="hullData">Raw input data to process.</param>
+            <param name="pool">Pool used to allocate resources for the hullShape.</param>
+            <param name="hullShape">Convex hull shape created from the input data.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.HullData@,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a convex hull shape out of an input point set. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Points to use to create the hull.</param>
+            <param name="pool">Buffer pool used for temporary allocations and the output data structures.</param>
+            <param name="hullData">Intermediate hull data that got processed into the convex hull.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+            <param name="convexHull">Convex hull shape of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a convex hull shape out of an input point set. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Points to use to create the hull.</param>
+            <param name="pool">Buffer pool used for temporary allocations and the output data structures.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+            <param name="convexHull">Convex hull shape of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.Buffer{BepuUtilities.Vector3Wide},BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.HullBoundingPlanes})">
+            <summary>
+            Creates a transformed copy of a convex hull.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="targetPoints">Transformed points in the copy target hull.</param>
+            <param name="targetBoundingPlanes">Transformed bounding planes in the copy target hull.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedShallowCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a transformed copy of a convex hull. FaceVertexIndices and FaceToVertexIndicesStart buffers from the source are reused in the copy target.
+            Note that disposing two convex hulls with the same buffers will cause errors; disposal must be handled carefully to avoid double freeing the shared buffers.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="pool">Pool from which to allocate the new hull's points and bounding planes buffers.</param>
+            <param name="target">Target convex hull to copy into. FaceVertexIndices and FaceToVertexIndicesStart buffers are reused from the source.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a transformed copy of a convex hull. Unique FaceVertexIndices and FaceToVertexIndicesStart buffers are allocated for the copy target.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="pool">Pool from which to allocate the new hull's buffers.</param>
+            <param name="target">Target convex hull to copy into.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Cylinder">
+            <summary>
+            Collision shape representing a cylinder.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.Radius">
+            <summary>
+            Radius of the cylinder.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.HalfLength">
+            <summary>
+            Half length of the cylinder along its local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Cylinder.Length">
+            <summary>
+            Gets or sets the length of the cylinder along its local Y axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Cylinder.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a cylinder shape.
+            </summary>
+            <param name="radius">Radius of the cylinder.</param>
+            <param name="length">Length of the cylinder along its local Y axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.Id">
+            <summary>
+            Type id of cylinder shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IShape">
+            <summary>
+            Defines a type usable as a shape by collidables.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShape.TypeId">
+            <summary>
+            Unique type id for this shape type.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShape.CreateShapeBatch(BepuUtilities.Memory.BufferPool,System.Int32,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Creates a shape batch for this type of shape.
+            </summary>
+            <param name="pool">Buffer pool used to create the batch.</param>
+            <param name="initialCapacity">Initial capacity to allocate within the batch.</param>
+            <param name="shapeBatches">The set of shapes to contain this batch.</param>
+            <returns>Shape batch for the shape type.</returns>
+            <remarks>This is typically used internally to initialize new shape collections in response to shapes being added. It is not likely to be useful outside of the engine.
+            Ideally, this would be implemented as a static abstract, but those aren't available yet.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IConvexShape">
+            <summary>
+            Defines functions available on all convex shapes. Convex shapes have no hollowed out regions; any line passing through a convex shape will never enter and exit more than once.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a shape given an orientation.
+            </summary>
+            <param name="orientation">Orientation of the shape to use when computing the bounding box.</param>
+            <param name="min">Minimum corner of the bounding box.</param>
+            <param name="max">Maximum corner of the bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeAngularExpansionData(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes information about how the bounding box should be expanded in response to angular velocity.
+            </summary>
+            <param name="maximumRadius"></param>
+            <param name="maximumAngularExpansion"></param>
+            <remarks>This is typically used in the engine for predicting bounding boxes at the beginning of the frame.
+            Velocities are used to expand the bounding box so that likely future collisions will be detected.
+            Linear velocity expands the bounding box in a direct and simple way, but angular expansion requires more information about the shape. 
+            Imagine a long and thin capsule versus a sphere: high angular velocity may require significant expansion on the capsule, but spheres are rotationally invariant.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia for a body given a mass.
+            </summary>
+            <param name="mass">Mass to use to compute the body's inertia.</param>
+            <returns>Inertia for the body.</returns>
+            <remarks>Note that the <see cref="T:BepuPhysics.BodyInertia"/> returned by this stores the inverse mass and inverse inertia tensor. 
+            This is because the most high frequency use of body inertia most naturally uses the inverse.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.RayTest(BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="origin">Origin of the ray to test against the shape relative to the shape.</param>
+            <param name="direction">Direction of the ray to test against the shape.</param>
+            <param name="t">Distance along the ray direction to the hit point, if any, in units of the ray direction's length. In other words, hitLocation = origin + direction * t.</param>
+            <param name="normal">Normal of the impact surface, if any.</param>
+            <returns>True if the ray intersected the shape, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ICompoundShape">
+            <summary>
+            Defines a compound shape type that has children of potentially different types.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a compound shape.
+            </summary>
+            <param name="orientation">Orientation of the compound.</param>
+            <param name="shapeBatches">Shape batches to look up child shape information in.</param>
+            <param name="min">Minimum of the compound's bounding box.</param>
+            <param name="max">Maximum of the compound's bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.AddChildBoundsToBatcher(BepuPhysics.BoundingBoxBatcher@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,System.Int32)">
+            <summary>
+            Submits child shapes to a bounding box batcher for vectorized bounds calculation.
+            </summary>
+            <remarks>This is used internally for bounding box calculation, but it is unlikely to be useful externally.</remarks>
+            <param name="batcher">Batcher to accumulate children in.</param>
+            <param name="pose">Pose of the compound.</param>
+            <param name="velocity">Velocity of the compound used to expand child bounds.</param>
+            <param name="bodyIndex">Index of the body in the active body set; used to accumulate child bounds results.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="ray">Ray to test against the shape.</param>
+            <param name="maximumT">Maximum distance along the ray, in units of the ray direction's length, that the ray will test.</param>
+            <param name="shapeBatches">Shape batches to look up child shapes in if necessary.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Tests multiple rays against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="rays">Rays to test against the shape.</param>
+            <param name="shapeBatches">Shape batches to look up child shapes in if necessary.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ICompoundShape.ChildCount">
+            <summary>
+            Gets the number of children in the compound shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.GetChild(System.Int32)">
+            <summary>
+            Gets a child from the compound by index.
+            </summary>
+            <param name="compoundChildIndex">Index of the child to look up.</param>
+            <returns>Reference to the requested compound child.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns all resources used by the shape instance to the given pool.
+            </summary>
+            <param name="pool">Pool to return shape resources to.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IHomogeneousCompoundShape`2">
+            <summary>
+            Defines a compound shape type that has children of only one type.
+            </summary>
+            <typeparam name="TChildShape">Type of the child shapes.</typeparam>
+            <typeparam name="TChildShapeWide">Type of the child shapes, formatted in AOSOA layout.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a compound shape.
+            </summary>
+            <param name="orientation">Orientation of the compound.</param>
+            <param name="min">Minimum of the compound's bounding box.</param>
+            <param name="max">Maximum of the compound's bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,``0@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="ray">Ray to test against the shape.</param>
+            <param name="maximumT">Maximum distance along the ray, in units of the ray direction's length, that the ray will test.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,``0@)">
+            <summary>
+            Tests multiple rays against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="rays">Rays to test against the shape.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.ChildCount">
+            <summary>
+            Gets the number of children in the compound shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetLocalChild(System.Int32,`0@)">
+            <summary>
+            Gets a child shape as it appears in the compound's local space.
+            </summary>
+            <param name="childIndex">Index of the child in the compound parent.</param>
+            <param name="childData">Data representing the child.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetPosedLocalChild(System.Int32,`0@,BepuPhysics.RigidPose@)">
+            <summary>
+            Gets a child shape from the compound and compounds a pose for it in the local space of the compound parent.
+            Useful for processes which require a child shape (like a triangle in a mesh) to have their center of mass at zero in the child's own local space.
+            </summary>
+            <param name="childIndex">Index of the child.</param>
+            <param name="childData">Shape of the child.</param>
+            <param name="childPose">Pose in the compound's local space that brings the child shape as described to the proper location in the parent compound's local space.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetLocalChild(System.Int32,`1@)">
+            <summary>
+            Gets a child shape as it appears in the compound's local space.
+            </summary>
+            <param name="childIndex">Index of the child in the compound parent.</param>
+            <param name="childData">Reference to an AOSOA slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns all resources used by the shape instance to the given pool.
+            </summary>
+            <param name="pool">Pool to return shape resources to.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IShapeWide`1">
+            <summary>
+            Defines a widely vectorized bundle representation of a shape.
+            </summary>
+            <typeparam name="TShape">Scalar type of the shape.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.AllowOffsetMemoryAccess">
+            <summary>
+            Gets whether this type supports accessing its memory by lane offsets. If false, WriteSlot must be used instead of WriteFirst.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.InternalAllocationSize">
+            <summary>
+            Gets the number of bytes required for allocations within the wide shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.Initialize(BepuUtilities.Memory.Buffer{System.Byte}@)">
+            <summary>
+            For types with a nonzero internal allocation size, provides memory to the shape for internal allocations.
+            Memory should be assumed to be stack allocated.
+            </summary>
+            <param name="memory">Memory to use for internal allocations in the wide shape.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.WriteFirst(`0@)">
+            <summary>
+            Places the specified AOS-formatted shape into the first lane of the wide 'this' reference.
+            </summary>
+            <remarks>Note that we are effectively using the TShapeWide as a stride.
+            The base address is offset by the user of this function, so the implementation only ever considers the first slot.</remarks>
+            <param name="source">AOS-formatted shape to gather from.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.WriteSlot(System.Int32,`0@)">
+            <summary>
+            Places the specified AOS-formatted shape into the selected slot of the wide 'this' reference.
+            </summary>
+            <param name="index">Index of the slot to put the data into.</param>
+            <param name="source">Source of the data to insert.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.Broadcast(`0@)">
+            <summary>
+            Broadcasts a scalar shape into a bundle containing the same shape in every lane.
+            </summary>
+            <param name="shape">Scalar shape to broadcast.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.GetBounds(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the bounds of all shapes in the bundle.
+            </summary>
+            <param name="orientations">Orientations of the shapes in the bundle.</param>
+            <param name="countInBundle">Number of lanes filled in the bundle.</param>
+            <param name="maximumRadius">Computed maximum radius of the shapes in the bundle.</param>
+            <param name="maximumAngularExpansion">Computed maximum bounds expansion that can be caused by angular motion.</param>
+            <param name="min">Minimum bounds of the shapes.</param>
+            <param name="max">Maximum bounds of the shapes.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.MinimumWideRayCount">
+            <summary>
+            Gets the lower bound on the number of rays to execute in a wide fashion. Ray bundles with fewer rays will fall back to the single ray code path.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.RayTest(BepuPhysics.RigidPoseWide@,BepuPhysics.Collidables.RayWide@,BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="poses">Poses of the shape bundle during the ray test.</param>
+            <param name="rayWide">Ray to test against the shape bundle.</param>
+            <param name="intersected">Mask representing hit state in each lane. -1 means the ray in that lane hit, 0 means a miss.</param>
+            <param name="t">Distance along the ray direction to the hit point, if any, in units of the ray direction's length. In other words, hitLocation = origin + direction * t.</param>
+            <param name="normal">Normal of the impact surface, if any.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Mesh">
+            <summary>
+            Shape designed to contain a whole bunch of triangles. Triangle collisions and ray tests are one-sided; only tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates will generate contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Tree">
+            <summary>
+            Acceleration structure of the mesh.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Triangles">
+            <summary>
+            Buffer of triangles composing the mesh. Triangles will only collide with tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Mesh.Scale">
+            <summary>
+            Gets or sets the scale of the mesh.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.FillSubtreesForTriangles(System.Span{BepuPhysics.Collidables.Triangle},System.Span{BepuPhysics.Trees.NodeChild})">
+            <summary>
+            Fills a buffer of subtrees according to a buffer of triangles.
+            </summary>
+            <remarks>The term "subtree" is used because the binned builder does not care whether the input came from leaf nodes or a refinement process's internal nodes.</remarks>
+            <param name="triangles">Triangles to build subtrees from.</param>
+            <param name="subtrees">Subtrees created for the triangles.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.CreateWithoutTreeBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a mesh shape instance, but leaves the Tree in an unbuilt state. The tree must be built before the mesh can be used.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created mesh shape.</returns>
+            <remarks>In some cases, the default binned build may not be the ideal builder. This function does everything needed to set up a tree without the expense of figuring out the details of the acceleration structure.
+            The user can then run whatever build/refinement process is appropriate.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.CreateWithSweepBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a mesh shape instance and builds an acceleration structure using a sweep builder.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created mesh shape.</returns>
+            <remarks>The sweep builder is significantly slower than the binned builder, but can sometimes create higher quality trees.
+            <para>Note that the binned builder can be tuned to create higher quality trees. That is usually a better choice than trying to use the sweep builder; this is here primarily for legacy reasons.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Creates a mesh shape.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <param name="dispatcher">Dispatcher to use to multithread the execution of the mesh build process. If null, the build will be single threaded.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.#ctor(System.Span{System.Byte},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Loads a mesh from data stored in a byte buffer previously stored by the Serialize function.
+            </summary>
+            <param name="data">Data to load the mesh from.</param>
+            <param name="pool">Pool to create the mesh with.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.GetSerializedByteCount">
+            <summary>
+            Gets the number of bytes it would take to store the given mesh in a byte buffer.
+            </summary>
+            <returns>Number of bytes it would take to store the mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Serialize(System.Span{System.Byte})">
+            <summary>
+            Writes a mesh's data to a byte buffer.
+            </summary>
+            <param name="data">Byte buffer to store the mesh in.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,``0@)">
+            <summary>
+            Casts a ray against the mesh. Executes a callback for every test candidate and every hit.
+            </summary>
+            <typeparam name="TRayHitHandler">Type of the callback to execute for every test candidate and hit.</typeparam>
+            <param name="pose">Pose of the mesh during the ray test.</param>
+            <param name="ray">Ray to test against the mesh.</param>
+            <param name="maximumT">Maximum length of the ray in units of the ray direction length.</param>
+            <param name="hitHandler">Callback to execute for every hit.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,``0@)">
+            <summary>
+            Casts a bunch of rays against the mesh at the same time, executing a callback for every test candidate and every hit.
+            </summary>
+            <typeparam name="TRayHitHandler">Type of the callback to execute for every ray test candidate and every hit.</typeparam>
+            <param name="pose">Pose of the mesh during the ray test.</param>
+            <param name="rays">Set of rays to cast against the mesh.</param>
+            <param name="hitHandler">Callbacks to execute.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Recenter(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Subtracts the newCenter from all points in the mesh hull.
+            </summary>
+            <param name="newCenter">New center that all points will be made relative to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedInertia(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of the mesh around its volumetric center and recenters the points of the mesh around it.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <param name="center">Center of the closed mesh.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of the mesh.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedCenterOfMass(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the volume and center of mass of the mesh. Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="volume">Volume of the closed mesh.</param>
+            <param name="center">Center of mass of the closed mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedCenterOfMass">
+            <summary>
+            Computes the center of mass of the mesh.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <returns>Center of mass of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenInertia(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of the mesh around its volumetric center and recenters the points of the mesh around it.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <param name="center">Center of the open mesh.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of the mesh.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <returns>Inertia of the open mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenCenterOfMass">
+            <summary>
+            Computes the center of mass of the mesh.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <returns>Center of mass of the open mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns the mesh's resources to a buffer pool.
+            </summary>
+            <param name="bufferPool">Pool to return the mesh's resources to.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Id">
+            <summary>
+            Type id of mesh shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ITriangleSource">
+            <summary>
+            Defines a type capable of providing a sequence of triangles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ITriangleSource.GetNextTriangle(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Gets the next triangle in the sequence, if any.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <returns>True if there was another triangle, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.MeshInertiaHelper">
+            <summary>
+            Provides helpers for computing the inertia of objects with triangular surfaces.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTetrahedronVolume(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Computes the signed volume of a tetrahedron where the fourth vertex is at the origin.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <param name="a">First vertex of the tetrahedron.</param>
+            <param name="b">Second vertex of the tetrahedron.</param>
+            <param name="c">Third vertex of the tetrahedron.</param>
+            <returns>Volume of the tetrahedron.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTetrahedronContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution of a tetrahedron with vertices at a, b, c, and (0,0,0) assuming a density of 1.
+            </summary>
+            <param name="a">First vertex of the tetrahedron.</param>
+            <param name="b">Second vertex of the tetrahedron.</param>
+            <param name="c">Third vertex of the tetrahedron.</param>
+            <param name="volume">Volume of the tetrahedron.</param>
+            <param name="inertiaTensor">Inertia tensor of this tetrahedron assuming a density of 1.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the inertia of a closed mesh.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a closed mesh.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedCenterOfMass``1(``0@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the center of mass of a closed mesh.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution from a single triangle.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <param name="mass">Mass of the triangle.</param>
+            <param name="inertiaTensor">Inertia tensor of the triangle.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleArea(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Computes the area of a triangle.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <returns>Area of the triangle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution from a single triangle assuming a density of 1.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <param name="area">Area of the triangle.</param>
+            <param name="inertiaTensor">Inertia tensor of the triangle assuming that the density is 1.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the inertia of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenCenterOfMass``1(``0@)">
+            <summary>
+            Computes the center of mass of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <returns>Center of mass of the mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.GetInertiaOffset(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes an offset for an inertia tensor based on an offset frame of reference.
+            </summary>
+            <param name="mass">Mass associated with the inertia tensor being moved.</param>
+            <param name="offset">Offset from the current inertia frame of reference to the new frame of reference.</param>
+            <param name="inertiaOffset">Modification to add to the inertia tensor to move it into the new reference frame.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.Capacity">
+            <summary>
+            Gets the number of shapes that the batch can currently hold without resizing.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.TypeId">
+            <summary>
+            Gets the type id of the shape type in this batch.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.Compound">
+            <summary>
+            Gets whether this shape batch's contained type potentially contains children that require other shape batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.ShapeDataSize">
+            <summary>
+            Gets the size of the shape type stored in this batch in bytes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.GetShapeData(System.Int32,System.Void*@,System.Int32@)">
+            <summary>
+            Gets a raw untyped pointer to a shape's data.
+            </summary>
+            <param name="shapeIndex">Index of the shape to look up.</param>
+            <param name="shapePointer">Pointer to the indexed shape data.</param>
+            <param name="shapeSize">Size of the shape data in bytes.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Clear">
+            <summary>
+            Frees all shape slots without returning any resources to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of the type batch if necessary to hold the target capacity.
+            </summary>
+            <param name="shapeCapacity">Target capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Resize(System.Int32)">
+            <summary>
+            Changes the size of the type batch if the target capacity is different than the current capacity. Note that shrinking allocations is conservative; resizing will
+            never allow an existing shape to point to unallocated memory.
+            </summary>
+            <param name="shapeCapacity">Target capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Dispose">
+            <summary>
+            Returns all backing resources to the pool, leaving the batch in an unusable state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.ResizeIdPool(System.Int32)">
+            <summary>
+            Shrinks or expands the allocation of the batch's id pool. Note that shrinking allocations is conservative; resizing will never allow any pending ids to be lost.
+            </summary>
+            <param name="targetIdCapacity">Number of slots to allocate space for in the id pool.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the shape associated with an index.
+            </summary>
+            <param name="shapeIndex">Index of the shape reference to retrieve.</param>
+            <returns>Reference to the shape at the given index.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IConvexShapeBatch">
+            <summary>
+            Defines a shape batch containing convex objects that support simple inertia calculations.
+            </summary>
+            <remarks>This interface gives compounds a way to compute inertia despite not having direct typed access to the child shapes.
+            It's a layer of overhead that can usually be avoided, but it's sometimes convenient to be able to just enumerate child inertias.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShapeBatch.ComputeInertia(System.Int32,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of a shape.
+            </summary>
+            <param name="shapeIndex">Index of the shape to compute the inertia of.</param>
+            <param name="mass">Mass to use to compute the inertia.</param>
+            <returns>Inertia of the shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.UpdateBounds(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box for a single shape.
+            </summary>
+            <param name="pose">Pose to calculate the bounding box of.</param>
+            <param name="shapeIndex">Index of the shape.</param>
+            <param name="bounds">Bounding box of the specified shape with the specified pose.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.UpdateBounds(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box for a single shape.
+            </summary>
+            <param name="position">Position of the shape.</param>
+            <param name="orientation">Orientation of the shape.</param>
+            <param name="shapeIndex">Index of the shape.</param>
+            <param name="bounds">Bounding box of the specified shape with the specified pose.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.RecursivelyRemoveAndDispose(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a shape and any existing children from the shapes collection and returns their resources to the given pool.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+            <param name="pool">Pool to return all shape resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.RemoveAndDispose(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a shape from the shapes collection and returns its resources to the given pool. Does not remove or dispose any children.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+            <param name="pool">Pool to return all shape resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Remove(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Removes a shape without removing its children or disposing any resources.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Clear">
+            <summary>
+            Clears all shapes from existing batches. Does not release any memory.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.EnsureBatchCapacities(System.Int32)">
+            <summary>
+            Ensures a minimum capacity for all existing shape batches.
+            </summary>
+            <param name="shapeCapacity">Capacity to ensure for all existing shape batches.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.ResizeBatches(System.Int32)">
+            <summary>
+            Resizes all existing batches for a target capacity. Note that this is conservative; it will never orphan an existing shape.
+            </summary>
+            <param name="shapeCapacity">Capacity to target for all existing shape batches.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Dispose">
+            <summary>
+            Releases all memory from existing batches. Leaves shapes set in an unusable state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Sphere.Radius">
+            <summary>
+            Radius of the sphere.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Sphere.#ctor(BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a sphere shape.
+            </summary>
+            <param name="radius">Radius of the sphere.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Sphere.Id">
+            <summary>
+            Type id of sphere shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Triangle">
+            <summary>
+            Collision shape representing an individual triangle. Triangle collisions and ray tests are one-sided; only tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates will generate contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.A">
+            <summary>
+            First vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.B">
+            <summary>
+            Second vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.C">
+            <summary>
+            Third vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Triangle.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a triangle shape.
+            </summary>
+            <param name="a">First vertex of the triangle in local space.</param>
+            <param name="b">Second vertex of the triangle in local space.</param>
+            <param name="c">Third vertex of the triangle in local space.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.Id">
+            <summary>
+            Type id of triangle shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TriangleWide.BackfaceNormalDotRejectionThreshold">
+            <summary>
+            Minimum dot product between the detected local normal and the face normal of a triangle necessary to create contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TriangleWide.DegenerateTriangleEpsilon">
+            <summary>
+            Epsilon to apply to testing triangles for degeneracy (which will be scaled by a pair-determined epsilon scale). Degenerate triangles do not have well defined normals and should not contribute 
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.TypedIndex">
+            <summary>
+            Represents an index with an associated type packed into a single integer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TypedIndex.Packed">
+            <summary>
+            Bit packed representation of the typed index.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Type">
+            <summary>
+            Gets the type index of the object.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Index">
+            <summary>
+            Gets the index of the object.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Exists">
+            <summary>
+            Gets whether this index actually refers to anything. The Type and Index should only be used if this is true.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BoundsContinuation.BodyIndex">
+            <summary>
+            Gets the index of the body associated with this continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BoundsContinuation.CompoundChild">
+            <summary>
+            Gets whether this continuation is associated with a compound's child.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundsContinuation.CreateContinuation(System.Int32)">
+            <summary>
+            Creates a bounding box calculation continuation for a given noncompound body.
+            </summary>
+            <param name="bodyIndex">Index of the body to set the bounding box of.</param>
+        </member>
+        <member name="M:BepuPhysics.BoundsContinuation.CreateCompoundChildContinuation(System.Int32)">
+            <summary>
+            Creates a bounding box calculation continuation for a given compound body.
+            </summary>
+            <param name="compoundBodyIndex">Index of the compound body to set the bounding box of.</param>
+        </member>
+        <member name="F:BepuPhysics.BoundingBoxBatcher.CollidablesPerFlush">
+            <summary>
+            The number of bodies to accumulate per type before executing an AABB update. The more bodies per batch, the less virtual overhead and execution divergence.
+            However, this should be kept low enough such that the data that has to be gathered by the bounding box update is still usually in L1.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.BroadPhase">
+            <summary>
+            Manages scene acceleration structures for collision detection and queries.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveLeaves">
+            <summary>
+            Collidable references contained within the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree"/>. Note that values at or beyond the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree"/>.LeafCount are not defined.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.StaticLeaves">
+            <summary>
+            Collidable references contained within the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree"/>. Note that values at or beyond <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree"/>.LeafCount are not defined.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.BroadPhase.Pool">
+            <summary>
+            Pool used by the broad phase.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree">
+            <summary>
+            Tree containing wakeful bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree">
+            <summary>
+            Tree containing sleeping bodies and statics.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetActiveBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets pointers to the leaf's bounds stored in the broad phase's active tree.
+            </summary>
+            <param name="index">Index of the active collidable to examine.</param>
+            <param name="minPointer">Pointer to the minimum bounds in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetStaticBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets pointers to the leaf's bounds stored in the broad phase's static tree.
+            </summary>
+            <param name="index">Index of the static to examine.</param>
+            <param name="minPointer">Pointer to the minimum bounds in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.UpdateActiveBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given active leaf index, refitting the tree to match.
+            </summary>
+            <param name="broadPhaseIndex">Index of the leaf to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.UpdateStaticBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given active leaf index, refitting the tree to match.
+            </summary>
+            <param name="broadPhaseIndex">Index of the leaf to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Clear">
+            <summary>
+            Clears out the broad phase's structures without releasing any resources.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.EnsureCapacity(System.Int32,System.Int32)">
+            <summary>
+            Ensures that the broad phase structures can hold at least the given number of leaves.
+            </summary>
+            <param name="activeCapacity">Number of leaves to allocate space for in the active tree.</param>
+            <param name="staticCapacity">Number of leaves to allocate space for in the static tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Resize(System.Int32,System.Int32)">
+            <summary>
+            Resizes the broad phase structures to hold the given number of leaves. Note that this is conservative; it will never orphan any existing leaves.
+            </summary>
+            <param name="activeCapacity">Number of leaves to allocate space for in the active tree.</param>
+            <param name="staticCapacity">Number of leaves to allocate space for in the static tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Dispose">
+            <summary>
+            Releases memory used by the broad phase. Leaves the broad phase unusable.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.RayCast``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@,System.Int32)">
+            <summary>
+            Finds any intersections between a ray and leaf bounding boxes.
+            </summary>
+            <typeparam name="TRayTester">Type of the callback to execute on ray-leaf bounding box intersections.</typeparam>
+            <param name="origin">Origin of the ray to cast.</param>
+            <param name="direction">Direction of the ray to cast.</param>
+            <param name="maximumT">Maximum length of the ray traversal in units of the direction's length.</param>
+            <param name="rayTester">Callback to execute on ray-leaf bounding box intersections.</param>
+            <param name="id">User specified id of the ray.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Sweep``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@)">
+            <summary>
+            Finds any intersections between a swept bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TSweepTester">Type of the callback to execute on sweep-leaf bounding box intersections.</typeparam>
+            <param name="min">Minimum bounds of the box to sweep.</param>
+            <param name="max">Maximum bounds of the box to sweep.</param>
+            <param name="direction">Direction along which to sweep the bounding box.</param>
+            <param name="maximumT">Maximum length of the sweep in units of the direction's length.</param>
+            <param name="sweepTester">Callback to execute on sweep-leaf bounding box intersections.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Sweep``1(BepuUtilities.BoundingBox@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@)">
+            <summary>
+            Finds any intersections between a swept bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TSweepTester">Type of the callback to execute on sweep-leaf bounding box intersections.</typeparam>
+            <param name="boundingBox">Bounding box to sweep.</param>
+            <param name="direction">Direction along which to sweep the bounding box.</param>
+            <param name="maximumT">Maximum length of the sweep in units of the direction's length.</param>
+            <param name="sweepTester">Callback to execute on sweep-leaf bounding box intersections.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetOverlaps``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,``0@)">
+            <summary>
+            Finds any overlaps between a bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TOverlapEnumerator">Type of the enumerator to call for overlaps.</typeparam>
+            <param name="min">Minimum bounds of the query box.</param>
+            <param name="max">Maximum bounds of the query box.</param>
+            <param name="overlapEnumerator">Enumerator to call for overlaps.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetOverlaps``1(BepuUtilities.BoundingBox@,``0@)">
+            <summary>
+            Finds any overlaps between a bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TOverlapEnumerator">Type of the enumerator to call for overlaps.</typeparam>
+            <param name="boundingBox">Query box bounds.</param>
+            <param name="overlapEnumerator">Enumerator to call for overlaps.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.IBroadPhaseSweepTester">
+            <summary>
+            Defines a type that can act as a callback for broad phase sweep tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionBatcher`1.Dt">
+            <summary>
+            Timestep duration used by pairs which rely on velocity to compute local bounding boxes for pruning.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.Flush">
+            <summary>
+            Forces any remaining partial batches to execute and disposes the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessConvexResult(BepuPhysics.CollisionDetection.ConvexContactManifold@,BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Reports the result of a convex collision test to the callbacks and, if necessary, to any continuations for postprocessing.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="manifold">Contacts detected for the pair.</param>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessEmptyResult(BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Reports the zero result of a convex collision test to the callbacks and, if necessary, to any continuations for postprocessing.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessUntestedSubpairConvexResult(BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Submits a subpair whose testing was blocked by user callback as complete to any relevant continuations.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ICollisionTestContinuation">
+            <summary>
+            Defines a type which includes information necessary to apply some form of post processing to a collision test result.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.Create(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a collision test continuation with the given number of slots for subpairs.
+            </summary>
+            <param name="slots">Number of subpair slots to include in the continuation.</param>
+            <param name="pool">Pool to take resources from.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.OnChildCompleted``1(BepuPhysics.CollisionDetection.PairContinuation@,BepuPhysics.CollisionDetection.ConvexContactManifold@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Handles what to do next when the child pair has finished execution and the resulting manifold is available.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="report">Continuation instance being considered.</param>
+            <param name="manifold">Contact manifold for the child pair.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.OnUntestedChildCompleted``1(BepuPhysics.CollisionDetection.PairContinuation@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Handles what to do next when the child pair was rejected for testing, and no manifold exists.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="report">Continuation instance being considered.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.TryFlush``1(System.Int32,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Checks if the parent pair is complete and should be flushed.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="pairId">Id of the pair to attempt to flush.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+            <returns>True if the pair was done and got flushed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionContinuationType">
+            <summary>
+            Describes the flow control to apply to a convex-convex pair report.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.Direct">
+            <summary>
+            Marks a pair as requiring no further processing before being reported to the user supplied continuations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.NonconvexReduction">
+            <summary>
+            Marks a pair as part of a set of a higher (potentially multi-manifold) pair, potentially requiring contact reduction.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.MeshReduction">
+            <summary>
+            Marks a pair as a part of a set of mesh-convex collisions, potentially requiring mesh boundary smoothing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.CompoundMeshReduction">
+            <summary>
+            Marks a pair as a part of a set of mesh-convex collisions spawned by a mesh-compound pair, potentially requiring mesh boundary smoothing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ChildIndexBits">
+            <summary>
+            Covers bits [0, 20) in the packed representation. Refers to the child pair index in a subtask generating collision task that generated this continuation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ContinuationIndexBits">
+            <summary>
+            Covers bits [20, 30) in the packed representation. Refers to the index of a subpair in a continuation processor.
+            Maximum number should be equal to the sum of the batch sizes subtask generating collision tasks, which as of this writing is 384, but we'll include a little buffer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ContinuationTypeBits">
+            <summary>
+            Covers bits [30, 32) in the packed representation. Refers to which continuation processor should be used for this subpair.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ICollisionCallbacks">
+            <summary>
+            Callbacks invoked by a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.OnPairCompleted``1(System.Int32,``0@)">
+            <summary>
+            Called when a pair submitted to a collision batcher has finished collision detection.
+            </summary>
+            <typeparam name="TManifold">Type of the contact manifold generated by collision detection.</typeparam>
+            <param name="pairId">Id of the pair that completed.</param>
+            <param name="manifold">Contact manifold generated by collision testing.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.OnChildPairCompleted(System.Int32,System.Int32,System.Int32,BepuPhysics.CollisionDetection.ConvexContactManifold@)">
+            <summary>
+            Provides control over subtask generated results before they are reported to the parent task.
+            </summary>
+            <param name="pairId">Id of the parent pair that spawned this child pair.</param>
+            <param name="childA">Index of the child belonging to collidable A in the subpair under consideration.</param>
+            <param name="childB">Index of the child belonging to collidable B in the subpair under consideration.</param>
+            <param name="manifold">Manifold of the child pair to configure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.AllowCollisionTesting(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Checks whether further collision testing should be performed for a given subtask.
+            </summary>
+            <param name="pairId">Id of the parent pair.</param>
+            <param name="childA">Index of the child belonging to collidable A in the subpair under consideration.</param>
+            <param name="childB">Index of the child belonging to collidable B in the subpair under consideration.</param>
+            <returns>True if testing should proceed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTask">
+            <summary>
+            Parent type of tasks which handle collision tests between batches of shapes of a particular type.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.BatchSize">
+            <summary>
+            Gets the number of tasks to batch together before executing this task.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.ShapeTypeIndexA">
+            <summary>
+            Gets the first shape type index associated with the task. Shape pairs provided to the task for execution should be in the order defined by these type two indices.
+            If a collision task isn't a top level shape pair task, this should be -1.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.ShapeTypeIndexB">
+            <summary>
+            Gets the second shape type index associated with the task. Shape pairs provided to the task for execution should be in the order defined by these type two indices.
+            If a collision task isn't a top level shape pair task, this should be -1.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.SubtaskGenerator">
+            <summary>
+            Gets whether the task is capable of generating subtasks. Note that subtask generators cannot generate subtasks that are themselves subtask generators.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.PairType">
+            <summary>
+            Gets the pair type that the ExecuteBatch call requires.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTask.ExecuteBatch``1(BepuPhysics.CollisionDetection.UntypedList@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Executes the task on the given input.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used to handle results of collision tasks.</typeparam>
+            <param name="batcher">Batcher responsible for the invocation.</param>
+            <param name="batch">Batch of pairs to test.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskPairType">
+            <summary>
+            Describes the data requirements for a collision pair type in a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.StandardPair">
+            <summary>
+            General pair for two shapes with full pose and flip mask, but no bounds related data.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.FliplessPair">
+            <summary>
+            Pair specialized for convex pairs between two shapes of the same type.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.SpherePair">
+            <summary>
+            Pair specialized for two spheres, requiring no flip mask or orientations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.SphereIncludingPair">
+            <summary>
+            Pair specialized for convex pairs that involve one sphere which requires no orientation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.BoundsTestedPair">
+            <summary>
+            Pair that requires computing local bounding boxes, and so requires extra information like velocity.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskReference">
+            <summary>
+            Metadata about a collision task.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.TaskIndex">
+            <summary>
+            Index of the task in the registry.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.BatchSize">
+            <summary>
+            Number of pairs to accumulate in a batch before dispatching tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.ExpectedFirstTypeId">
+            <summary>
+            The type id that is expected to come first in the collision pair.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.PairType">
+            <summary>
+            Data requirements for the collision pair type in a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskRegistry">
+            <summary>
+            Registry of collision tasks used to handle various shape pair types.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTaskRegistry.Item(System.Int32)">
+            <summary>
+            Gets the collision task associated with a task index.
+            </summary>
+            <param name="taskIndex">Task index to look up.</param>
+            <returns>Task associated with the task index.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.#ctor(System.Int32)">
+            <summary>
+            Creates a new collision task registry.
+            </summary>
+            <param name="initialShapeCount">Initial number of shape types to allocate space for in the registry.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.Register(BepuPhysics.CollisionDetection.CollisionTask)">
+            <summary>
+            Registers a collision task.
+            </summary>
+            <param name="task">Task to register.</param>
+            <returns>Index of the task in the registry.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.GetTaskReference(System.Int32,System.Int32)">
+            <summary>
+            Gets metadata about the task associated with a shape type pair.
+            </summary>
+            <param name="topLevelTypeA">Type index of the first shape.</param>
+            <param name="topLevelTypeB">Type index of the second shape.</param>
+            <returns>Reference to the metadata for the task.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.GetTaskReference``2">
+            <summary>
+            Gets metadata about the task associated with a shape type pair.
+            </summary>
+            <typeparam name="TShapeA">Type of the first shape.</typeparam>
+            <typeparam name="TShapeB">Type of the second shape.</typeparam>
+            <returns>Reference to the metadata for the task.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTasks.IPairTester`3.BatchSize">
+            <summary>
+            Gets the nubmer of pairs which would ideally be gathered together before executing a wide test.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTasks.ICollisionPair`1">
+            <summary>
+            Defines a type that holds scalar data for the collision batcher.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTasks.ICollisionPair`1.PairType">
+            <summary>
+            Gets the enumeration type associated with this pair type.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTasks.CollisionPair.FlipMask">
+            <summary>
+            Stores whether the types involved in pair require that the resulting contact manifold be flipped to be consistent with the user-requested pair order.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTasks.SphereIncludingPair.FlipMask">
+            <summary>
+            Stores whether the types involved in pair require that the resulting contact manifold be flipped to be consistent with the user-requested pair order.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTasks.BoundsTestedPair">
+            <summary>
+            Pair of objects awaiting collision processing that involves velocities for bounds calculation.
+            </summary>
+            <typeparam name="TA">Type of the first shape in the pair.</typeparam>
+            <typeparam name="TB">Type of the second shape in the pair.</typeparam>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConstraintRemover">
+            <summary>
+            Accumulates constraints to remove from multiple threads, and efficiently removes them all as a batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.CreateFlushJobs(System.Boolean)">
+            <summary>
+            Processes enqueued constraint removals and prepares removal jobs.
+            </summary>
+            <param name="deterministic">True if the constraint remover should maintain determinism at an added cost, false otherwise.</param>
+            <returns>The number of removal jobs created. To complete the jobs, execute RemoveConstraintsFromTypeBatch for every index from 0 to the returned job count.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.ReturnConstraintHandles">
+            <summary>
+            Returns the handles associated with all removed constraints to the solver's handle pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.MarkAffectedConstraintsAsRemovedFromSolver">
+            <summary>
+            For uses of the ConstraintRemover that fully remove a constraint from the simulation (rather than simply moving it somewhere else),
+            the handle->constraint mapping must be updated. This has to wait until after the multithreaded operations actually complete to avoid corrupting parallel operations.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ContactConstraintAccessor">
+            <summary>
+            Provides indirection for reading from and updating constraints in the narrow phase.
+            </summary>
+            <remarks>This, like many other similar constructions in the engine, could conceptually be replaced by static function pointers and a few supplementary data fields.
+            We probably will do exactly that at some point.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactData``1(BepuPhysics.ConstraintHandle,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintHandle">Handle of the contact constraint to extract.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactData``1(BepuPhysics.ConstraintLocation@,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintLocation">Location of the constraint in the solver.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactPrestepAndImpulses``1(BepuPhysics.ConstraintHandle,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintHandle">Handle of the contact constraint to extract.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactPrestepAndImpulses``1(BepuPhysics.ConstraintLocation@,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintLocation">Location of the constraint in the solver.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NonconvexContact">
+            <summary>
+            Information about a single contact in a nonconvex collidable pair.
+            Nonconvex pairs can have different surface bases at each contact point, since the contact surface is not guaranteed to be a plane.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Offset">
+            <summary>
+            Offset from the position of collidable A to the contact position. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Depth">
+            <summary>
+            Penetration depth between the two collidables at this contact. Negative values represent separation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Normal">
+            <summary>
+            Surface basis of the contact. If transformed into a rotation matrix, X and Z represent tangent directions and Y represents the contact normal. Points from collidable B to collidable A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.FeatureId">
+            <summary>
+            Id of the features involved in the collision that generated this contact. If a contact has the same feature id as in a previous frame, it is an indication that the
+            same parts of the shape contributed to its creation. This is useful for carrying information from frame to frame.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConvexContact">
+            <summary>
+            Information about a single contact in a convex collidable pair. Convex collidable pairs share one surface basis across the manifold, since the contact surface is guaranteed to be a plane.
+            </summary>    
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.Offset">
+            <summary>
+            Offset from the position of collidable A to the contact position. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.Depth">
+            <summary>
+            Penetration depth between the two collidables at this contact. Negative values represent separation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.FeatureId">
+            <summary>
+            Id of the features involved in the collision that generated this contact. If a contact has the same feature id as in a previous frame, it is an indication that the
+            same parts of the shape contributed to its creation. This is useful for carrying information from frame to frame.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.IContactManifold`1.Count">
+            <summary>
+            Gets the number of contacts in the manifold.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.IContactManifold`1.Convex">
+            <summary>
+            Gets whether the contact manifold was created by a pair of convex objects or not. True if convex, false if nonconvex.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetDepth(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetNormal(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's normal. Points from collidable B to collidable A. For convex manifolds that share a normal, all contact indices will simply return a reference to the manifold-wide normal.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's normal (or the manifold-wide normal in a convex manifold).</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetOffset(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetFeatureId(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NonconvexContactManifold">
+            <summary>
+            Contains the data associated with a nonconvex contact manifold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContactManifold.OffsetB">
+            <summary>
+            Offset from collidable A to collidable B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContactManifold.MaximumContactCount">
+            <summary>
+            The maximum number of contacts that can exist within a nonconvex manifold.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetDepth(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetNormal(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's normal. Points from collidable B to collidable A.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's normal.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetOffset(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetFeatureId(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConvexContactManifold">
+            <summary>
+            Contains the data associated with a convex contact manifold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContactManifold.OffsetB">
+            <summary>
+            Offset from collidable A to collidable B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContactManifold.Normal">
+            <summary>
+            Surface normal shared by all contacts. Points from collidable B to collidable A.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetDepth(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetNormal(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact manifold's normal. Points from collidable B to collidable A. Convex manifolds share a single normal across all contacts.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to the contact manifold's normal.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetOffset(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetFeatureId(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Index">
+            <summary>
+            Gets the index of the continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Type">
+            <summary>
+            Gets the type index of the continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Exists">
+            <summary>
+            Gets whether this index actually refers to anything. The Type and Index should only be used if this is true.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.DepthRefiner`6">
+            <summary>
+            Incrementally refines a sample direction to approach a local minimum depth between two convex bodies.
+            </summary>
+            <remarks>
+            The DepthRefiner implements a Tootbird search: an incremental algorithm that takes steps towards the Tootbird.
+            The Tootbird is the origin projected on the support plane of the best(lowest depth) support direction observed so far.
+            This uses a simplex that updates with rules similar to a simplified version of GJK.The Tootbird is definitionally not inside the minkowski sum.</remarks>
+            <typeparam name="TShapeA">Type of the first shape.</typeparam>
+            <typeparam name="TShapeWideA">SIMD type of the first shape.</typeparam>
+            <typeparam name="TSupportFinderA">Type providing support sampling for the first shape.</typeparam>
+            <typeparam name="TShapeB">Type of the second shape.</typeparam>
+            <typeparam name="TShapeWideB">SIMD type of the second shape.</typeparam>
+            <typeparam name="TSupportFinderB">Type providing support sampling for the second shape.</typeparam>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.PairMaterialProperties">
+            <summary>
+            Material properties governing the interaction between colliding bodies. Used by the narrow phase to create constraints of the appropriate configuration.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.FrictionCoefficient">
+            <summary>
+            Coefficient of friction to apply for the constraint. Maximum friction force will be equal to the normal force times the friction coefficient.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.MaximumRecoveryVelocity">
+            <summary>
+            Maximum relative velocity along the contact normal at which the collision constraint will recover from penetration. Clamps the velocity goal created from the spring settings.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.SpringSettings">
+            <summary>
+            Defines the constraint's penetration recovery spring properties.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairMaterialProperties.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Constructs a pair's material properties.
+            </summary>
+            <param name="frictionCoefficient">Coefficient of friction to apply for the constraint. Maximum friction force will be equal to the normal force times the friction coefficient.</param>
+            <param name="maximumRecoveryVelocity">Maximum relative velocity along the contact normal at which the collision constraint will recover from penetration. Clamps the velocity goal created from the spring settings. </param>
+            <param name="springSettings">Defines the constraint's penetration recovery spring properties.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks">
+            <summary>
+            Defines handlers for narrow phase events.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Performs any required initialization logic after the Simulation instance has been constructed.
+            </summary>
+            <param name="simulation">Simulation that owns these callbacks.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.AllowContactGeneration(System.Int32,BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableReference,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Chooses whether to allow contact generation to proceed for two overlapping collidables.
+            </summary>
+            <param name="workerIndex">Index of the worker that identified the overlap.</param>
+            <param name="a">Reference to the first collidable in the pair.</param>
+            <param name="b">Reference to the second collidable in the pair.</param>
+            <param name="speculativeMargin">Reference to the speculative margin used by the pair.
+            The value was already initialized by the narrowphase by examining the speculative margins of the involved collidables, but it can be modified.</param>
+            <returns>True if collision detection should proceed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.ConfigureContactManifold``1(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,``0@,BepuPhysics.CollisionDetection.PairMaterialProperties@)">
+            <summary>
+            Provides a notification that a manifold has been created for a pair. Offers an opportunity to change the manifold's details. 
+            </summary>
+            <param name="workerIndex">Index of the worker thread that created this manifold.</param>
+            <param name="pair">Pair of collidables that the manifold was detected between.</param>
+            <param name="manifold">Set of contacts detected between the collidables.</param>
+            <param name="pairMaterial">Material properties of the manifold.</param>
+            <returns>True if a constraint should be created for the manifold, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.AllowContactGeneration(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,System.Int32,System.Int32)">
+            <summary>
+            Chooses whether to allow contact generation to proceed for the children of two overlapping collidables in a compound-including pair.
+            </summary>
+            <param name="workerIndex">Index of the worker thread processing this pair.</param>
+            <param name="pair">Parent pair of the two child collidables.</param>
+            <param name="childIndexA">Index of the child of collidable A in the pair. If collidable A is not compound, then this is always 0.</param>
+            <param name="childIndexB">Index of the child of collidable B in the pair. If collidable B is not compound, then this is always 0.</param>
+            <returns>True if collision detection should proceed, false otherwise.</returns>
+            <remarks>This is called for each sub-overlap in a collidable pair involving compound collidables. If neither collidable in a pair is compound, this will not be called.
+            For compound-including pairs, if the earlier call to AllowContactGeneration returns false for owning pair, this will not be called. Note that it is possible
+            for this function to be called twice for the same subpair if the pair has continuous collision detection enabled; 
+            the CCD sweep test that runs before the contact generation test also asks before performing child pair tests.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.ConfigureContactManifold(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,System.Int32,System.Int32,BepuPhysics.CollisionDetection.ConvexContactManifold@)">
+            <summary>
+            Provides a notification that a manifold has been created between the children of two collidables in a compound-including pair.
+            Offers an opportunity to change the manifold's details. 
+            </summary>
+            <param name="workerIndex">Index of the worker thread that created this manifold.</param>
+            <param name="pair">Pair of collidables that the manifold was detected between.</param>
+            <param name="childIndexA">Index of the child of collidable A in the pair. If collidable A is not compound, then this is always 0.</param>
+            <param name="childIndexB">Index of the child of collidable B in the pair. If collidable B is not compound, then this is always 0.</param>
+            <param name="manifold">Set of contacts detected between the collidables.</param>
+            <returns>True if this manifold should be considered for the parent pair's contact manifold generation, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.Dispose">
+            <summary>
+            Releases any resources held by the callbacks. Called by the owning narrow phase when it is being disposed.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.ISupportFinder`2.HasMargin">
+            <summary>
+            Gets whether the support finder is sampling a shape with a spherical margin that should be applied after a solution is found for the core shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ISupportFinder`2.GetMargin(`1@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Margin associated with the shape according to this support finder.
+            </summary>
+            <param name="shape">Shape to find the margin of.</param>
+            <param name="margin">Margin of the shape.</param>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.FaceCollisionFlag">
+            <summary>
+            Flag used to mark a contact as being generated by the face of a triangle in its feature id.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.MinimumDotForFaceCollision">
+            <summary>
+            Minimum dot product between a triangle face and the contact normal for a collision to be considered a triangle face contact.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.Blocked">
+            <summary>
+            True if the manifold associated with this triangle has been blocked due to its detected infringement on another triangle, false otherwise.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.ForceDeletionOnBlock">
+            <summary>
+            True if the triangle did not act as a blocker for any other manifold and so can be removed if it is blocked, false otherwise.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.CorrectedNormal">
+            <summary>
+            Normal of a triangle detected as being infringed by the manifold associated with this triangle in mesh space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryGetContactConstraintAccessor(System.Int32,BepuPhysics.CollisionDetection.ContactConstraintAccessor@)">
+            <summary>
+            Looks up the contact constraint accessor for the given constraint type id if it exists.
+            </summary>
+            <param name="constraintTypeId">Constraint type id to look up a constraint accessor for.</param>
+            <param name="accessor">Accessor for the given type id.</param>
+            <returns>True if the constraint type id refers to a registered accessor, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryExtractSolverContactData``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Tries to extract contact prestep, impulse, and body reference data from the given handle. If it's not a contact constraint, returns false.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor used to collect contact data from the solver.</typeparam>
+            <param name="constraintHandle">Constraint to try to extract data from.</param>
+            <param name="extractor">Extractor used to collect contact data from the solver.</param>
+            <returns>True if the constraint was a contact type, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryExtractSolverContactPrestepAndImpulses``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Tries to extract prestep and impulse contact data from the given handle. If it's not a contact constraint, returns false.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor used to collect contact data from the solver.</typeparam>
+            <param name="constraintHandle">Constraint to try to extract data from.</param>
+            <param name="extractor">Extractor used to collect contact data from the solver.</param>
+            <returns>True if the constraint was a contact type, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.IsContactConstraintType(System.Int32)">
+            <summary>
+            Gets whether a constraint type id maps to a contact constraint.
+            </summary>
+            <param name="constraintTypeId">Id of the constraint to check.</param>
+            <returns>True if the type id refers to a contact constraint. False otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.SortCollidableReferencesForPair(BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableMobility@,BepuPhysics.Collidables.CollidableMobility@,BepuPhysics.Collidables.CollidableReference@,BepuPhysics.Collidables.CollidableReference@)">
+            <summary>
+            Sorts references to guarantee that two collidables in the same pair will always be in the same order.
+            </summary>
+            <param name="a">First collidable reference to sort.</param>
+            <param name="b">First collidable reference to sort.</param>
+            <param name="aMobility">Mobility extracted from collidable A.</param>
+            <param name="bMobility">Mobility extracted from collidable B.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NarrowPhase`1">
+            <summary>
+            Turns broad phase overlaps into contact manifolds and uses them to manage constraints in the solver.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks to use.</typeparam>
+            <summary>
+            When notified of a new constraint, immediately adds it to the solver.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NarrowPhase`1.ConstraintGeneratorType.Discrete">
+            <summary>
+            Pair which will directly produce constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NarrowPhase`1.ConstraintGeneratorType.Continuous">
+            <summary>
+            Pair which samples a swept location for contacts and needs to be rewound to compute proper speculative depths in a post process.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase`1.PendingConstraintAddCache.FlushSequentially(BepuPhysics.Simulation,BepuPhysics.CollisionDetection.PairCache)">
+            <summary>
+            Flushes pending constraints into the simulation without any form of synchronization. Adds occur in the order of manifold generation.
+            If the contact manifold generation is deterministic, then the result of this add will be deterministic.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase`1.PendingConstraintAddCache.FlushWithSpeculativeBatches(BepuPhysics.Simulation,BepuPhysics.CollisionDetection.PairCache@)">
+            <summary>
+            Flushes pending constraints into the simulation without any form of synchronization. Adds occur in the order of manifold generation.
+            If the contact manifold generation is deterministic, then the result of this add will be deterministic.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.TwoBodyHandles">
+            <summary>
+            Associated with a pair of two collidables that each are controlled by bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.AwakenerPhaseOne">
+            <summary>
+            Phase one job in the awakener. JobIndex used to identify sub-job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.SortContactConstraintType">
+            <summary>
+            Sorts the constraints of a single type across all workers. Used by deterministic preflushes to schedule adds.
+            Accesses no buffer pools; memory is allocated and returned on main thread.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.SpeculativeConstraintBatchSearch">
+            <summary>
+            Identifies a first guess at the constraint batch to which every new constraint should be added to. 
+            Accesses no buffer pools; memory is allocated and returned on main thread.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.DeterministicConstraintAdd">
+            <summary>
+            Adds constraints to the solver and constraint graph in an order determined by the previous sorts and with the help of the speculatively computed batch targets. Locally sequential.
+            Accesses main thread buffer pool when type batches are created or resized.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.NondeterministicConstraintAdd">
+            <summary>
+            Adds constraints to the solver and constraint graph in an order determined by the collision detection phase. If the collision detection phase is nondeterministic due to threading, then 
+            this will result in nondeterministic adds to the solver.
+            Accesses main thread buffer pool when type batches are created or resized.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.AwakenerPhaseTwo">
+            <summary>
+            Phase two job in the awakener. JobIndex used to identify sub-job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.CheckFreshness">
+            <summary>
+            Check the freshness bytes in a region to remove stale pairs.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.Start">
+            <summary>
+            Start region of a CheckFreshness or SpeculativeConstraintBatchSearch job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.End">
+            <summary>
+            End region of a CheckFreshness or SpeculativeConstraintBatchSearch job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.TypeIndex">
+            <summary>
+            Narrow phase constraint type index targeted by a SpeculativeConstraintBatchSearch or SortContactConstraintType.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.WorkerIndex">
+            <summary>
+            Index of the worker in which a range of constraints starts. 
+            Used by SpeculativeConstraintBatchSearch.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.WorkerCount">
+            <summary>
+            Number of worker threads containing constraints to read in the SortContactConstraintType and NondeterministicConstraintAdd tasks.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.JobIndex">
+            <summary>
+            Index of the job. Used by AwakenerPhaseOne and AwakenerPhaseTwo tasks.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexReductionChild.OffsetA">
+            <summary>
+            Offset from the origin of the first shape's parent to the child's location in world space. If there is no parent, this is the zero vector.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexReductionChild.OffsetB">
+            <summary>
+            Offset from the origin of the second shape's parent to the child's location in world space. If there is no parent, this is the zero vector.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.PairCacheChangeIndex">
+            <summary>
+            Refers to a change in a <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCacheChangeIndex.WorkerIndex">
+            <summary>
+            Index of the <see cref="T:BepuPhysics.CollisionDetection.WorkerPendingPairChanges"/> storing the pending change, if any. If -1, then this pair cache change refers to a change directly to the mapping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCacheChangeIndex.Index">
+            <summary>
+            Index of the change in the cache. For pending changes, refers to the index within the pending cache; for a direct mapping changes, refers to the pair index.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.PairCacheChangeIndex.IsPending">
+            <summary>
+            Gets whether this change is in the <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConstraintCache">
+            <summary>
+            Stores information about a contact constraint from the previous timestep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.ConstraintHandle">
+            <summary>
+            Handle of the contact constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId0">
+            <summary>
+            Feature id of the first contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId1">
+            <summary>
+            Feature id of the second contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId2">
+            <summary>
+            Feature id of the third contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId3">
+            <summary>
+            Feature id of the fourth contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCache.PairFreshness">
+            <summary>
+            Per-pair 'freshness' flags set when a pair is added or updated by the narrow phase execution. Only initialized for the duration of the narrowphase's execution.
+            </summary>
+            <remarks>
+            This stores one byte per pair. While it could be compressed to 1 bit, that requires manually ensuring thread safety. By using bytes, we rely on the 
+            atomic setting behavior for data types no larger than the native pointer size. Further, smaller sizes actually pay a higher price in terms of increased false sharing.
+            Choice of data type is a balancing act between the memory bandwidth of the post analysis and the frequency of false sharing.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairCache.PrepareFlushJobs(BepuUtilities.Collections.QuickList{BepuPhysics.CollisionDetection.NarrowPhaseFlushJob}@)">
+            <summary>
+            Flush all deferred changes from the last narrow phase execution.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairCache.CompleteConstraintAdd``1(BepuPhysics.CollisionDetection.NarrowPhase,BepuPhysics.Solver,``0@,BepuPhysics.CollisionDetection.PairCacheChangeIndex,BepuPhysics.ConstraintHandle,BepuPhysics.CollisionDetection.CollidablePair@)">
+            <summary>
+            Completes the addition of a constraint by filling in the narrowphase's pointer to the constraint and by distributing accumulated impulses.
+            </summary>
+            <typeparam name="TContactImpulses">Count-specialized type containing cached accumulated impulses.</typeparam>
+            <param name="narrowPhase">Narrow phase that triggered the constraint add.</param>
+            <param name="solver">Solver containing the constraint to set the impulses of.</param>
+            <param name="impulses">Warm starting impulses to apply to the contact constraint.</param>
+            <param name="pairCacheChangeIndex">Index of the change associated with this constraint in the <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>.</param>
+            <param name="constraintHandle">Constraint handle associated with the constraint cache being updated.</param>
+            <param name="pair">Collidable pair associated with the new constraint.</param>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCache.ConstraintHandleToPair">
+            <summary>
+            Mapping from constraint handle back to collision detection pair cache locations.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1">
+            <summary>
+            Helps test the broad phase's active and static trees with a custom leaf tester.
+            </summary>
+            <typeparam name="TRayTester">Type used to test rays against leaves.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.CollisionDetection.BroadPhase,`0,System.Int32)">
+            <summary>
+            Constructs a ray batcher for the broad phase and initializes its backing resources.
+            </summary>
+            <param name="pool">Pool to pull resources from.</param>
+            <param name="broadPhase">Broad phase to be tested.</param>
+            <param name="rayTester">Ray tester used to test leaves found by the broad phase tree traversals.</param>
+            <param name="batcherRayCapacity">Maximum number of rays to execute in each traversal.
+            This should typically be chosen as the highest value which avoids spilling data out of L2 cache.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher to test against the broad phase trees.
+            If the underlying ray batcher hits its maximum capacity, all the accumulated rays will be tested against the broad phase trees and the accumulator will be reset.
+            </summary>
+            <param name="origin">Origin of the ray to test against the tree.</param>
+            <param name="direction">Direction of the ray to test against the tree.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Leaf tests will have access to the id.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Flush">
+            <summary>
+            Tests any accumulated rays against the broad phase trees and then resets the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Dispose">
+            <summary>
+            Disposes the underlying batcher resources.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.SimulationRayBatcher`1">
+            <summary>
+            Tests batches of rays against the simulation.
+            </summary>
+            <typeparam name="TRayHitHandler">Type used to handle hits against objects in the simulation.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.SimulationRayBatcher`1.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher to test against the simulation.
+            If the underlying ray batcher hits its maximum capacity, all the accumulated rays will be tested against the simulation and the accumulator will be reset.
+            </summary>
+            <param name="origin">Origin of the ray to test against the simulation.</param>
+            <param name="direction">Direction of the ray to test against the simulation.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Callbacks will have access to the id.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.SimulationRayBatcher`1.Flush">
+            <summary>
+            Tests any accumulated rays against the broad phase trees and then resets the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ISweepFilter.AllowTest(System.Int32,System.Int32)">
+            <summary>
+            Checks whether a swept test should be performed for children of swept shapes.
+            </summary>
+            <param name="childA">Index of the child belonging to collidable A.</param>
+            <param name="childB">Index of the child belonging to collidable B.</param>
+            <returns>True if testing should proceed, false otherwise.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.SweepTask.ShapeTypeIndexA">
+            <summary>
+            Gets the first shape type index associated with the task.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.SweepTask.ShapeTypeIndexB">
+            <summary>
+            Gets the second shape type index associated with the task.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.UntypedList.Allocate(System.Int32,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates an element in the list, initializing the backing buffer if needed.
+            </summary>
+            <param name="elementSizeInBytes">Number of bytes per element.</param>
+            <param name="minimumElementCount">Minimum size of the backing buffer to create if this is a new allocation.</param>
+            <param name="pool">Pool to pull allocations from.</param>
+            <returns>Index of the element in bytes within the list's buffer.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.WideRayTester">
+            <summary>
+            Helper class for creating runtime specialized vectorized ray intersection tests with shapes that support broadcasting.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.WorkerPendingPairChanges">
+            <summary>
+            Contains the pending pair cache changes created by a single worker during the last execution of narrow phase pair processing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.WorkerPendingPairChanges.PendingAdds">
+            <summary>
+            The set of pair-pointer associations created by this worker that should be added to the pair mapping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.WorkerPendingPairChanges.PendingRemoves">
+            <summary>
+            The set of pairs to remove from the pair cache generated by the worker.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintBatch">
+            <summary>
+            Contains a set of type batches whose constraints share no body references.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.GetTypeBatch(System.Int32)">
+            <summary>
+            Gets a type batch in the batch matching the given type id.
+            Requires that there exists at least one constraint in the type batch.
+            </summary>
+            <param name="typeId">Id of the TypeBatch's type to retrieve.</param>
+            <returns>TypeBatch instance associated with the given type.</returns>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.GetTypeBatchPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the type batch in the batch matching the given type id.
+            Requires that there exists at least one constraint in the type batch.
+            </summary>
+            <param name="typeId">Id of the TypeBatch's type to retrieve.</param>
+            <returns>TypeBatch instance associated with the given type.</returns>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.EnsureTypeBatchCapacities(BepuPhysics.Solver)">
+            <summary>
+            Ensures that all type batches within this constraint batch meet or exceed the size requirements of the per-type capacities defined by the solver.
+            </summary>
+            <param name="solver">Solver to pull minimum capacities from.</param>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.ResizeTypeBatchCapacities(BepuPhysics.Solver)">
+            <summary>
+            Applies the solver-defined minimum capacities to existing type batches.
+            </summary>
+            <param name="solver">Solver to pull minimum capacities from.</param>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Releases all memory used by the batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintLocation">
+            <summary>
+            Location in memory where a constraint is stored.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.SetIndex">
+            <summary>
+            Index of the constraint set that owns the constraint. If zero, the constraint is attached to bodies that are awake.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.BatchIndex">
+            <summary>
+            Index of the constraint batch the constraint belongs to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.TypeId">
+            <summary>
+            Type id of the constraint. Used to look up the type batch index in a constraint batch's type id to type batch index table.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.IndexInTypeBatch">
+            <summary>
+            Index of the constraint in a type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintReference">
+            <summary>
+            Reference to a constraint's memory location in the solver.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintReference.TypeBatch">
+            <summary>
+            Gets a reference to the type batch holding the constraint.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintReference.IndexInTypeBatch">
+            <summary>
+            Index in the type batch where the constraint is allocated.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ConstraintReference.#ctor(BepuPhysics.Constraints.TypeBatch*,System.Int32)">
+            <summary>
+            Creates a new constraint reference from a constraint memory location.
+            </summary>
+            <param name="typeBatchPointer">Pointer to the type batch where the constraint lives.</param>
+            <param name="indexInTypeBatch">Index in the type batch where the constraint is allocated.</param>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.BundleCount">
+            <summary>
+            Gets the total number of bundles across all types and batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.ConstraintCount">
+            <summary>
+            Gets the total number of bundles across all types and batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.Allocated">
+            <summary>
+            Gets whether this constraint set is allocated. 
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularAxisGearMotor">
+            <summary>
+            Constrains body B's angular velocity around an axis anchored to body A to equal body A's velocity around that axis with a scaling factor applied.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.LocalAxisA">
+            <summary>
+            Axis of rotation in body A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.VelocityScale">
+            <summary>
+            <para>Scale to apply to body A's velocity around the axis to get body B's target velocity.</para>
+            <para>In other words, a VelocityScale of 2 means that body A could have a velocity of 3 while body B has a velocity of 6.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularAxisMotor">
+            <summary>
+            Constrains the relative angular velocity of two bodies around a local axis attached to body A to a target velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.LocalAxisA">
+            <summary>
+            Axis of rotation in body A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.TargetVelocity">
+            <summary>
+            Target relative angular velocity around the axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularHinge">
+            <summary>
+            Angular component of a hinge. Constrains the angular degrees of freedom of two bodies such that they can only rotate relative to each other around the hinge's axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.LocalHingeAxisA">
+            <summary>
+            Hinge axis in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularMotor">
+            <summary>
+            Constrains the relative angular velocity between two bodies to a target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularMotor.TargetVelocityLocalA">
+            <summary>
+            Target relative angular velocity between A and B, stored in A's local space. Target world space angular velocity of B is AngularVelocityA + TargetVelocityLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularServo">
+            <summary>
+            Constrains two bodies to have a target relative rotation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.TargetRelativeRotationLocalA">
+            <summary>
+            The target relative rotation from body A to body B in body A's local space. The constraint tries to maintain OrientationB = TargetRelativeRotationLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularSwivelHinge">
+            <summary>
+            Constrains two bodies with the angular component of a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.LocalSwivelAxisA">
+            <summary>
+            Swivel axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AreaConstraint">
+            <summary>
+            Constrains the area of a triangle connecting the centers of three bodies to match a goal area. 
+            Scaled volume computed from ||ab x ac||.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AreaConstraint.TargetScaledArea">
+            <summary>
+            2 times the target area of the triangle. Computed from ||ab x ac||.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AreaConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.AreaConstraint.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Creates a new area constraint, initializing the target area using a set of initial positions.
+            </summary>
+            <param name="a">Initial position of the first body.</param>
+            <param name="b">Initial position of the second body.</param>
+            <param name="c">Initial position of the third body.</param>
+            <param name="springSettings">Spring settings to apply to the volume constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AreaConstraintTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of area constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocket">
+            <summary>
+            Constrains a point on one body to a point on another body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.LocalOffsetA">
+            <summary>
+            Offset from the center of body A to its attachment in A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.LocalOffsetB">
+            <summary>
+            Offset from the center of body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketMotor">
+            <summary>
+            Controls the relative linear velocity from the center of body A to an attachment point on body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.LocalOffsetB">
+            <summary>
+            Offset from body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.TargetVelocityLocalA">
+            <summary>
+            Target relative linear velocity between A and B, stored in A's local space. Target world space linear velocity of B is LinearVelocityA + TargetVelocityLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketMotorTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket motor constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketServo">
+            <summary>
+            Constrains a point on one body to a point on another body.
+            Provides speed and force configuration that the BallSocket joint does not.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.LocalOffsetA">
+            <summary>
+            Offset from the center of body A to its attachment in A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.LocalOffsetB">
+            <summary>
+            Offset from the center of body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketServoTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket servo constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketShared">
+            <summary>
+            Provides shared functionality for constraints with jacobians similar to the BallSocket.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceConstraint">
+            <summary>
+            Constrains the center of two bodies to be separated by a goal distance.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceConstraint.TargetDistance">
+            <summary>
+            Target distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceLimit">
+            <summary>
+            Constrains the center of two bodies to be separated by a distance within a range.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.MinimumDistance">
+            <summary>
+            Minimum distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.MaximumDistance">
+            <summary>
+            Maximum distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceLimitTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsFiniteNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite number- neither infinite nor NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is neither infinite nor NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsPositiveNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value greater than zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number greater than zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNonnegativeNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value greater than or equal to zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number greater than or equal to zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNegativeNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value less than zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number less than zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNonpositiveNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value less than or equal to zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number less than or equal to zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact1OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 1-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact1TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 1-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor">
+            <summary>
+            Callbacks for direct references to the solver's contact constraint data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.ConvexOneBody``2(BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a convex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandle">Body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.ConvexTwoBody``2(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a convex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandleA">First body handle referenced by the constraint.</param>
+            <param name="bodyHandleB">Second body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.NonconvexOneBody``2(BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandle">Body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.NonconvexTwoBody``2(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandleA">First body handle referenced by the constraint.</param>
+            <param name="bodyHandleB">Second body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor">
+            <summary>
+            Callbacks for direct references to the solver's contact constraint data. Includes only prestep and impulse data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.ConvexOneBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a convex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.ConvexTwoBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a convex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.NonconvexOneBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.NonconvexTwoBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TangentFriction">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TangentFriction.ApplyImpulse(BepuPhysics.Constraints.Contact.TangentFriction.Jacobians@,BepuPhysics.BodyInertiaWide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Vector2Wide@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TangentFrictionOneBody">
+            <summary>
+            Handles the tangent friction implementation for one body contact constraints.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TangentFrictionOneBody.ApplyImpulse(BepuPhysics.Constraints.Contact.TangentFrictionOneBody.Jacobians@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Vector2Wide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TwistFriction">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TwistFriction.ApplyImpulse(BepuUtilities.Vector3Wide@,BepuPhysics.BodyInertiaWide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TwistFrictionOneBody">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TwistFrictionOneBody.ApplyImpulse(BepuUtilities.Vector3Wide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceLimit">
+            <summary>
+            Constrains points on two bodies to be separated by a distance within a range.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.MinimumDistance">
+            <summary>
+            Minimum distance permitted between the point on A and the point on B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.MaximumDistance">
+            <summary>
+            Maximum distance permitted between the point on A and the point on B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.DistanceLimit.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings@)">
+            <summary>
+            Creates a distance limit description.
+            </summary>
+            <param name="localOffsetA">Local offset from the center of body A to its attachment point.</param>
+            <param name="localOffsetB">Local offset from the center of body B to its attachment point.</param>
+            <param name="minimumDistance">Minimum distance permitted between the point on A and the point on B.</param>
+            <param name="maximumDistance">Maximum distance permitted between the point on A and the point on B.</param>
+            <param name="springSettings">Spring frequency and damping parameters.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceLimitTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceServo">
+            <summary>
+            Constrains points on two bodies to be separated by a goal distance.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.TargetDistance">
+            <summary>
+            Distance that the constraint will try to reach between the attachment points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.DistanceServo.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings@,BepuPhysics.Constraints.ServoSettings@)">
+            <summary>
+            Creates a distance servo description.
+            </summary>
+            <param name="localOffsetA">Local offset from the center of body A to its attachment point.</param>
+            <param name="localOffsetB">Local offset from the center of body B to its attachment point.</param>
+            <param name="targetDistance">Distance that the constraint will try to reach between the attachment points.</param>
+            <param name="springSettings">Spring frequency and damping parameters.</param>
+            <param name="servoSettings">Servo control parameters.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceServoTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.FourBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IFourBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a four body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IFourBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.FourBodyTypeProcessor`11">
+            <summary>
+            Shared implementation across all four body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Hinge">
+            <summary>
+            Constrains two bodies with a hinge. Equivalent to a BallSocket constraint and an AngularHinge constraint solved together.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalHingeAxisA">
+            <summary>
+            Hinge axis in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBatchIntegrationMode">
+            <summary>
+            Marks a type as determining the integration mode for a solver batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldAlwaysIntegrate">
+            <summary>
+            The batch was determined to have only constraints with integration responsibilities, so there's no need to check.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldNeverIntegrate">
+            <summary>
+            The batch was determined to have no constraints with integration responsibilities, so there's no need to check.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldConditionallyIntegrate">
+            <summary>
+            The batch was determined to have some constraints with integration responsibilities.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBatchPoseIntegrationAllowed">
+            <summary>
+            Marks a type as determining whether pose integration should be performed on bodies within the constraint batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AllowPoseIntegration">
+            <summary>
+            Marks a batch as integrating poses for any bodies with integration responsibility within the constraint batch.
+            Constraints which need to be updated in response to pose integration will also have their UpdateForNewPose function called.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DisallowPoseIntegration">
+            <summary>
+            Marks a batch as not integrating poses for any bodies within the constraint batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBodyAccessFilter">
+            <summary>
+            Constrains which body properties should be accessed in a body during constraint data gathering/scattering.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherPosition">
+            <summary>
+            Gets whether position is loaded by the constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherOrientation">
+            <summary>
+            Gets whether orientation is loaded by the constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherMass">
+            <summary>
+            Gets whether body mass is loaded by this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherInertiaTensor">
+            <summary>
+            Gets whether body inertia tensor is loaded by this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.AccessLinearVelocity">
+            <summary>
+            Gets whether to load or store body linear velocity in this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.AccessAngularVelocity">
+            <summary>
+            Gets whether to load or store body linear velocity in this constraint.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AccessAll">
+            <summary>
+            Marks all body properties as necessary for gather/scatter.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AccessNoInertia">
+            <summary>
+            Used for kinematic integration; the inertias are known ahead of time and there's no reason to gather them.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IConstraintDescription`1">
+            <summary>
+            Marks a type as a description of a constraint associated with a particular batch.
+            </summary>
+            <remarks>
+            Note that one batch may have multiple description types associated with it, each one potentially offering a different subset of properties or translation logic.
+            </remarks>
+            <typeparam name="TDescription">Type of the description object.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.ApplyDescription(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32)">
+            <summary>
+            Changes the batch-held memory at a given location to match the given description.
+            </summary>
+            <param name="batch">Batch to modify.</param>
+            <param name="bundleIndex">Index of the target constraint's bundle.</param>
+            <param name="innerIndex">Index of the target constraint within its bundle.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.BuildDescription(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,`0@)">
+            <summary>
+            Creates a description from the batch-held memory at a given location.
+            </summary>
+            <param name="batch">Batch to read.</param>
+            <param name="bundleIndex">Index of the source constraint's bundle.</param>
+            <param name="innerIndex">Index of the source constraint within its bundle.</param>
+            <param name="description">Description of the constraint.</param>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IConstraintDescription`1.ConstraintTypeId">
+            <summary>
+            Gets the type id of the constraint that this is a description of.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IConstraintDescription`1.TypeProcessorType">
+            <summary>
+            Gets the type of the type batch which contains described constraints.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.CreateTypeProcessor">
+            <summary>
+            Creates a type processor for this constraint type.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IOneBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a one body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ITwoBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a two body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IThreeBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a three body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IFourBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a four body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Inequality2Body1DOF.ApplyImpulse(BepuPhysics.Constraints.Projection2Body1DOF@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisLimit">
+            <summary>
+            Constrains points on two bodies to a range of offsets from each other along a direction anchored to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalAxis">
+            <summary>
+            Direction of the motorized axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.MinimumOffset">
+            <summary>
+            Minimum offset along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.MaximumOffset">
+            <summary>
+            Maximum offset along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisMotor">
+            <summary>
+            Constrains points on two bodies to move relative to each other along a direction.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalAxis">
+            <summary>
+            Direction of the motorized axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.TargetVelocity">
+            <summary>
+            Target relative velocity along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisServo">
+            <summary>
+            Constrains points on two bodies to be on a plane defined in the local space of one of the bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalPlaneNormal">
+            <summary>
+            Direction of the plane normal in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.TargetOffset">
+            <summary>
+            Target offset from A's plane anchor to B's anchor along the plane normal.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.MotorSettings">
+            <summary>
+            Defines some of the shared behavior across motor constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.MotorSettings.MaximumForce">
+            <summary>
+            Maximum amount of force the motor can apply in one unit of time.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.MotorSettings.Damping">
+            <summary>
+            Mass-scaled damping constant. If you want to simulate a viscous damping coefficient of D with an object of mass M, set this damping value to D / M.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.MotorSettings.Softness">
+            <summary>
+            Gets or sets how soft the constraint is. Values range from 0 to infinity. Softness is inverse damping; 0 is perfectly rigid, 1 is very soft, Number.MaxValue is effectively nonexistent.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.MotorSettings.Validate(BepuPhysics.Constraints.MotorSettings@)">
+            <summary>
+            Checks if a settings instance has valid nonnegative values.
+            </summary>
+            <param name="settings">Instance to examine.</param>
+            <returns>True if the settings are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.MotorSettings.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Defines settings for a motor constraint.
+            </summary>
+            <param name="maximumForce">Maximum amount of force the motor can apply in one unit of time.</param>
+            <param name="softness">Gets or sets how soft the constraint is. Values range from 0 to infinity. Softness is inverse damping; 0 is perfectly rigid, 1 is very soft, Number.MaxValue is effectively nonexistent.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyAngularMotor">
+            <summary>
+            Constrains the angular velocity of one body to the target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularMotor.TargetVelocity">
+            <summary>
+            Target angular velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyAngularServo">
+            <summary>
+            Constrains a single body to a target orientation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.TargetOrientation">
+            <summary>
+            Target orientation of the constraint.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyLinearMotor">
+            <summary>
+            Constrains a point on a body to have a target linear velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.LocalOffset">
+            <summary>
+            Offset to the attachment point in the local space of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.TargetVelocity">
+            <summary>
+            Target velocity of the attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyLinearServo">
+            <summary>
+            Constrains a point on a body to a target location.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.LocalOffset">
+            <summary>
+            Offset to the attachment point in the local space of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.Target">
+            <summary>
+            Target position.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IOneBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IOneBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyTypeProcessor`5">
+            <summary>
+            Shared implementation across all one body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.PointOnLineServo">
+            <summary>
+            Constrains a point on body B to be on a line attached to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalDirection">
+            <summary>
+            Direction of the line in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.ServoSettings.Default">
+            <summary>
+            Gets settings representing a servo with unlimited force, speed, and no base speed.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ServoSettings.Validate(BepuPhysics.Constraints.ServoSettings@)">
+            <summary>
+            Checks servo settings to ensure valid values.
+            </summary>
+            <param name="settings">Settings to check.</param>
+            <returns>True if the settings contain valid values, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettingsWide.ComputeSpringiness(BepuPhysics.Constraints.SpringSettingsWide@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes springiness values for a set of constraints.
+            </summary>
+            <param name="settings">Spring settings associated with the constraints.</param>
+            <param name="dt">Duration of the time step.</param>
+            <param name="positionErrorToVelocity">The multiplier applied to error to get bias velocity.</param>
+            <param name="effectiveMassCFMScale">Scaling factor to apply to the effective mass to get the softened effective mass.</param>
+            <param name="softnessImpulseScale">Scaling factor to apply to the accumulated impulse during the solve to soften the target velocity.</param>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SpringSettings.AngularFrequency">
+            <summary>
+            Target number of undamped oscillations per unit of time, scaled by 2 * PI.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SpringSettings.TwiceDampingRatio">
+            <summary>
+            Twice the ratio of the spring's actual damping to its critical damping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SpringSettings.Frequency">
+            <summary>
+            Gets or sets the target number of undamped oscillations per unit of time.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SpringSettings.DampingRatio">
+            <summary>
+            Gets or sets the ratio of the spring's actual damping to its critical damping. 0 is undamped, 1 is critically damped, and higher values are overdamped.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettings.Validate(BepuPhysics.Constraints.SpringSettings@)">
+            <summary>
+            Checks if a spring settings instance contains valid values.
+            </summary>
+            <param name="springSettings">Settings to check.</param>
+            <returns>True if the spring settings are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettings.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new spring settings instance.
+            </summary>
+            <param name="frequency">Target number of undamped oscillations per unit of time.</param>
+            <param name="dampingRatio">Ratio of the spring's actual damping to its critical damping. 0 is undamped, 1 is critically damped, and higher values are overdamped.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.SwingLimit">
+            <summary>
+            Restricts axes attached to two bodies to fall within a maximum swing angle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.AxisLocalA">
+            <summary>
+            Axis attached to body A in its local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.AxisLocalB">
+            <summary>
+            Axis attached to body B in its local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.MinimumDot">
+            <summary>
+            Minimum dot product between the world space A and B axes that the constraint attempts to maintain.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SwingLimit.MaximumSwingAngle">
+            <summary>
+            Gets or sets the maximum swing angle that the constraint allows between world axis A and B. Based on the MinimumDot field.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.SwivelHinge">
+            <summary>
+            Constrains two bodies with a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen. Equivalent to a BallSocket constraint and an AngularSwivelHinge constraint solved together.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalSwivelAxisA">
+            <summary>
+            Swivel axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ThreeBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IThreeBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a three body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IThreeBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ThreeBodyTypeProcessor`9">
+            <summary>
+            Shared implementation across all three body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistLimit">
+            <summary>
+            Constrains two bodies' rotations around attached twist axes to a range of permitted twist angles.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.LocalBasisA">
+            <summary>
+            Local space basis attached to body A against which to measure body B's transformed axis. Expressed as a 3x3 rotation matrix, the X axis corresponds with 0 degrees, 
+            the Y axis corresponds to 90 degrees, and the Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.LocalBasisB">
+            <summary>
+            Local space basis attached to body B that will be measured against body A's basis.
+            Expressed as a 3x3 rotation matrix, the transformed X axis will be measured against A's X and Y axes. The Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.MinimumAngle">
+            <summary>
+            Minimum angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.MaximumAngle">
+            <summary>
+            Maximum angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistMotor">
+            <summary>
+            Constrains the twist velocity between two bodies to a target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.LocalAxisA">
+            <summary>
+            Local twist axis attached to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.LocalAxisB">
+            <summary>
+            Local twist axis attached to body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.TargetVelocity">
+            <summary>
+            Goal relative twist velocity around the body axes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistServo">
+            <summary>
+            Constrains two bodies to maintain a target twist angle around body-attached axes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.LocalBasisA">
+            <summary>
+            Local space basis attached to body A against which to measure body B's transformed axis. Expressed as a 3x3 rotation matrix, the X axis corresponds with 0 degrees, 
+            the Y axis corresponds to 90 degrees, and the -Z axis is the twist axis. When viewed along the twist axis, positive change in angle causes counterclockwise rotation in right handed coordinates.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.LocalBasisB">
+            <summary>
+            Local space basis attached to body B that will be measured against body A's basis.
+            Expressed as a 3x3 rotation matrix, the transformed X axis will be measured against A's X and Y axes. The Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.TargetAngle">
+            <summary>
+            Target angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwoBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            Two address streams isn't much of a problem for prefetching.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ITwoBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a two body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.ITwoBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwoBodyTypeProcessor`7">
+            <summary>
+            Shared implementation across all two body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeBatch">
+            <summary>
+            Stores the raw AOSOA formatted data associated with constraints in a type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeProcessor">
+            <summary>
+            Superclass of constraint type batch processors. Responsible for interpreting raw type batches for the purposes of bookkeeping and solving.
+            </summary>
+            <remarks>
+            <para>This class holds no actual state of its own. A solver creates a unique type processor for each registered constraint type, and all instances are held in untyped memory.
+            Splitting the functionality from the data allows for far fewer GC-tracked instances and allows the raw data layout to be shared more easily.</para>
+            <para>For example, sleeping simulation islands store type batches, but they are created and used differently- and for convenience, they are stored on a per-island basis.
+            Using the same system but with reference type TypeBatches, tens of thousands of inactive islands would imply tens of thousands of GC-tracked objects.</para>
+            That's not acceptable, so here we are. 
+            <para>Conceptually, you can think of the solver's array of TypeProcessors like C function pointers.</para>
+            </remarks>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.BodiesPerConstraint">
+            <summary>
+            Gets the number of bodies associated with each constraint in this type processor.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.ConstrainedDegreesOfFreedom">
+            <summary>
+            Gets the number of degrees of freedom that each constraint in this type processor constrains. Equal to the number of entries in the accumulated impulses.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.AllocateInTypeBatch(BepuPhysics.Constraints.TypeBatch@,BepuPhysics.ConstraintHandle,System.Span{System.Int32},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates a slot in the batch, assuming the batch is not a fallback batch.
+            </summary>
+            <param name="typeBatch">Type batch to allocate in.</param>
+            <param name="handle">Handle of the constraint to allocate. Establishes a link from the allocated constraint to its handle.</param>
+            <param name="encodedBodyIndices">List of body indices (not handles!) with count equal to the type batch's expected number of involved bodies.</param>
+            <param name="pool">Allocation provider to use if the type batch has to be resized.</param>
+            <returns>Index of the slot in the batch.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.AllocateInTypeBatchForFallback(BepuPhysics.Constraints.TypeBatch@,BepuPhysics.ConstraintHandle,System.Span{System.Int32},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates a slot in the batch, assuming the batch is a fallback batch.
+            </summary>
+            <param name="typeBatch">Type batch to allocate in.</param>
+            <param name="handle">Handle of the constraint to allocate. Establishes a link from the allocated constraint to its handle.</param>
+            <param name="encodedBodyIndices">List of body indices (not handles!) with count equal to the type batch's expected number of involved bodies.</param>
+            <param name="pool">Allocation provider to use if the type batch has to be resized.</param>
+            <returns>Index of the slot in the batch.</returns>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeProcessor.ActiveKinematicFlaggedBodyHandleCollector">
+            <summary>
+            Collects body references from active constraints and converts them into properly flagged constraint kinematic body handles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32)">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32,System.Span{BepuPhysics.BodyHandle},System.Span{System.Int32})">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+            <param name="dynamicBodyHandles">Set of body handles in the constraint referring to dynamic bodies.</param>
+            <param name="encodedBodyIndices">Set of encoded body indices to use in the new constraint allocation.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.UpdateForBodyMemoryMove(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Updates a type batch's body index references for the movement of a body in memory.
+            </summary>
+            <param name="typeBatch">Type batch containing a constraint that references the body.</param>
+            <param name="indexInTypeBatch">Index of the constraint in the type batch.</param>
+            <param name="bodyIndexInConstraint">Index within the constraint of the body.</param>
+            <param name="newBodyLocation">New index of the body in the bodies active set.</param>
+            <returns>True if the body being moved was kinematic according to the constraint's reference.</returns>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this type requires incremental updates for each substep in a frame beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ISortKeyGenerator`1">
+            <summary>
+            Defines a function that creates a sort key from body references in a type batch. Used by constraint layout optimization.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.Move(`0@,`1@,`2@,BepuPhysics.ConstraintHandle,System.Int32,`0@,`1@,`2@,BepuPhysics.ConstraintHandle@,System.Int32,System.Int32,BepuUtilities.Memory.Buffer{BepuPhysics.ConstraintLocation}@)">
+            <summary>
+            Overwrites all the data in the target constraint slot with source data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.Remove(BepuPhysics.Constraints.TypeBatch@,System.Int32,BepuUtilities.Memory.Buffer{BepuPhysics.ConstraintLocation}@,System.Boolean)">
+            <summary>
+            Removes a constraint from the batch.
+            </summary>
+            <param name="typeBatch">Type batch to remove a constraint from.</param>
+            <param name="index">Index of the constraint to remove.</param>
+            <param name="handlesToConstraints">The handle to constraint mapping used by the solver that could be modified by a swap on removal.</param>
+            <param name="isFallback">True if the type batch being removed from belongs to the fallback batch, false otherwise.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32,System.Span{BepuPhysics.BodyHandle},System.Span{System.Int32})">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+            <param name="dynamicBodyHandles">Set of body handles in the constraint referring to dynamic bodies.</param>
+            <param name="encodedBodyIndices">Set of encoded body indices to use in the new constraint allocation.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.VolumeConstraint">
+            <summary>
+            Constrains the volume of a tetrahedron connecting the centers of four bodies to match a goal volume. 
+            Scaled volume computed from (ab x ac) * ad; the volume may be negative depending on the winding of the tetrahedron.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.VolumeConstraint.TargetScaledVolume">
+            <summary>
+            6 times the target volume of the tetrahedra. Computed from (ab x ac) * ad; this may be negative depending on the winding of the tetrahedron.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.VolumeConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.VolumeConstraint.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Creates a new volume constraint, initializing the target volume using a set of initial positions.
+            </summary>
+            <param name="a">Initial position of the first body.</param>
+            <param name="b">Initial position of the second body.</param>
+            <param name="c">Initial position of the third body.</param>
+            <param name="d">Initial position of the fourth body.</param>
+            <param name="springSettings">Spring settings to apply to the volume constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.VolumeConstraintTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of volume constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Weld">
+            <summary>
+            Constrains two bodies to maintain a relative position and orientation. All six degrees of freedom are solved simultaneously.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.LocalOffset">
+            <summary>
+            Offset from body A to body B in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.LocalOrientation">
+            <summary>
+            Target orientation of body B in body A's local space. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.SpringSettings">
+            <summary>
+            Springiness of the position and orientation constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.WeldTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.DefaultTimestepper">
+            <summary>
+            Updates the simulation in the order of: sleeper -> predict body bounding boxes -> collision detection -> substepping solve -> data structure optimization.
+            Each substep of the solve simulates and integrates a sub-timestep of length dt/substepCount.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.Slept">
+            <summary>
+            Fires after the sleeper completes and before bodies are integrated.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.BeforeCollisionDetection">
+            <summary>
+            Fires after bodies have their bounding boxes updated for the frame's predicted motion and before collision detection.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.CollisionsDetected">
+            <summary>
+            Fires after all collisions have been identified, but before the substep loop begins.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.ConstraintsSolved">
+            <summary>
+            Fires after the solver executes and before the final integration step.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.DefaultTypes">
+            <summary>
+            Helper class to register the default types within a simulation instance.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.RegisterDefaults(BepuPhysics.Solver,BepuPhysics.CollisionDetection.NarrowPhase)">
+            <summary>
+            Registers the set of constraints that are packaged in the engine.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.CreateDefaultCollisionTaskRegistry">
+            <summary>
+            Creates a task registry containing the default collision pair types.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.CreateDefaultSweepTaskRegistry">
+            <summary>
+            Creates a task registry containing the default sweep task types.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyHandle">
+            <summary>
+            Unique identifier of a body belonging to a simulation's Bodies collection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the body. 
+            This value will not (and must not) change during the body's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.StaticHandle">
+            <summary>
+            Unique identifier of a static belonging to a simulation's Statics collection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the body. 
+            This value will not (and must not) change during the body's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintHandle">
+            <summary>
+            Unique identifier of a constraint belonging to a simulation's Solver.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the constraint. 
+            This value will not (and must not) change during the constraint's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintBodyHandleCollector">
+            <summary>
+            Collects body handles associated with an active constraint as integers.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintDynamicBodyHandleCollector">
+            <summary>
+            Collects body handles associated with an active constraint as integers.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintBodyIndexCollector">
+            <summary>
+            Collects body indices associated with an active constraint. Encoded metadata is stripped.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.PassthroughReferenceCollector">
+            <summary>
+            Directly reports references as provided by whatever is being enumerated.
+            For example, when used directly with the TypeProcessor's EnumerateConnectedRawBodyReferences, if the constraint is active, this will report encoded body indices. If the constraint is sleeping, this will report body handles.
+            If used with an enumerator that does filtering, the filtered results will be reported unmodified.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Helpers">
+            <summary>
+            Shared miscellaneous helper functions.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.HashDiagnosticType">
+            <summary>
+            Hardcoded hash types used by invasive hash diagnostics.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.InvasiveHashDiagnostics">
+            <summary>
+            Helper diagnostics class for monitoring internal state determinism across runs.
+            Typically used by inserting tests into engine internals.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.InvasiveHashDiagnostics.HashTypeCount">
+            <summary>
+            This is meant as an internal diagnostic utility, so hardcoding some things is totally fine.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.IslandAwakener">
+            <summary>
+            Provides functionality for efficiently waking up sleeping bodies.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenBody(BepuPhysics.BodyHandle)">
+            <summary>
+            Wakes up a body if it is sleeping. All bodies that can be found by traversing the constraint graph from the body will also be awakened.
+            If the body is already awake, this does nothing.
+            </summary>
+            <param name="bodyHandle">Handle of the body to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenConstraint(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Wakes up any sleeping bodies associated with a constraint. All bodies that can be found by traversing the constraint graph from the constraint referenced bodies will also be awakened.
+            If all bodies associated with the constraint are already awake, this does nothing.
+            </summary>
+            <param name="constraintHandle">Handle of the constraint to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenSet(System.Int32)">
+            <summary>
+            Wakes up all bodies and constraints within a set. Doesn't do anything if the set is awake (index zero).
+            </summary>
+            <param name="setIndex">Index of the set to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenSets(BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Awakens a list of set indices.
+            </summary>
+            <param name="setIndices">List of set indices to wake up.</param>
+            <param name="threadDispatcher">Thread dispatcher to use when waking the bodies. Pass null to run on a single thread.</param>
+        </member>
+        <member name="T:BepuPhysics.IslandScaffold">
+            <summary>
+            Represents the constraint batch structure and all references in an island. Holds everything necessary to create and gather a full island.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TestedFractionPerFrame">
+            <summary>
+            Gets or sets the multiplier applied to the active body count used to calculate the number of sleep traversals in a given timestep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TargetSleptFraction">
+            <summary>
+            Gets or sets the fraction of the active set to target as the number of bodies slept in a given frame.
+            This is only a goal; the actual number of slept bodies may be more or less.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TargetTraversedFraction">
+            <summary>
+            Gets or sets the fraction of the active set to target as the number of bodies traversed for sleeping in a given frame.
+            This is only a goal; the actual number of traversed bodies may be more or less.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.CollectIsland``1(BepuUtilities.Memory.BufferPool,System.Int32,``0@,BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.Collections.QuickList{BepuPhysics.ConstraintHandle}@)">
+            <summary>
+            Traverses the active constraint graph collecting bodies that match a predicate. If any body visited during the traversal fails to match the predicate, the traversal terminates.
+            </summary>
+            <typeparam name="TTraversalPredicate">Type of the predicate to test each body index with.</typeparam>
+            <param name="pool">Pool to allocate temporary collections from.</param>
+            <param name="startingActiveBodyIndex">Index of the active body to start the traversal at.</param>
+            <param name="predicate">Predicate to test each traversed body with. If any body results in the predicate returning false, the traversal stops and the function returns false.</param>
+            <param name="bodyIndices">List to fill with body indices traversed during island collection. Bodies failing the predicate will not be included.</param>
+            <param name="constraintHandles">List to fill with constraint handles traversed during island collection.</param>
+            <returns>True if the simulation graph was traversed without ever finding a body that made the predicate return false. False if any body failed the predicate.
+            The bodyIndices and constraintHandles lists will contain all traversed predicate-passing bodies and constraints.</returns>
+        </member>
+        <member name="F:BepuPhysics.IslandSleeper.GatheringJob.IsBodyJob">
+            <summary>
+            If true, this job relates to a subset of body indices. If false, this job relates to a subset of constraint handles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.Sleep(BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.IThreadDispatcher,System.Boolean)">
+            <summary>
+            Forcefully sleeps a list of bodies and all bodies that can be reached by traversing the constraint graph from those bodies.
+            </summary>
+            <param name="bodyIndices">List of body indices to sleep.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for the sleep attempt, if any. If null, sleep is performed on the calling thread.</param>
+            <param name="deterministic">True if the sleep should produce deterministic results at higher cost, false otherwise.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.Sleep(System.Int32)">
+            <summary>
+            Forces a body and all bodies that can be found by traversing the constraint graph from that body to go to sleep.
+            </summary>
+            <param name="bodyIndex">Index of the body to sleep in the active set.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.EnsureSetsCapacity(System.Int32)">
+            <summary>
+            Ensures that the Bodies, Solver, and NarrowPhase can hold at least the given number of sets (BodySets for the Bodies collection, ConstraintSets for the Solver, PairSubcaches for the NarrowPhase.PairCache).
+            </summary>
+            <param name="setsCapacity">Number of sets to guarantee space for.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.ResizeSetsCapacity(System.Int32)">
+            <summary>
+            Ensures that the Bodies and Solver can hold the given number of sets. 
+            If the existing allocation is smaller than the requested sets capacity, the allocation will be enlarged.
+            If the existing allocation is larger than both the existing potentially allocated set range and the requested sets capacity, the allocation will be shrunk.
+            Shrinks will never cause an existing set to be lost.
+            </summary>
+            <param name="setsCapacity">Target number of sets to allocate space for.</param>
+        </member>
+        <member name="T:BepuPhysics.TimestepperStageHandler">
+            <summary>
+            Delegate used by ITimesteppers for their stage callbacks.
+            </summary>
+            <param name="dt">Time step duration.</param>
+            <param name="threadDispatcher">Thread dispatcher used for this timestep.</param>
+        </member>
+        <member name="T:BepuPhysics.ITimestepper">
+            <summary>
+            Defines a type capable of updating the simulation state for a given elapsed time.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.ITimestepper.BeforeCollisionDetection">
+            <summary>
+            Callbacks to execute immediately before collision detection executes.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.ITimestepper.CollisionsDetected">
+            <summary>
+            Callbacks to execute after collision detection completes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ITimestepper.Timestep(BepuPhysics.Simulation,BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Performs one timestep of the given length.
+            </summary>
+            <param name="simulation">Simulation to be stepped forward in time.</param>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="T:BepuPhysics.LocalSpinWait">
+            <summary>
+            Behaves like a framework SpinWait, but never voluntarily relinquishes the timeslice to off-core threads.
+            </summary>
+            <remarks><para>There are two big reasons for using this over the regular framework SpinWait:</para>
+            <para>1) The framework spinwait relies on spins for quite a while before resorting to any form of timeslice surrender.
+            Empirically, this is not ideal for the solver- if the sync condition isn't met within several nanoseconds, it will tend to be some microseconds away.
+            This spinwait is much more aggressive about moving to yields.</para>
+            <para>2) After a number of yields, the framework SpinWait will resort to calling Sleep.
+            This widens the potential set of schedulable threads to those not native to the current core. If we permit that transition, it is likely to evict cached solver data.
+            (For very large simulations, the use of Sleep(0) isn't that concerning- every iteration can be large enough to evict all of cache- 
+            but there still isn't much benefit to using it over yields in context.)</para>
+            <para>SpinWait will also fall back to Sleep(1) by default which obliterates performance, but that behavior can be disabled.</para>
+            <para>Note that this isn't an indication that the framework SpinWait should be changed, but rather that the solver's requirements are extremely specific and don't match
+            a general purpose solution very well.</para></remarks>
+        </member>
+        <member name="T:BepuPhysics.AngularIntegrationMode">
+            <summary>
+            Defines how a pose integrator should handle angular velocity integration.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.Nonconserving">
+            <summary>
+            Angular velocity is directly integrated and does not change as the body pose changes. Does not conserve angular momentum.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.ConserveMomentum">
+            <summary>
+            Approximately conserves angular momentum by updating the angular velocity according to the change in orientation. Does a decent job for gyroscopes, but angular velocities will tend to drift towards a minimal inertia axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.ConserveMomentumWithGyroscopicTorque">
+            <summary>
+            Approximately conserves angular momentum by including an implicit gyroscopic torque. Best option for Dzhanibekov effect simulation, but applies a damping effect that can make gyroscopes less useful.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.IPoseIntegratorCallbacks">
+            <summary>
+            Defines a type that handles callbacks for body pose integration.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.AngularIntegrationMode">
+            <summary>
+            Gets how the pose integrator should handle angular velocity integration.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.AllowSubstepsForUnconstrainedBodies">
+            <summary>
+            Gets whether the integrator should use only one step for unconstrained bodies when using a substepping solver.
+            If true, unconstrained bodies use a single step of length equal to the dt provided to <see cref="M:BepuPhysics.Simulation.Timestep(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)"/>. 
+            If false, unconstrained bodies will be integrated with the same number of substeps as the constrained bodies in the solver.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocityForKinematics">
+            <summary>
+            Gets whether the velocity integration callback should be called for kinematic bodies.
+            If true, <see cref="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)"/> will be called for bundles including kinematic bodies.
+            If false, kinematic bodies will just continue using whatever velocity they have set.
+            Most use cases should set this to false.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Performs any required initialization logic after the Simulation instance has been constructed.
+            </summary>
+            <param name="simulation">Simulation that owns these callbacks.</param>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.PrepareForIntegration(BepuUtilities.Numerics.Number)">
+            <summary>
+            Callback invoked ahead of dispatches that may call into <see cref="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)"/>.
+            It may be called more than once with different values over a frame. For example, when performing bounding box prediction, velocity is integrated with a full frame time step duration.
+            During substepped solves, integration is split into substepCount steps, each with fullFrameDuration / substepCount duration.
+            The final integration pass for unconstrained bodies may be either fullFrameDuration or fullFrameDuration / substepCount, depending on the value of AllowSubstepsForUnconstrainedBodies. 
+            </summary>
+            <param name="dt">Current integration time step duration.</param>
+            <remarks>This is typically used for precomputing anything expensive that will be used across velocity integration.</remarks>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Callback for a bundle of bodies being integrated.
+            </summary>
+            <param name="bodyIndices">Indices of the bodies being integrated in this bundle.</param>
+            <param name="position">Current body positions.</param>
+            <param name="orientation">Current body orientations.</param>
+            <param name="localInertia">Body's current local inertia.</param>
+            <param name="integrationMask">Mask indicating which lanes are active in the bundle. Active lanes will contain 0xFFFFFFFF, inactive lanes will contain 0.</param>
+            <param name="workerIndex">Index of the worker thread processing this bundle.</param>
+            <param name="dt">Durations to integrate the velocity over. Can vary over lanes.</param>
+            <param name="velocity">Velocity of bodies in the bundle. Any changes to lanes which are not active by the integrationMask will be discarded.</param>
+        </member>
+        <member name="T:BepuPhysics.PoseIntegration">
+            <summary>
+            Provides helper functions for integrating body poses.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegration.FallbackIfInertiaIncompatible(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Uses the previous angular velocity if attempting to conserve angular momentum introduced infinities or NaNs. Happens when attempting to conserve momentum with a kinematic or partially inertia locked body.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.PoseIntegrator`1">
+            <summary>
+            Handles body integration work that isn't bundled into the solver's execution. Predicts bounding boxes, integrates velocity and poses for unconstrained bodies, and does final post-substepping pose integration for constrained bodies.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegrator`1.IntegrateKinematicVelocities(BepuUtilities.Memory.Buffer{System.Int32},System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Integrates the velocities of kinematic bodies as a prepass to the first substep during solving.
+            Kinematics have to be integrated ahead of time since they don't block constraint batch membership; the same kinematic could appear in the batch multiple times.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegrator`1.IntegrateKinematicPosesAndVelocities(BepuUtilities.Memory.Buffer{System.Int32},System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Integrates the poses *then* velocities of kinematic bodies as a prepass to the second or later substeps during solving.
+            Kinematics have to be integrated ahead of time since they don't block constraint batch membership; the same kinematic could appear in the batch multiple times.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.SequentialFallbackBatch">
+            <summary>
+            Contains constraints that could not belong to any lower constraint batch due to their involved bodies. All of the contained constraints will be solved using a fallback solver that
+            trades rigidity for parallelism.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.SequentialFallbackBatch.BodyCount">
+            <summary>
+            Gets the number of bodies in the fallback batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SequentialFallbackBatch.RemoveOneBodyReferenceFromDynamicsSet(System.Int32,BepuUtilities.Collections.QuickList{System.Int32}@)">
+            <summary>
+            Removes a constraint from a body in the fallback batch.
+            </summary>
+            <param name="bodyReference">Body associated with a constraint in the fallback batch.</param>
+            <param name="allocationIdsToFree">Allocations that should be freed once execution is back in a safe context.</param>
+            <returns>True if the body was dynamic and no longer has any constraints associated with it in the fallback batch, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.SequentialFallbackBatch.TryRemoveDynamicBodyFromTracking(System.Int32,BepuUtilities.Collections.QuickList{System.Int32}@)">
+            <summary>
+            Removes a body from the fallback batch's dynamic body constraint counts if it is present.
+            </summary>
+            <param name="bodyReference">Reference to the body to remove from the fallback batch.</param>
+            <param name="allocationIdsToFree">Allocations that should be freed once execution is back in a safe context.</param>
+            <returns>True if the body was present in the fallback batch and was removed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Simulation">
+            <summary>
+            Orchestrates the bookkeeping and execution of a full dynamic simulation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Profiler">
+            <summary>
+            Gets the simulation profiler. Note that the SimulationProfiler implementation only exists when the library is compiled with the PROFILE compilation symbol; if not defined, returned times are undefined.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.BufferPool">
+            <summary>
+            Gets the main memory pool used to fill persistent structures and main thread ephemeral resources across the engine.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Timestepper">
+            <summary>
+            Gets the timestepper used to update the simulation state.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Deterministic">
+            <summary>
+            Gets or sets whether to use a deterministic time step when using multithreading. When set to true, additional time is spent sorting constraint additions and transfers.
+            Note that this can only affect determinism locally- different processor architectures may implement instructions differently.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Create``2(BepuUtilities.Memory.BufferPool,``0,``1,BepuPhysics.SolveDescription,BepuPhysics.ITimestepper,System.Nullable{BepuPhysics.SimulationAllocationSizes})">
+            <summary>
+            Constructs a simulation supporting dynamic movement and constraints with the specified narrow phase callbacks.
+            </summary>
+            <param name="bufferPool">Buffer pool used to fill persistent structures and main thread ephemeral resources across the engine.</param>
+            <param name="narrowPhaseCallbacks">Callbacks to use in the narrow phase.</param>
+            <param name="poseIntegratorCallbacks">Callbacks to use in the pose integrator.</param>
+            <param name="timestepper">Timestepper that defines how the simulation state should be updated. If null, <see cref="T:BepuPhysics.DefaultTimestepper"/> is used.</param>
+            <param name="solveDescription">Describes how the solver should execute, including the number of substeps and the number of velocity iterations per substep.</param>
+            <param name="initialAllocationSizes">Allocation sizes to initialize the simulation with. If left null, default values are chosen.</param>
+            <returns>New simulation.</returns>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sleep(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Executes the sleep stage, moving candidate
+            </summary>
+            <param name="threadDispatcher">Thread dispatcher to use for the sleeper execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.PredictBoundingBoxes(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Predicts the bounding boxes of active bodies by speculatively integrating velocity. Does not actually modify body velocities. Updates deactivation candidacy.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.CollisionDetection(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Updates the broad phase structure for the current body bounding boxes, finds potentially colliding pairs, and then executes the narrow phase for all such pairs. Generates contact constraints for the solver.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Solve(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Updates the broad phase structure for the current body bounding boxes, finds potentially colliding pairs, and then executes the narrow phase for all such pairs. Generates contact constraints for the solver.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.IncrementallyOptimizeDataStructures(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Incrementally improves body and constraint storage for better performance.
+            </summary>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Timestep(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Performs one timestep of the given length.
+            </summary>
+            <remarks>
+            Be wary of variable timesteps. They can harm stability. Whenever possible, keep the timestep the same across multiple frames unless you have a specific reason not to.
+            </remarks>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Clear">
+            <summary>
+            Clears the simulation of every object, only returning memory to the pool that would be returned by sequential removes. 
+            Other persistent allocations, like those in the Bodies set, will remain.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.EnsureCapacity(BepuPhysics.SimulationAllocationSizes)">
+            <summary>
+            Increases the allocation size of any buffers too small to hold the allocation target.
+            </summary>
+            <remarks>
+            <para>
+            The final size of the allocated buffers are constrained by the allocator. It is not guaranteed to be exactly equal to the target, but it is guaranteed to be at least as large.
+            </para>
+            <para>
+            This is primarily a convenience function. Everything it does internally can be done externally.
+            For example, if only type batches need to be resized, the solver's own functions can be used directly.
+            </para>
+            </remarks>
+            <param name="allocationTarget">Allocation sizes to guarantee sufficient size for.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Resize(BepuPhysics.SimulationAllocationSizes)">
+            <summary>
+            Increases the allocation size of any buffers too small to hold the allocation target, and decreases the allocation size of any buffers that are unnecessarily large.
+            </summary>
+            <remarks>
+            <para>
+            The final size of the allocated buffers are constrained by the allocator. It is not guaranteed to be exactly equal to the target, but it is guaranteed to be at least as large.
+            </para>
+            <para>
+            This is primarily a convenience function. Everything it does internally can be done externally.
+            For example, if only type batches need to be resized, the solver's own functions can be used directly.
+            </para>
+            </remarks>
+            <param name="allocationTarget">Allocation sizes to guarantee sufficient size for.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Dispose">
+            <summary>
+            Clears the simulation of every object and returns all pooled memory to the buffer pool. Leaves the simulation in an unusable state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.RayCast``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@,System.Int32)">
+            <summary>
+            Intersects a ray against the simulation.
+            </summary>
+            <typeparam name="THitHandler">Type of the callbacks to execute on ray-object intersections.</typeparam>
+            <param name="origin">Origin of the ray to cast.</param>
+            <param name="direction">Direction of the ray to cast.</param>
+            <param name="maximumT">Maximum length of the ray traversal in units of the direction's length.</param>
+            <param name="hitHandler">callbacks to execute on ray-object intersections.</param>
+            <param name="id">User specified id of the ray.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sweep``2(``0,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Memory.BufferPool,``1@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Sweeps a shape against the simulation.
+            </summary>
+            <typeparam name="TShape">Type of the shape to sweep.</typeparam>
+            <typeparam name="TSweepHitHandler">Type of the callbacks executed when a sweep impacts an object in the scene.</typeparam>
+            <param name="shape">Shape to sweep.</param>
+            <param name="pose">Starting pose of the sweep.</param>
+            <param name="velocity">Velocity of the swept shape.</param>
+            <param name="maximumT">Maximum length of the sweep in units of time used to integrate the velocity.</param>
+            <param name="pool">Pool to allocate any temporary resources in during execution.</param>
+            <param name="hitHandler">Callbacks executed when a sweep impacts an object in the scene.</param>
+            <remarks>Simulation objects are treated as stationary during the sweep.</remarks>
+            <param name="minimumProgression">Minimum amount of progress in terms of t parameter that any iterative sweep tests should make for each sample.</param>
+            <param name="convergenceThreshold">Threshold in terms of t parameter under which iterative sweep tests are permitted to exit in collision.</param>
+            <param name="maximumIterationCount">Maximum number of iterations to use in iterative sweep tests.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sweep``2(``0@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Memory.BufferPool,``1@)">
+            <summary>
+            Sweeps a shape against the simulation.
+            </summary>
+            <typeparam name="TShape">Type of the shape to sweep.</typeparam>
+            <typeparam name="TSweepHitHandler">Type of the callbacks executed when a sweep impacts an object in the scene.</typeparam>
+            <param name="shape">Shape to sweep.</param>
+            <param name="pose">Starting pose of the sweep.</param>
+            <param name="velocity">Velocity of the swept shape.</param>
+            <param name="maximumT">Maximum length of the sweep in units of time used to integrate the velocity.</param>
+            <param name="pool">Pool to allocate any temporary resources in during execution.</param>
+            <param name="hitHandler">Callbacks executed when a sweep impacts an object in the scene.</param>
+            <remarks>Simulation objects are treated as stationary during the sweep.</remarks>
+        </member>
+        <member name="T:BepuPhysics.SimulationAllocationSizes">
+            <summary>
+            The common set of allocation sizes for a simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Bodies">
+            <summary>
+            The number of bodies to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Statics">
+            <summary>
+            The number of statics to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Islands">
+            <summary>
+            The number of inactive islands to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ShapesPerType">
+            <summary>
+            Minimum number of shapes to allocate space for in each shape type batch.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Constraints">
+            <summary>
+            The number of constraints to allocate bookkeeping space for. This does not affect actual type batch allocation sizes, only the solver-level constraint handle storage.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ConstraintsPerTypeBatch">
+            <summary>
+            The minimum number of constraints to allocate space for in each individual type batch.
+            New type batches will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            The number of constraints can vary greatly across types- there are usually far more contacts than ragdoll constraints.
+            Per type estimates can be assigned within the Solver.TypeBatchAllocation if necessary. This value acts as a lower bound for all types.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ConstraintCountPerBodyEstimate">
+            <summary>
+            The minimum number of constraints to allocate space for in each body's constraint list.
+            New bodies will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SimulationAllocationSizes.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a description of simulation allocations.
+            </summary>
+            <param name="bodies">The number of bodies to allocate space for.</param>
+            <param name="statics">The number of statics to allocate space for.</param>
+            <param name="islands">The number of inactive islands to allocate space for.</param>
+            <param name="shapesPerType">Minimum number of shapes to allocate space for in each shape type batch.</param>
+            <param name="constraints">The number of constraints to allocate bookkeeping space for. This does not affect actual type batch allocation sizes, only the solver-level constraint handle storage.</param>
+            <param name="constraintsPerTypeBatch">The minimum number of constraints to allocate space for in each individual type batch.
+            New type batches will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            The number of constraints can vary greatly across types- there are usually far more contacts than ragdoll constraints.
+            Per type estimates can be assigned within the Solver.TypeBatchAllocation if necessary. This value acts as a lower bound for all types.</param>
+            <param name="constraintCountPerBodyEstimate">The minimum number of constraints to allocate space for in each body's constraint list.
+            New bodies will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.</param>
+        </member>
+        <member name="T:BepuPhysics.SimulationProfiler">
+            <summary>
+            Stores profiling information for the previous simulation execution.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.SimulationProfiler.Item(System.Object)">
+            <summary>
+            Gets the time it took to complete the last execution of the given stage. If no stage matching the given object ran, returns -1.
+            </summary>
+            <param name="stage">Stage to look up the time for.</param>
+            <returns>Time it took to complete the last execution of the given stage.</returns>
+        </member>
+        <member name="M:BepuPhysics.IShapeRayHitHandler.AllowTest(System.Int32)">
+            <summary>
+            Checks whether the child of a collidable should be tested against a ray. Only called by shape types that can have more than one child.
+            </summary>
+            <param name="childIndex">Index of the candidate in the parent collidable.</param>
+            <returns>True if the child should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IShapeRayHitHandler.OnRayHit(BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,System.Int32)">
+            <summary>
+            Called when a ray impact has been found.
+            </summary>
+            <param name="ray">Information about the ray associated with this hit.</param>
+            <param name="maximumT">Maximum distance along the ray that the traversal is allowed to go in units of ray direction length. Can be set to limit future tests.</param>
+            <param name="t">Distance along the ray to the impact in units of ray direction length. In other words, hitLocation = ray.Origin + ray.Direction * t.</param>
+            <param name="normal">Surface normal at the hit location.</param>
+            <param name="childIndex">Index of the hit child. For convex shapes or other types that don't have multiple children, this is always zero.</param>
+        </member>
+        <member name="T:BepuPhysics.IRayHitHandler">
+            <summary>
+            Defines a type capable of filtering ray test candidates and handling ray hit results.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Checks whether a collidable identified by the acceleration structure should be tested against a ray.
+            </summary>
+            <param name="collidable">Candidate collidable for ray testing.</param>
+            <returns>True if the collidable should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Checks whether the child of a collidable should be tested against a ray. Only called by shape types that can have more than one child.
+            </summary>
+            <param name="collidable">Parent of the candidate.</param>
+            <param name="childIndex">Index of the candidate in the parent collidable.</param>
+            <returns>True if the child should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.OnRayHit(BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Called when a ray impact has been found.
+            </summary>
+            <param name="ray">Information about the ray associated with this hit.</param>
+            <param name="maximumT">Maximum distance along the ray that the traversal is allowed to go in units of ray direction length. Can be set to limit future tests.</param>
+            <param name="t">Distance along the ray to the impact in units of ray direction length. In other words, hitLocation = ray.Origin + ray.Direction * t.</param>
+            <param name="normal">Surface normal at the hit location.</param>
+            <param name="collidable">Collidable hit by the ray.</param>
+            <param name="childIndex">Index of the hit child. For convex shapes or other types that don't have multiple children, this is always zero.</param>
+        </member>
+        <member name="T:BepuPhysics.ISweepHitHandler">
+            <summary>
+            Defines a type capable of filtering sweep candidates and handling sweep results.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Checks whether to run a detailed sweep test against a target collidable.
+            </summary>
+            <param name="collidable">Collidable to check.</param>
+            <returns>True if the sweep test should be attempted, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Checks whether to run a detailed sweep test against a target collidable's child.
+            </summary>
+            <param name="collidable">Collidable to check.</param>
+            <param name="child">Index of the child in the collidable to check.</param>
+            <returns>True if the sweep test should be attempted, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.OnHit(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Called when a sweep test detects a hit with nonzero T value.
+            </summary>
+            <param name="maximumT">Reference to maximumT passed to the traversal.</param>
+            <param name="t">Time of impact for the sweep test.</param>
+            <param name="hitLocation">Location of the first hit detected by the sweep.</param>
+            <param name="hitNormal">Surface normal at the hit location.</param>
+            <param name="collidable">Collidable hit by the traversal.</param>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.OnHitAtZeroT(BepuUtilities.Numerics.Number@,BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Called when a sweep test detects a hit at T = 0, meaning that no location or normal can be computed.
+            </summary>
+            <param name="maximumT">Reference to maximumT passed to the traversal.</param>
+            <param name="collidable">Collidable hit by the traversal.</param>
+        </member>
+        <member name="T:BepuPhysics.SubstepVelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep.
+            </summary>
+            <param name="substepIndex">Index of the substep to schedule velocity iterations for.</param>
+            <returns>Number of velocity iterations to use for the substep. If nonpositive, <see cref="F:BepuPhysics.SolveDescription.VelocityIterationCount"/> will be used for the substep instead.</returns>
+        </member>
+        <member name="T:BepuPhysics.SolveDescription">
+            <summary>
+            Describes how the solver should schedule substeps and velocity iterations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.VelocityIterationCount">
+            <summary>
+            Number of velocity iterations to use in the solver if there is no <see cref="F:BepuPhysics.SolveDescription.VelocityIterationScheduler"/> or if it returns a non-positive value for a substep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.SubstepCount">
+            <summary>
+            Number of substeps to execute each time the solver runs.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.FallbackBatchThreshold">
+            <summary>
+            Number of synchronzed constraint batches to use before using a fallback approach.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.VelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep. If null, or if it returns a non-positive value, the <see cref="F:BepuPhysics.SolveDescription.VelocityIterationCount"/> will be used instead.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold">
+            <summary>
+            Default number of synchronized constraint batches to use before falling back to an alternative solving method.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="velocityIterationCount">Number of velocity iterations per substep.</param>
+            <param name="substepCount">Number of substeps in the solve.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.Int32,BepuPhysics.SubstepVelocityIterationScheduler,System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="substepCount">Number of substeps in the solve.</param>
+            <param name="velocityIterationScheduler"></param>
+            <param name="fallbackVelocityIterationCount">Number of velocity iterations per substep for any substep that is not given a positive number of velocity iterations by the scheduler.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+            <param name="fallbackVelocityIterationCount">Number of velocity iterations per substep for any substep that is not given a positive number of velocity iterations by the scheduler.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.Int32)~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of velocity iterations and a single substep, with a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="velocityIterationCount">Number of velocity iterations per substep.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.ValueTuple{System.Int32,System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="schedule">Number of substeps and iterations per solve.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.ReadOnlySpan{System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.Int32[])~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(BepuUtilities.Memory.Buffer{System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="T:BepuPhysics.Solver">
+            <summary>
+            Holds and solves constraints between bodies in a simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.Sets">
+            <summary>
+            Buffer containing all constraint sets. The first slot is dedicated to the active set; subsequent slots may be occupied by the constraints associated with inactive islands.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.ActiveSet">
+            <summary>
+            Gets a reference to the active set of constraints, stored in the first set slot.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.TypeProcessors">
+            <summary>
+            Set of processors applied to batches of constraints of particular types, indexed by the constraint type id.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.HandlePool">
+            <summary>
+            Pool to retrieve constraint handles from when creating new constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.HandleToConstraint">
+            <summary>
+            Mapping from constraint handle (via its internal integer value) to the location of a constraint in memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.FallbackBatchThreshold">
+            <summary>
+            Gets the maximum number of solver batches to allow before resorting to a fallback solver.
+            If a single body is constrained by more than FallbackBatchThreshold constraints, all constraints beyond FallbackBatchThreshold are placed into a fallback batch.
+            The fallback batch uses a different solver that can handle multiple constraints affecting a single body in a single batch, allowing greater parallelism at the cost of convergence speed.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.constrainedKinematicLock">
+            <summary>
+            Lock used to add to the constrained kinematic handles from multiple threads, if necessary.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.ConstrainedKinematicHandles">
+            <summary>
+            Set of body handles associated with constrained kinematic bodies. These will be integrated during substepping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.SubstepCount">
+            <summary>
+            Gets or sets the number of substeps the solver will simulate per call to Solve.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.VelocityIterationCount">
+            <summary>
+            Gets or sets the number of solver velocity iterations to compute per substep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.VelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep. If null, or if it returns a non-positive value, the <see cref="P:BepuPhysics.Solver.VelocityIterationCount"/> will be used instead.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.MinimumCapacityPerTypeBatch">
+            <summary>
+            Gets or sets the minimum amount of space, in constraints, initially allocated in any new type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Solver.SubstepEvent">
+            <summary>
+            Delegate type of solver substep begin/end events.
+            </summary>
+            <param name="substepIndex">Index of the substep that the event is about.</param>
+        </member>
+        <member name="E:BepuPhysics.Solver.SubstepStarted">
+            <summary>
+            Event invoked when the solver begins a substep. If the solver is executing on multiple threads, this will be invoked within the multithreaded dispatch on worker thread 0.
+            </summary>
+            <remarks>Take care when attempting to dispatch multithreaded operations from within this event.
+            If using the same <see cref="T:BepuUtilities.IThreadDispatcher"/> instance as the solver, the dispatcher implementation must be reentrant. The demos implementation is not.</remarks>
+        </member>
+        <member name="E:BepuPhysics.Solver.SubstepEnded">
+            <summary>
+            Event invoked when the solver completes a substep. If the solver is executing on multiple threads, this will be invoked within the multithreaded dispatch on worker thread 0.
+            </summary>
+            <remarks>Take care when attempting to dispatch multithreaded operations from within this event.
+            If using the same <see cref="T:BepuUtilities.IThreadDispatcher"/> instance as the solver, the dispatcher implementation must be reentrant. The demos implementation is not.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.SetMinimumCapacityForType(System.Int32,System.Int32)">
+            <summary>
+            Sets the minimum capacity initially allocated to a new type batch of the given type.
+            </summary>
+            <param name="typeId">Id of the constraint type to check the initial capacity of.</param>
+            <param name="minimumInitialCapacityForType">Minimum capacity to use for the type.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetMinimumCapacityForType(System.Int32)">
+            <summary>
+            Gets the minimum initial capacity for a given type.
+            The returned value is the larger of MinimumCapacityPerTypeBatch and the value set by SetMinimumCapacityForType for the given type id.
+            </summary>
+            <param name="typeId">Type id to retrieve the minm</param>
+            <returns>Larger of MinimumCapacityPerTypeBatch and the given type's minimum set by SetMinimumCapacityForType.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResetPerTypeInitialCapacities">
+            <summary>
+            Resets all per-type initial capacities to zero. Leaves the minimum capacity across all constraints unchanged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.CountConstraintsInTypeBatch(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Counts the number of constraints in a particular type batch.
+            </summary>
+            <param name="setIndex">Index of the set containing the type batch.</param>
+            <param name="batchIndex">Index of the batch containing the type batch.</param>
+            <param name="typeBatchIndex">Index of the type batch within the batch.</param>
+            <returns>Number of constraints in the type batch.</returns>
+            <remarks>This handles whether the type batch is in the fallback batch or not. Active fallback batches are not guaranteed to have contiguous constraints, so the <see cref="F:BepuPhysics.Constraints.TypeBatch.ConstraintCount"/> value is an upper bound and there may be gaps.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.CountConstraints">
+            <summary>
+            Gets the total number of constraints across all sets, batches, and types. Requires enumerating
+            all type batches; this can be expensive.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Register``1">
+            <summary>
+            Registers a constraint type with the solver, creating a type processor for the type internally and allowing constraints of that type to be added to the solver.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint to register with the solver.</typeparam>
+            <exception cref="T:System.ArgumentException">Fired when another constraint type of the same id has already been registered.</exception>
+            <remarks><see cref="M:BepuPhysics.DefaultTypes.RegisterDefaults(BepuPhysics.Solver,BepuPhysics.CollisionDetection.NarrowPhase)"/> is called during simuation creation and registers all the built in types. Calling <see cref="M:BepuPhysics.Solver.Register``1"/> manually is only necessary if custom types are used.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.ConstraintExists(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gets whether the given constraint handle refers to a constraint in the solver.
+            </summary>
+            <param name="constraintHandle">Constraint handle to check for existence in the solver.</param>
+            <returns>True if the constraint handle exists in the solver, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetConstraintReference(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gets a direct reference to the constraint associated with a handle.
+            The reference is temporary; any constraint removals that affect the referenced type batch may invalidate the index.
+            </summary>
+            <param name="handle">Handle index of the constraint.</param>
+            <returns>Temporary direct reference to the type batch and index in the type batch associated with the constraint handle.
+            May be invalidated by constraint removals.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.FindCandidateBatch(BepuPhysics.CollisionDetection.CollidablePair)">
+            <summary>
+            Attempts to locate a spot for a new constraint. Does not perform allocation for the constraint. If no batch exists, returns the index just beyond the end of the existing list of batches.
+            </summary>
+            <returns>Index of the batch that the constraint would fit in.</returns>
+            <remarks>This is used by the narrowphase's multithreaded constraint adders to locate a spot for a new constraint without requiring a lock. Only after a candidate is located
+            do those systems attempt an actual claim, limiting the duration of locks and increasing potential parallelism.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescriptionWithoutWaking``1(BepuPhysics.ConstraintReference@,``0@)">
+            <summary>
+            Applies a description to a constraint slot without waking up the associated island.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintReference">Reference of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescriptionWithoutWaking``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Applies a description to a constraint slot without waking up the associated island.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintHandle">Handle of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescription``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Applies a description to a constraint slot, waking up the connected bodies if necessary.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintHandle">Handle of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(System.Span{BepuPhysics.BodyHandle},``0@)">
+            <summary>
+            Allocates a constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandles">Body handles used by the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a one-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandle">Body connected to the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a two-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a three-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="bodyHandleC">Third body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a four-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="bodyHandleC">Third body of the constraint.</param>
+            <param name="bodyHandleD">Fourth body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.RemoveFromBatch(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Removes a constraint from a batch, performing any necessary batch cleanup, but does not return the constraint's handle to the pool.
+            </summary>
+            <param name="batchIndex">Index of the batch to remove from.</param>
+            <param name="typeId">Type id of the constraint to remove.</param>
+            <param name="indexInTypeBatch">Index of the constraint to remove within its type batch.</param>
+        </member>
+        <member name="T:BepuPhysics.Solver.RemoveConstraintReferencesFromBodiesEnumerator">
+            <summary>
+            Enumerates the bodies attached to an active constraint and removes the constraint's handle from all of the connected body constraint reference lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Remove(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Removes the constraint associated with the given handle. Note that this may invalidate any outstanding direct constraint references
+            by reordering the constraints within the TypeBatch subject to removal.
+            </summary>
+            <param name="handle">Handle of the constraint to remove from the solver.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetDescription``1(BepuPhysics.ConstraintReference,``0@)">
+            <summary>
+            Gets the constraint description associated with a constraint reference.
+            </summary>
+            <typeparam name="TConstraintDescription">Type of the constraint description to retrieve.</typeparam>
+            <param name="constraintReference">Reference to the constraint to retrieve.</param>
+            <param name="description">Retrieved description of the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetDescription``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Gets the constraint description associated with a constraint handle.
+            </summary>
+            <typeparam name="TConstraintDescription">Type of the constraint description to retrieve.</typeparam>
+            <param name="handle">Handle of the constraint to retrieve.</param>
+            <param name="description">Retrieved description of the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.UpdateForBodyMemoryMove(System.Int32,System.Int32)">
+            <summary>
+            Changes the body references of all constraints associated with a body in response to its movement into a new slot.
+            Constraints associated with the body now at its old slot, if any, are left untouched.
+            </summary>
+            <param name="originalBodyIndex">Memory index that the moved body used to inhabit.</param>
+            <param name="newBodyLocation">Memory index that the moved body now inhabits.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleAccumulatedImpulses(BepuPhysics.ConstraintSet@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales the accumulated impulses associated with a constraint set by a given scale.
+            </summary>
+            <param name="set">Set to scale.</param>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleActiveAccumulatedImpulses(BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales all accumulated impulses in the active set.
+            </summary>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleAccumulatedImpulses(BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales all accumulated impulses in all constraint sets.
+            </summary>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateAccumulatedImpulses``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the accumulated impulses associated with a constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to use.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetAccumulatedImpulseMagnitudeSquared(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gathers the squared magnitude of the accumulated impulse for a given constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to look up the accumulated impulses of.</param>
+            <returns>Squared magnitude of the accumulated impulses associated with the given constraint.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetAccumulatedImpulseMagnitude(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gathers the magnitude of the accumulated impulse for a given constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to look up the accumulated impulses of.</param>
+            <returns>Magnitude of the accumulated impulses associated with the given constraint.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``2(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates body references in the constraint. Reports data according to the TReportType.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator called for each body index in the constraint.</typeparam>
+            <typeparam name="TReportType">Type of information to report to the enumerator.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedRawBodyReferences``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of body references associated with a constraint in order of their references within the constraint.
+            This will report the raw body reference (body index if awake, handle if asleep) and any encoded metadata, like whether the body is kinematic.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedRawBodyReferences``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of body references associated with a constraint in order of their references within the constraint.
+            This will report the raw body reference (body index if awake, handle if asleep) and any encoded metadata, like whether the body is kinematic.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of body references associated with an active constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of body references associated with an active constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedDynamicBodies``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of dynamic body references associated with a constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            Kinematic references are skipped.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected dynamic body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected dynamic body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedDynamicBodies``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of dynamic body references associated with a constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            Kinematic references are skipped.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected dynamic body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected dynamic body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.Clear">
+            <summary>
+            Removes all objects from the solver. This is meant as a fast path to empty a simulation's constraints. It makes no attempt to retain synchronization with other systems
+            which may depend on the existence of constraints, like the per-body constraint lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnsureSolverCapacities(System.Int32,System.Int32)">
+            <summary>
+            Adjusts the size of the the solvers non-typebatch data structures. An allocation will grow if the given capacity exceeds the currently allocated capacity.
+            </summary>
+            <param name="bodyHandleCapacity">Size of the span of body handles to allocate space for. Applies to batch referenced handle sets.</param>
+            <param name="constraintHandleCapacity">Number of constraint handles to allocate space for. Applies to the handle->constraint mapping table.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResizeSolverCapacities(System.Int32,System.Int32)">
+            <summary>
+            Adjusts the size of the the solvers non-typebatch data structures. An allocation is allowed to shrink if it fits both all existing entries and the given capacity.
+            An allocation will grow if the given capacity exceeds the currently allocated capacity.
+            </summary>
+            <param name="bodyHandleCapacity">Size of the span of body handles to allocate space for. Applies to batch referenced handle sets.</param>
+            <param name="constraintHandleCapacity">Number of constraint handles to allocate space for. Applies to the handle->constraint mapping table.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnsureTypeBatchCapacities">
+            <summary>
+            Ensures all existing active type batches meet or exceed the current solver-defined minimum capacities. Type batches with capacities smaller than the minimums will be enlarged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResizeTypeBatchCapacities">
+            <summary>
+            Applies the current solver-defined minimum capacities to existing type batches. Type batches with capacities larger than the minimums and counts less than the minimums may be shrunk.
+            Type batches with capacities smaller than the minimums will be enlarged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Dispose">
+            <summary>
+            Returns all pool-retrieved resources to the pool.
+            </summary>
+            <remarks>
+            The solver cannot be 'rehydrated' for reuse after a disposal. If you want to return bulk data to the pool while leaving the solver in a usable state, consider using Clear instead.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Solver.WorkBlock.StartBundle">
+            <summary>
+            Index of the first bundle in the block.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.WorkBlock.End">
+            <summary>
+            Exlusive end index of the bundle. Index of the last bundle in the block is End - 1.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.SubstepMultithreadingContext.SyncIndex">
+            <summary>
+            Monotonically increasing index of executed stages during a frame.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.SubstepMultithreadingContext.CompletedWorkBlockCount">
+            <summary>
+            Counter of work completed for the current stage.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Solver`1">
+            <summary>
+            Handles integration-aware substepped solving.
+            </summary>
+            <typeparam name="TIntegrationCallbacks">Type of integration callbacks being used during the substepped solve.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Solver`1.PoseIntegrator">
+            <summary>
+            Pose integrator used by the simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver`1.coarseBatchIntegrationResponsibilities">
+            <summary>
+            Caches a single bool for whether type batches within batches have constraints with any integration responsibilities.
+            Type batches with no integration responsibilities can use a codepath with no integration checks at all.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.StaticDescription">
+            <summary>
+            Describes the properties of a static object. When added to a simulation, static objects can collide but have no velocity and will not move in response to forces.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Pose">
+            <summary>
+            Position and orientation of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Shape">
+            <summary>
+            Shape of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Continuity">
+            <summary>
+            Continuous collision detection settings for the static.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Builds a new static description.
+            </summary>
+            <param name="pose">Pose of the static collidable.</param>
+            <param name="shape">Shape of the static.</param>
+            <param name="continuity">Continuous collision detection settings for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Builds a new static description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> continuity.
+            </summary>
+            <param name="pose">Pose of the static collidable.</param>
+            <param name="shape">Shape of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Builds a new static description.
+            </summary>
+            <param name="position">Position of the static.</param>
+            <param name="orientation">Orientation of the static.</param>
+            <param name="shape">Shape of the static.</param>
+            <param name="continuity">Continuous collision detection settings for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Builds a new static description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> continuity.
+            </summary>
+            <param name="position">Position of the static.</param>
+            <param name="orientation">Orientation of the static.</param>
+            <param name="shape">Shape of the static.</param>
+        </member>
+        <member name="T:BepuPhysics.StaticReference">
+            <summary>
+            Convenience structure for directly referring to a static's properties.
+            </summary>
+            <remarks>Note that this type makes no attempt to protect against unsafe modification of static properties.</remarks>
+        </member>
+        <member name="F:BepuPhysics.StaticReference.Handle">
+            <summary>
+            Handle of the static that this reference refers to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticReference.Statics">
+            <summary>
+            The collection containing the static.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.#ctor(BepuPhysics.StaticHandle,BepuPhysics.Statics)">
+            <summary>
+            Constructs a new static reference.
+            </summary>
+            <param name="handle">Handle of the static to refer to.</param>
+            <param name="statics">Collection containing the static.</param>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Exists">
+            <summary>
+            Gets whether the static reference exists within the static set. True if the handle maps to a valid memory location that agrees that the handle points to it, false otherwise.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Index">
+            <summary>
+            Gets a the static's index in the statics collection.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Static">
+            <summary>
+            Gets a reference to the entirety of the static's memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Pose">
+            <summary>
+            Gets a reference to the static's pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Continuity">
+            <summary>
+            Gets a reference to the static's collision continuity settings.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Shape">
+            <summary>
+            Gets the shape used by the static. To set the shape, use <see cref="M:BepuPhysics.StaticReference.SetShape(BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.StaticReference.ApplyDescription(BepuPhysics.StaticDescription@)"/>.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.CollidableReference">
+            <summary>
+            <para>Gets a CollidableReference for this static. CollidableReferences uniquely identify a collidable object in a simulation by including both the dynamic/kinematic/static state of the object and its handle.</para>
+            <para>Despite an unfortunate naming collision, CollidableReferences are distinct from a direct reference to a static's collidable data, which you can get from the Collidable property.</para>
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetDescription(BepuPhysics.StaticDescription@)">
+            <summary>
+            Gets a description of the static.
+            </summary>
+            <param name="description">Description of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetDescription">
+            <summary>
+            Gets a description of the static.
+            </summary>
+            <returns>Description of the static.</returns>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.ApplyDescription(BepuPhysics.StaticDescription@)">
+            <summary>
+            Sets a static's properties according to a description.
+            </summary>
+            <param name="description">Description of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.SetShape(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a static.
+            </summary>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.BoundingBox">
+            <summary>
+            Gets a copy of the static's bounding box.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetBoundsReferencesFromBroadPhase(BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets direct pointers to the static's bounding box minimum and maximum in the broad phase. Outputs null if the static has no shape.
+            </summary>
+            <param name="min">Pointer to the bounding box minimum in the broad phase.</param>
+            <param name="max">Pointer to the bounding box maximum in the broad phase.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.UpdateBounds">
+            <summary>
+            Updates the static's bounds in the broad phase for its current state. Does not include velocity expansion. Does nothing if the static has no shape.
+            </summary>
+            <remarks>Can be useful if you made modifications to the static's state that you want reflected in the broad phase before the next timestep.
+            For example, if you want to perform ray casts against the broad phase after moving objects around directly, their bounds must be updated or else the broad phase bounds will be out of date and the ray will likely miss.</remarks>
+        </member>
+        <member name="T:BepuPhysics.IStaticChangeAwakeningFilter">
+            <summary>
+            Defines a type that determines which bodies should be awoken in the bounding box of a static when the static's state changes.
+            </summary>
+            <remarks>We cannot find bodies depending on a static through constraints, since statics do not maintain constraint lists.
+            When a static is added, removed, has SetShape or has ApplyDescription called on it, 
+            it looks up bodies in its bounding box that could possibly be affected by change and considers waking them up.
+            This filter can be used to ignore some bodies.</remarks>
+        </member>
+        <member name="P:BepuPhysics.IStaticChangeAwakeningFilter.AllowAwakening">
+            <summary>
+            Gets whether to allow awakening for any body. If true, candidates will have the ShouldAwaken function called for them. 
+            If false, ShouldAwaken will not be called, and no bodies will be awoken.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IStaticChangeAwakeningFilter.ShouldAwaken(BepuPhysics.BodyReference)">
+            <summary>
+            Determines whether a body should be forced awake by the state change of a static.
+            </summary>
+            <param name="body">Sleeping body under consideration for awakening.</param>
+            <returns>True if the body should be forced awake, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.StaticsShouldntAwakenKinematics">
+            <summary>
+            Default awakening filter that only wakes up dynamic bodies. Kinematic bodies do not respond to any kind of dynamic simulation, so they won't respond to the change in statics.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Static">
+            <summary>
+            Stores data for a static collidable in the simulation. Statics can be posed and collide, but have no velocity and no dynamic behavior.
+            </summary>
+            <remarks>Unlike bodies, statics have a very simple access pattern. Most data is referenced together and there are no extreme high frequency data accesses like there are in the solver.
+            Everything can be conveniently stored within a single location contiguously.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Static.Pose">
+            <summary>
+            Pose of the static collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Static.Continuity">
+            <summary>
+            Continuous collision detection settings for this collidable. Includes the collision detection mode to use and tuning variables associated with those modes.
+            </summary>
+            <remarks>Note that statics cannot move, so there is no difference between <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> and <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/> for them.
+            Enabling <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/> will still require that pairs associated with the static use swept continuous collision detection.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Static.Shape">
+            <summary>
+            Index of the shape used by the static. While this can be changed, any transition from shapeless->shapeful or shapeful->shapeless must be reported to the broad phase. 
+            If you need to perform such a transition, consider using <see cref="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)"/> or Statics.ApplyDescription; those functions update the relevant state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Static.BroadPhaseIndex">
+            <summary>
+            Index of the collidable in the broad phase. Used to look up the target location for bounding box scatters. Under normal circumstances, this should not be set externally.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Statics">
+            <summary>
+            Collection of allocated statics.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.HandleToIndex">
+            <summary>
+            Remaps a static handle integer value to the actual array index of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.IndexToHandle">
+            <summary>
+            Remaps a static index to its handle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.StaticsBuffer">
+            <summary>
+            The set of collidables owned by each static. Speculative margins, continuity settings, and shape indices can be changed directly.
+            Shape indices cannot transition between pointing at a shape and pointing at nothing or vice versa without notifying the broad phase of the collidable addition or removal.
+            Consider using <see cref="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.Statics.ApplyDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)"/> to handle the bookkeeping changes automatically if changing the shape.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Statics.Item(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to the memory backing a static collidable. The <see cref="T:BepuPhysics.StaticReference"/> type is a helper that exposes common operations for statics.
+            </summary>
+            <param name="handle">Handle of the static to retrieve a reference for.</param>
+            <returns>Reference to the memory backing a static collidable.</returns>
+            <remarks>Equivalent to <see cref="M:BepuPhysics.Statics.GetStaticReference(BepuPhysics.StaticHandle)"/>.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDirectReference(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a direct reference to the memory backing a static.
+            </summary>
+            <param name="handle">Handle of the static to get a reference of.</param>
+            <returns>Direct reference to the memory backing a static.</returns>
+            <remarks>This is distinct from the <see cref="P:BepuPhysics.Statics.Item(BepuPhysics.StaticHandle)"/> indexer in that this returns the direct memory reference. <see cref="T:BepuPhysics.StaticReference"/> includes a layer of indirection that can expose more features.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Statics.Item(System.Int32)">
+            <summary>
+            Gets a reference to the raw memory backing a static collidable.
+            </summary>
+            <param name="index">Index of the static to retrieve a memory reference for.</param>
+            <returns>Direct reference to the memory backing a static collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.StaticExists(BepuPhysics.StaticHandle)">
+            <summary>
+            Checks whether a static handle is currently registered with the statics set.
+            </summary>
+            <param name="handle">Handle to check for.</param>
+            <returns>True if the handle exists in the collection, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.RemoveAt``1(System.Int32,``0@)">
+            <summary>
+            Removes a static from the set by index. Any sleeping bodies with bounding boxes overlapping the removed static's bounding box and passing the given filter will be forced awake.
+            </summary>
+            <param name="index">Index of the static to remove.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the removed static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.RemoveAt(System.Int32)">
+            <summary>
+            Removes a static from the set by index. Any sleeping dynamic bodies with bounding boxes overlapping the removed static's bounding box will be forced active.
+            </summary>
+            <param name="index">Index of the static to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.Remove``1(BepuPhysics.StaticHandle,``0@)">
+            <summary>
+            Removes a static from the set. Any sleeping bodies with bounding boxes overlapping the removed static's bounding box and passing the given filter will be forced active.
+            </summary>
+            <param name="handle">Handle of the static to remove.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the removed static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.Remove(BepuPhysics.StaticHandle)">
+            <summary>
+            Removes a static from the set. Any sleeping dynamic bodies with bounding boxes overlapping the removed static's bounding box will be forced active.
+            </summary>
+            <param name="handle">Handle of the static to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.UpdateBounds(BepuPhysics.StaticHandle)">
+            <summary>
+            Updates the bounds held within the broad phase for the static's current state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Statics.Add``1(BepuPhysics.StaticDescription@,``0@)">
+            <summary>
+            Adds a new static body to the simulation. All sleeping bodies whose bounding boxes overlap the new static and pass the given filter are forced active.
+            </summary>
+            <param name="description">Description of the static to add.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the new static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+            <returns>Handle of the new static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.Add(BepuPhysics.StaticDescription@)">
+            <summary>
+            Adds a new static body to the simulation. All sleeping dynamic bodies whose bounding boxes overlap the new static are forced active.
+            </summary>
+            <param name="description">Description of the static to add.</param>
+            <returns>Handle of the new static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.SetShape``1(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex,``0@)">
+            <summary>
+            Changes the shape of a static and updates its bounds in the broad phase. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            </summary>
+            <param name="handle">Handle of the static to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a static and updates its bounds in the broad phase. All sleeping dyanmic bodies with bounding boxes overlapping the old or new static collidable are forced active.
+            </summary>
+            <param name="handle">Handle of the static to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.ApplyDescription``1(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@,``0@)">
+            <summary>
+            Applies a new description to an existing static object. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            Updates the bounds of the static in the broad phase.
+            </summary>
+            <param name="handle">Handle of the static to apply the description to.</param>
+            <param name="description">Description to apply to the static.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.ApplyDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)">
+            <summary>
+            Applies a new description to an existing static object. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            Updates the bounds of the static in the broad phase.
+            </summary>
+            <param name="handle">Handle of the static to apply the description to.</param>
+            <param name="description">Description to apply to the static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)">
+            <summary>
+            Gets the current description of the static referred to by a given handle.
+            </summary>
+            <param name="handle">Handle of the static to look up the description of.</param>
+            <param name="description">Gathered description of the handle-referenced static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDescription(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets the current description of the static referred to by a given handle.
+            </summary>
+            <param name="handle">Handle of the static to look up the description of.</param>
+            <returns>Gathered description of the handle-referenced static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetStaticReference(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to a static by its handle.
+            </summary>
+            <param name="handle">Handle of the static to grab a reference of.</param>
+            <returns>Reference to the desired static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.Clear">
+            <summary>
+            Clears all bodies from the set without returning any memory to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Statics.Resize(System.Int32)">
+            <summary>
+            Resizes the allocated spans for static data. Note that this is conservative; it will never orphan existing objects.
+            </summary>
+            <param name="capacity">Target static data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of buffers if needed to hold the target capacity.
+            </summary>
+            <param name="capacity">Target data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.Dispose">
+            <summary>
+            Returns all static resources to the pool used to create them.
+            </summary>
+            <remarks>The object can be reused if it is reinitialized by using EnsureCapacity or Resize.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Trees.Leaf">
+            <summary>
+            Pointer to a leaf's tree location.
+            </summary>
+            <remarks>The identity of a leaf is implicit in its position within the leaf array.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Trees.Leaf.NodeIndex">
+            <summary>
+            Gets the index of the node that the leaf is directly held by.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Trees.Leaf.ChildIndex">
+            <summary>
+            Gets which child within the owning node the leaf is in.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Node">
+            <summary>
+            2-wide tree node.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Metanode">
+            <summary>
+            Metadata associated with a 2-child tree node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Metanode.LocalCostChange">
+            <summary>
+            Cached change in cost of the tree starting at this node since the previous frame.
+            The local cost change is unioned with the refine flags. They're never used simultaneously.
+            This will be overwritten right after use, so don't expect anything meaningful here outside of refinement scheduling's scope.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.TreeRay">
+            <summary>
+            Ray representation designed for quicker intersection against axis aligned bounding boxes.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Trees.RaySource.RayCount">
+            <summary>
+            Gets the number of rays in the batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RaySource.GetRay(System.Int32,BepuPhysics.Trees.RayData*@,BepuUtilities.Numerics.Number*@)">
+            <summary>
+            Gets pointers to the data for a ray.
+            </summary>
+            <param name="rayIndex">Index of the ray to grab.</param>
+            <param name="ray">Pointer to the ray's origin and direction. Note that changing the ray's origin and direction mid-traversal will not change the path of the traversal, 
+            but it will be visible by any future leafs impacted by this ray.</param>
+            <param name="maximumT">Pointer to the maximum length of the ray in units of the ray's length.
+            Decreasing this value will prevent the traversal from visiting more distant nodes later in the traversal.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RaySource.GetRay(System.Int32)">
+            <summary>
+            Gets a reference to the data for a ray.
+            </summary>
+            <param name="rayIndex">Index of the ray to grab.</param>
+            <returns>Returns a reference to the ray in the ray source.</returns>
+        </member>
+        <member name="T:BepuPhysics.Trees.RayBatcher">
+            <summary>
+            Reusable structure for testing large numbers of rays against trees.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.#ctor(BepuUtilities.Memory.BufferPool,System.Int32,System.Int32)">
+            <summary>
+            Constructs a ray batcher and initializes its backing resources.
+            </summary>
+            <param name="pool">Pool to pull resources from.</param>
+            <param name="rayCapacity">Maximum number of rays to execute in each traversal.
+            This should typically be chosen as the highest value which avoids spilling data out of L2 cache.</param>
+            <param name="treeDepthForPreallocation">Tree depth to preallocate ray stack space for. If a traversal finds nodes deeper than this, a dynamic resize will be triggered.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.Dispose">
+            <summary>
+            Disposes all the resources backing the ray batcher.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.RayBatcher.TreeRayWide">
+            <summary>
+            Ray representation designed for quicker intersection against axis aligned bounding boxes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.TestRays``1(BepuPhysics.Trees.Tree@,``0@)">
+            <summary>
+            Tests any batched rays against the given tree.
+            </summary>
+            <param name="tree">Tree to test the accumulated rays against.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher. Returns true if the batcher has reached maximum ray capacity and needs to be reset in order to continue adding rays.
+            </summary>
+            <param name="origin">Origin of the ray to test against the tree.</param>
+            <param name="direction">Direction of the ray to test against the tree.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Leaf tests will have access to the id.</param>
+            <returns>True if the batcher is full and requires a call to ResetRays before adding any more rays, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.ResetRays">
+            <summary>
+            Resets the accumulated ray count to zero.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Nodes">
+            <summary>
+            Buffer of nodes in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Metanodes">
+            <summary>
+            Buffer of metanodes in the tree. Metanodes contain metadata that aren't read during most query operations but are useful for bookkeeping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Leaves">
+            <summary>
+            Buffer of leaves in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.NodeCount">
+            <summary>
+            Number of nodes in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.LeafCount">
+            <summary>
+            Number of leaves in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.GetBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets bounds pointerse for a leaf in the tree.
+            </summary>
+            <param name="leafIndex">Index of the leaf in the tree.</param>
+            <param name="minPointer">Pointer to the minimum bounds vector in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds vector in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.UpdateBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given leaf index in the tree, refitting the tree to match.
+            </summary>
+            <param name="leafIndex">Index of the leaf in the tree to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.#ctor(BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Constructs an empty tree.
+            </summary>
+            <param name="pool">Buffer pool to use to allocate resources in the tree.</param>
+            <param name="initialLeafCapacity">Initial number of leaves to allocate room for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.#ctor(System.Span{System.Byte},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Loads a tree from a byte buffer created by the Serialize function.
+            </summary>
+            <param name="data">Data to load into the tree.</param>
+            <param name="pool">Pool to use to create the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.GetSerializedByteCount">
+            <summary>
+            Gets the number of bytes required to store the tree.
+            </summary>
+            <returns>Number of bytes required to store the tree.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Serialize(System.Span{System.Byte})">
+            <summary>
+            Writes a tree into a byte buffer.
+            </summary>
+            <param name="bytes">Buffer to hold the tree's data.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Resize(BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Resizes the buffers backing the tree's nodes and leaves. Will not shrink the buffers below the size needed by the currently resident nodes and leaves.
+            </summary>
+            <param name="pool">Pool from which to take and return resources.</param>
+            <param name="targetLeafSlotCount">The desired number of available leaf slots.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Clear">
+            <summary>
+            Resets the tree to a fresh post-construction state, clearing out leaves and nodes but leaving the backing resources intact.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the tree's backing resources, returning them to the Pool currently associated with the tree.
+            </summary>
+            <param name="pool">Pool to return resources to.</param>
+            <remarks>Disposed trees can be reused if EnsureCapacity or Resize is used to rehydrate them.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Equals(BepuPhysics.Trees.Tree@,BepuPhysics.Trees.Tree@)">
+            <summary>
+            Tests if two tree references point to the same data.
+            </summary>
+            <param name="a">First tree to compare.</param>
+            <param name="b">Second tree to compare.</param>
+            <returns>True if the two trees have the same nodes and node count, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MergeLeafNodes(BepuUtilities.BoundingBox@,System.Int32,System.Int32,BepuUtilities.BoundingBox@)">
+            <summary>
+            Merges a new leaf node with an existing leaf node, producing a new internal node referencing both leaves, and then returns the index of the leaf node.
+            </summary>
+            <param name="newLeafBounds">Bounding box of the leaf being added.</param>
+            <param name="parentIndex">Index of the parent node that the existing leaf belongs to.</param>
+            <param name="indexInParent">Index of the child wtihin the parent node that the existing leaf belongs to.</param>
+            <param name="merged">Bounding box holding both the new and existing leaves.</param>
+            <returns>Index of the leaf </returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Add(BepuUtilities.BoundingBox,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Adds a leaf to the tree with the given bounding box and returns the index of the added leaf.
+            </summary>
+            <param name="bounds">Extents of the leaf bounds.</param>
+            <param name="pool">Resource pool to use if resizing is required.</param>
+            <returns>Index of the leaf allocated in the tree's leaf array.</returns>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext">
+            <summary>
+            Stores resources required by a worker to dispatch and manage multithreaded work.
+            </summary>
+            <remarks>
+            Some of the resources cached here are technically redundant with the storage used for workers and ends up involving an extra bin scan on a multithreaded test,
+            but the cost associated with doing so is... low. The complexity cost of trying to use the memory allocated for workers is not low.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinBoundingBoxes">
+            <summary>
+            Bins associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinCentroidBoundingBoxes">
+            <summary>
+            Centroid bound bins associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinBoundingBoxesScan">
+            <summary>
+            Bins associated with this worker for use in the SAH scan. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinCentroidBoundingBoxesScan">
+            <summary>
+            Centroid bound bins associated with this worker for use in the SAH scan. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinLeafCounts">
+            <summary>
+            Bin leaf counts associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.MultithreadBinnedBuildContext.OriginalSubtreeCount">
+            <summary>
+            The number of subtrees present at the root of the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.MultithreadBinnedBuildContext.TopLevelTargetTaskCount">
+            <summary>
+            The target number of tasks that would be used for the root node. Later nodes will tend to target smaller numbers of tasks on the assumption that other parallel nodes will provide enough work to fill in the gaps.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.JobFilterTagHeader">
+            <summary>
+            Random value stored in the upper 32 bits of the job tag submitted for internal multithreading operations.
+            </summary>
+            <remarks>Other systems using the same task stack may want to use their own filtering approaches. By using a very specific and unique signature, those other systems are less likely to accidentally collide.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.CentroidPrepassTaskContext.PrepassWorkers">
+            <summary>
+            Stores per-worker prepass bounds accumulated over multiple tasks. If there are less tasks than workers, then only the lower contiguous region of these bounds are used.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.CentroidPrepassTaskContext.Bounds">
+            <summary>
+            Buffer containing the bounding boxes of all subtrees in the node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.BinSubtreesWorkers">
+            <summary>
+            Bins associated with any workers that end up contributing to this worker's dispatch of a binning loop. If there are less tasks than workers, then only the lower contiguous region of these bounds are used.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.WorkerHelpedWithBinning">
+            <summary>
+            Whether a given worker contributed to the subtree binning process. If this worker did not contribute, there's no reason to merge its bins.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.Subtrees">
+            <summary>
+            Buffer containing all subtrees in this node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.BinIndices">
+            <summary>
+            Stores the bin indices of all subtrees in the node.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.DoWriteBinIndices">
+            <summary>
+            Marks a <see cref="M:BepuPhysics.Trees.Tree.BinSubtrees``1(BepuUtilities.Numerics.Vector4,System.Boolean,System.Boolean,BepuUtilities.Numerics.Vector128{System.Int32},System.Int32,BepuUtilities.Numerics.Vector4,BepuUtilities.Numerics.Vector4,BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{System.Int32},BepuUtilities.Memory.Buffer{System.Byte})"/> call as requiring the bin indices to be written to the binIndices buffer.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.DoNotWriteBinIndices">
+            <summary>
+            Marks a <see cref="M:BepuPhysics.Trees.Tree.BinSubtrees``1(BepuUtilities.Numerics.Vector4,System.Boolean,System.Boolean,BepuUtilities.Numerics.Vector128{System.Int32},System.Int32,BepuUtilities.Numerics.Vector4,BepuUtilities.Numerics.Vector4,BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{System.Int32},BepuUtilities.Memory.Buffer{System.Byte})"/> call as not allowing the bin indices to be written to the binIndices buffer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.Subtrees">
+            <summary>
+            Buffer containing all subtrees in this node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.SubtreesNext">
+            <summary>
+            Buffer that will contain the partitioned subtrees pulled from <see cref="F:BepuPhysics.Trees.Tree.PartitionTaskContext.Subtrees"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.BinIndices">
+            <summary>
+            Buffer containing bin indices for all subtrees in the node (encoded with one byte per subtree).
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuilderInternal(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Node},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Metanode},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Leaf},BepuUtilities.Memory.Buffer{System.Byte},BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a binned build across the input <see cref="T:BepuPhysics.Trees.NodeChild"/> buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="subtreesPong">A parallel buffer to subtrees which is used as a scratch buffer during execution. If a default initialized buffer is provided, a slower sequential in-place fallback will be used.</param>
+            <param name="nodes">Buffer holding the nodes created by the build process.<para/>
+            Nodes are created in a depth first ordering with respect to the input buffer.</param>
+            <param name="metanodes">Buffer holding the metanodes created by the build process.<para/>
+            Metanodes, like nodes, are created in a depth first ordering with respect to the input buffer.
+            Metanodes are in the same order and in the same slots; they simply contain data about nodes that most traversals don't need to know about.</param>
+            <param name="leaves">Buffer holding the leaf references created by the build process.<para/>
+            The indices written by the build process are those defined in the inputs; any <see cref="F:BepuPhysics.Trees.NodeChild.Index"/> that is negative is encoded according to <see cref="M:BepuPhysics.Trees.Tree.Encode(System.Int32)"/> and points into the leaf buffer.
+            If a default-valued (unallocated) buffer is passed in, the binned builder will ignore leaves.</param>
+            <param name="binIndices">Buffer to be used for caching bin indices during execution. If subtreesPong is defined, binIndices must also be defined, and vice versa.</param>
+            <param name="dispatcher">Thread dispatcher used to accelerate the build process.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param>
+            <param name="workerIndex">Index of the current worker.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder.</param>
+            <param name="pool">Buffer pool used to preallocate temporary resources for building.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node. Must be no higher than 255.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Node},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Metanode},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Leaf},BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a multithreaded binned build across the subtrees buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="nodes">Buffer holding the nodes created by the build process.<para/>
+            Nodes are created in a depth first ordering with respect to the input buffer.</param>
+            <param name="metanodes">Buffer holding the metanodes created by the build process.<para/>
+            Metanodes, like nodes, are created in a depth first ordering with respect to the input buffer.
+            Metanodes are in the same order and in the same slots; they simply contain data about nodes that most traversals don't need to know about.</param>
+            <param name="leaves">Buffer holding the leaf references created by the build process.<para/>
+            The indices written by the build process are those defined in the inputs; any <see cref="F:BepuPhysics.Trees.NodeChild.Index"/> that is negative is encoded according to <see cref="M:BepuPhysics.Trees.Tree.Encode(System.Int32)"/> and points into the leaf buffer.
+            If a default-valued (unallocated) buffer is passed in, the binned builder will ignore leaves.</param>
+            <param name="pool">Buffer pool used to preallocate a pingpong buffer if the number of subtrees exceeds maximumSubtreeStackAllocationCount. If null, stack allocation or a slower in-place partitioning will be used.
+            <param name="dispatcher">Dispatcher used to multithread the execution of the build. If the dispatcher is not null, pool must also not be null.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param>
+            <para/>A pool must be provided if a thread dispatcher is given.</param>
+            <param name="workerIndex">Index of the currently executing worker. If not running within a dispatch, 0 is valid.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.
+            If negative, the dispatcher's thread count will be used.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder. If negative, the dispatcher's thread count will be used.</param>
+            <param name="maximumSubtreeStackAllocationCount">Maximum number of subtrees to try putting on the stack for the binned builder's pong buffers.<para/>
+            Subtree counts larger than this threshold will either resort to a buffer pool allocation (if available) or slower in-place partition operations.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a binned build across the subtrees buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="pool">Buffer pool used to preallocate a pingpong buffer if the number of subtrees exceeds maximumSubtreeStackAllocationCount. If null, stack allocation or a slower in-place partitioning will be used.
+            <para/>A pool must be provided if a thread dispatcher is given.</param>
+            <param name="dispatcher">Dispatcher used to multithread the execution of the build. If the dispatcher is not null, pool must also not be null.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param> 
+            <param name="workerIndex">Index of the currently executing worker. If not running within a dispatch, 0 is valid.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.
+            If negative, the dispatcher's thread count will be used.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder. If negative, the dispatcher's thread count will be used.</param>
+            <param name="maximumSubtreeStackAllocationCount">Maximum number of subtrees to try putting on the stack for the binned builder's pong buffers.<para/>
+            Subtree counts larger than this threshold will either resort to a buffer pool allocation (if available) or slower in-place partition operations.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.ComputeCacheOptimalLocation(System.Int32)">
+            <summary>
+            Computes the index where the given node would be located if the tree were in depth first traversal order.
+            </summary>
+            <param name="nodeIndex">Node index to find the location for in a depth first traversal order.</param>
+            <returns>Target index of the node if the tree were in depth first traversal order.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimize(System.Int32)">
+            <summary>
+            Begins a cache optimization at the given node and proceeds all the way to the bottom of the tree.
+            Requires that the targeted node is already at the global optimum position.
+            </summary>
+            <param name="nodeIndex">Node to begin the optimization process at.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimizeLimitedSubtree(System.Int32,System.Int32)">
+            <summary>
+            Starts a cache optimization process at the target node index and the nodeOptimizationCount closest nodes in the tree.
+            </summary>
+            <param name="nodeIndex">Node index to start the optimization process at.</param>
+            <param name="nodeOptimizationCount">Number of nodes to move.</param>
+            <remarks>This optimizer will move the targeted node index to the globally optimal location if necessary.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimizeRegion(System.Int32,System.Int32)">
+            <summary>
+            Puts all nodes starting from the given node index into depth first traversal order.
+            If the count is larger than the number of nodes beneath the starting node, the optimization will stop early.
+            </summary>
+            <param name="startingNodeIndex">Node index to start the optimization at.</param>
+            <param name="targetCount">Number of nodes to try to optimize.</param>
+            <returns>Number of nodes optimized.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.PrepareJobs(BepuPhysics.Trees.Tree@,BepuPhysics.Trees.Tree@,`0[],System.Int32)">
+            <summary>
+            Prepares the jobs associated with a self test. Must be called before a dispatch over PairTest.
+            </summary>
+            <param name="overlapHandlers">Callbacks used to handle individual overlaps detected by the self test.</param>
+            <param name="threadCount">Number of threads to prepare jobs for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.CompleteTest">
+            <summary>
+            Cleans up after a multithreaded self test.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.PairTest(System.Int32)">
+            <summary>
+            Executes a single worker of the multithreaded self test.
+            </summary>
+            <param name="workerIndex">Index of the worker executing this set of tests.</param>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.RefitAndRefineMultithreadedContext">
+            <summary>
+            Caches input and output for the multithreaded execution of a tree's refit and refinement operations.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.TryPushChildForRootRefinement(System.Int32,BepuUtilities.Memory.Buffer{BepuUtilities.Numerics.Vector{System.Int32}},System.Int32,System.Int32,BepuPhysics.Trees.NodeChild@,BepuUtilities.Collections.QuickList{System.ValueTuple{System.Int32,System.Int32}}@,BepuUtilities.Collections.QuickList{BepuPhysics.Trees.NodeChild}@)">
+            <summary>
+            Checks if a child should be a subtree in the root refinement. If so, it's added to the list. Otherwise, it's pushed onto the stack.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.RefinementContext.Tree">
+            <remarks>
+            This is a *copy* of the original tree that spawned this refinement. Refinements do not modify the memory stored at the level of the Tree, only memory *pointed* to by the tree.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.TaskScheduling.TaskStack*,BepuUtilities.IThreadDispatcher,System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.RefitForNodeBoundsChange(System.Int32)">
+            <summary>
+            Refits the bounding box of every parent of the node recursively to the root.
+            </summary>
+            <param name="nodeIndex">Node to propagate a node change for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refit">
+            <summary>
+            Updates the bounding boxes of all internal nodes in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refit2">
+            <summary>
+            Updates the bounding boxes of all internal nodes in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.RemoveAt(System.Int32)">
+            <summary>
+            Removes a leaf at an index. If the index is not at the end of the leaf list, the last leaf is swapped into the removed location.
+            </summary>
+            <param name="leafIndex">Index of the leaf to remove.</param>
+            <returns>Former index of the leaf that was moved into the removed leaf's slot, if any.
+            If leafIndex pointed at the last slot in the list, then this returns -1 since no leaf was moved.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.PrepareJobs(BepuPhysics.Trees.Tree@,`0[],System.Int32)">
+            <summary>
+            Prepares the jobs associated with a self test. Must be called before a dispatch over PairTest.
+            </summary>
+            <param name="tree">Tree to test against itself.</param>
+            <param name="overlapHandlers">Callbacks used to handle individual overlaps detected by the self test.</param>
+            <param name="threadCount">Number of threads to prepare jobs for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.CompleteSelfTest">
+            <summary>
+            Cleans up after a multithreaded self test.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.PairTest(System.Int32)">
+            <summary>
+            Executes a single worker of the multithreaded self test.
+            </summary>
+            <param name="workerIndex">Index of the worker executing this set of tests.</param>
+        </member>
+    </members>
+</doc>

BIN
Debug/net8.0/BepuUtilities.dll


BIN
Debug/net8.0/BepuUtilities.pdb


+ 5560 - 0
Debug/net8.0/BepuUtilities.xml

@@ -0,0 +1,5560 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>BepuUtilities</name>
+    </assembly>
+    <members>
+        <member name="T:BepuUtilities.AffineTransform">
+            <summary>
+             A transformation composed of a linear transformation and a translation.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.AffineTransform.Translation">
+            <summary>
+             Translation in the affine transform.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.AffineTransform.LinearTransform">
+            <summary>
+            Linear transform in the affine transform.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.AffineTransform.Identity">
+            <summary>
+             Gets the identity affine transform.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="translation">Translation to use in the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine tranform.
+            </summary>
+            <param name="orientation">Orientation to use as the linear transform.</param>
+            <param name="translation">Translation to use in the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="scaling">Scaling to apply in the linear transform.</param>
+            <param name="orientation">Orientation to apply in the linear transform.</param>
+            <param name="translation">Translation to apply.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="linearTransform">The linear transform component.</param>
+            <param name="translation">Translation component of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.AffineTransform@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+             Transforms a vector by an affine transform.
+            </summary>
+            <param name="position">Position to transform.</param>
+            <param name="transform">Transform to apply.</param>
+            <param name="transformed">Transformed position.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Invert(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+             Inverts an affine transform.
+            </summary>
+            <param name="transform">Transform to invert.</param>
+             <param name="inverse">Inverse of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.InvertRigid(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+             Inverts a rigid transform.
+            </summary>
+            <param name="transform">Transform to invert.</param>
+             <param name="inverse">Inverse of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Multiply(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+            Multiplies a transform by another transform.
+            </summary>
+            <param name="a">First transform.</param>
+            <param name="b">Second transform.</param>
+            <param name="transform">Combined transform.</param>
+        </member>
+        <member name="T:BepuUtilities.BoundingBox4">
+            <summary>
+            Represents a bounding box as two <see cref="T:BepuUtilities.Numerics.Vector4"/> values to to avoid complexity associated with a <see cref="T:BepuUtilities.Numerics.Vector3"/>'s empty SIMD lane.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox4.Min">
+            <summary>
+            Location with the lowest X, Y, and Z coordinates in the axis-aligned bounding box. W lane is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox4.Max">
+            <summary>
+            Location with the highest X, Y, and Z coordinates in the axis-aligned bounding box. W lane is undefined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox4.ToString">
+            <summary>
+            Creates a string representation of the bounding box.
+            </summary>
+            <returns>String representation of the bounding box.</returns>
+        </member>
+        <member name="T:BepuUtilities.BoundingBox">
+            <summary>
+            Provides simple axis-aligned bounding box functionality.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox.Min">
+            <summary>
+            Location with the lowest X, Y, and Z coordinates in the axis-aligned bounding box.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox.Max">
+            <summary>
+            Location with the highest X, Y, and Z coordinates in the axis-aligned bounding box.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Constructs a bounding box from the specified minimum and maximum.
+            </summary>
+            <param name="min">Location with the lowest X, Y, and Z coordinates contained by the axis-aligned bounding box.</param>
+            <param name="max">Location with the highest X, Y, and Z coordinates contained by the axis-aligned bounding box.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)">
+            <summary>
+            Checks if two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/> intersect.
+            The referenced values must not be in unpinned managed memory.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <returns>True if the children overlap, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.BoundingBox,BepuUtilities.BoundingBox)">
+            <summary>
+            Determines if a bounding box intersects another bounding box.
+            </summary>
+            <param name="a">First bounding box to test.</param>
+            <param name="b">Second bounding box to test.</param>
+            <returns>Whether the bounding boxes intersected.</returns>
+            <remarks>When possible, prefer using the <see cref="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)"/> variant for slightly better performance.</remarks>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Determines if a bounding box intersects another bounding box.
+            </summary>
+            <param name="minA">Minimum bounds of bounding box A.</param>
+            <param name="maxA">Maximum bounds of bounding box A.</param>
+            <param name="minB">Minimum bounds of bounding box B.</param>
+            <param name="maxB">Maximum bounds of bounding box B.</param>
+            <returns>Whether the bounding boxes intersected.</returns>
+            <remarks>When possible, prefer using the <see cref="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)"/> variant for slightly better performance.</remarks>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.ComputeVolume(BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes the volume of the bounding box.
+            </summary>
+            <param name="box">Bounding box to measure.</param>
+            <returns>Volume of the bounding box.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMerged(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes a bounding box which contains two other bounding boxes.
+            </summary>
+            <param name="minA">Minimum of the first bounding box to merge.</param>
+            <param name="maxA">Maximum of the first bounding box to merge.</param>
+            <param name="minB">Minimum of the second bounding box to merge.</param>
+            <param name="maxB">Maximum of the second bounding box to merge.</param>
+            <param name="min">Minimum of the merged bounding box.</param>
+            <param name="max">Maximum of the merged bounding box.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMerged(BepuUtilities.BoundingBox@,BepuUtilities.BoundingBox@,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box which contains two other bounding boxes.
+            </summary>
+            <param name="a">First bounding box to contain.</param>
+            <param name="b">Second bounding box to contain.</param>
+            <param name="merged">Bounding box to contain both input boxes.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMergedUnsafeWithPreservation``2(``0@,``1@,``0@)">
+            <summary>
+            Merges two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/>.
+            The referenced values must not be in unpinned managed memory.
+            Any data in the empty slots is preserved.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <param name="merged">Merged bounding box.</param>
+            <typeparam name="TA">Type of the first bounding box-like parameter.</typeparam>
+            <typeparam name="TB">Type of the second bounding box-like parameter.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMergedUnsafe``2(``0@,``1@,``0@)">
+            <summary>
+            Merges two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/>.
+            The referenced values must not be in unpinned managed memory.
+            Any data in the empty slots is not preserved.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <param name="merged">Merged bounding box.</param>
+            <typeparam name="TA">Type of the first bounding box-like parameter.</typeparam>
+            <typeparam name="TB">Type of the second bounding box-like parameter.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.BoundingSphere@)">
+            <summary>
+            Determines if a bounding box intersects a bounding sphere.
+            </summary>
+            <param name="boundingSphere">Sphere to test for intersection.</param>
+            <returns>Whether the bounding shapes intersect.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateFromPoints(System.ReadOnlySpan{BepuUtilities.Numerics.Vector3})">
+            <summary>
+            Creates the smallest possible bounding box that contains a list of points.
+            </summary>
+            <param name="points">Points to enclose with a bounding box.</param>
+            <returns>Bounding box which contains the list of points.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateFromSphere(BepuUtilities.BoundingSphere@,BepuUtilities.BoundingBox@)">
+            <summary>
+            Creates a bounding box from a bounding sphere.
+            </summary>
+            <param name="boundingSphere">Bounding sphere to be used to create the bounding box.</param>
+            <param name="boundingBox">Bounding box created from the bounding sphere.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.ToString">
+            <summary>
+            Creates a string representation of the bounding box.
+            </summary>
+            <returns>String representation of the bounding box.</returns>
+        </member>
+        <member name="T:BepuUtilities.BoundingSphere">
+            <summary>
+            Provides XNA-like bounding sphere functionality.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingSphere.Center">
+            <summary>
+            Location of the center of the sphere.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingSphere.Radius">
+            <summary>
+            Radius of the sphere.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingSphere.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new bounding sphere.
+            </summary>
+            <param name="center">Location of the center of the sphere.</param>
+            <param name="radius">Radius of the sphere.</param>
+        </member>
+        <member name="T:BepuUtilities.BundleIndexing">
+            <summary>
+            Some helpers for indexing into vector bundles.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.BundleIndexing.VectorMask">
+            <summary>
+            <![CDATA[Gets the mask value such that x & VectorMask computes x % Vector<Number>.Count.]]>
+            </summary>
+            <remarks>The JIT recognizes that this value is constant!</remarks>
+        </member>
+        <member name="P:BepuUtilities.BundleIndexing.VectorShift">
+            <summary>
+            <![CDATA[Gets the shift value such that x >> VectorShift divides x by Vector<Number>.Count.]]>
+            </summary>
+            <remarks>The JIT recognizes that this value is constant!</remarks>
+        </member>
+        <member name="M:BepuUtilities.BundleIndexing.GetLastSetLaneCount(BepuUtilities.Numerics.Vector{System.Int32})">
+            <summary>
+            Gets the number of lanes that occur at or before the last set lane. In other words, if the lanes in the vector are (-1, 0, -1, 0), then this will return 3.
+            </summary>
+            <param name="v">Vector to examine.</param>
+            <returns>Number of lanes that occur at or before the last set lane.</returns>
+        </member>
+        <member name="T:BepuUtilities.Collections.ArrayEnumerable`1">
+            <summary>
+            Enumerable wrapper of an array interval.
+            </summary>
+            <typeparam name="T">Type of the array elements.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[],System.Int32,System.Int32)">
+            <summary>
+            Creates a enumerable that spans an interval in an array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+            <param name="start">Inclusive beginning of the iteration interval.</param>
+            <param name="end">Exclusive end of the iteration interval.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[],System.Int32)">
+            <summary>
+            Creates a enumerable that starts at the first index of the array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+            <param name="count">Exclusive end of the iteration interval.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[])">
+            <summary>
+            Creates a enumerable over the entire array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.ArrayEnumerator`1">
+            <summary>
+            Enumerates over a given array region.
+            </summary>
+            <typeparam name="T">Type of the array to iterate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IComparerRef`1">
+            <summary>
+            Defines a type capable of comparing two objects passed by reference.
+            </summary>
+            <typeparam name="T">Type of the objects to compare.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IEqualityComparerRef`1">
+            <summary>
+            Defines a type capable of performing the hashing and equality comparisons necessary for hash based collections.
+            </summary>
+            <typeparam name="T">Type of the elements to be hashed and compared.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IndexSet">
+            <summary>
+            Collection of unique indices supporting add, remove, and contains operations.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.IndexSet.Flags">
+            <summary>
+            Since we only ever need to support add, remove and contains checks, and because the indices are guaranteed unique,
+            we can just use packed bitfields. Each bit represents one index's containment state.
+            </summary>
+            <remarks> 
+            This can grow up to the number of (indexCount / 8) bytes in the worst case, but that is much, much smaller than using a dictionary or set.
+            16384 bodies would only take 2KB. Even if you have 1000 batches all at that size, it's a pretty unconcerning amount of storage.
+            (And to be clear, 1000 batches is a crazy pathological number. Most simulations will have less than 20 batches.)
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.CanFit(System.Span{System.Int32})">
+            <summary>
+            Gets whether the batch could hold the specified indices.
+            </summary>
+            <param name="indexList">List of indices to check for in the batch.</param>
+            <returns>True if none of the indices are present in the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.SetUnsafely(System.Int32)">
+            <summary>
+            Sets an index in the set to contained without checking capacity or whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <remarks>This is functionally identical to the AddUnsafely method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Set(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Sets an index in the set to contained without checking whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <param name="pool">Pool to reuse the set if necessary.</param>
+            <remarks>This is functionally identical to the Add method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Unset(System.Int32)">
+            <summary>
+            Marks an index in the set as uncontained without checking whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <remarks>This is functionally identical to the Remove method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.AddUnsafely(System.Int32)">
+            <summary>
+            Adds an index to the set without checking capacity.
+            </summary>
+            <param name="index">Index to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Add(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an index to the set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <param name="pool">Pool to use to resize the set if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Disposes the internal buffer.
+            </summary>
+            <remarks>The instance can be reused after a Dispose if EnsureCapacity or Resize is called.
+            That's a little meaningless given that the instance is a value type, but hey, you don't have to new another one, that's something.</remarks>
+        </member>
+        <member name="T:BepuUtilities.Collections.IPredicate`1">
+            <summary>
+            Defines a type able to match an element.
+            </summary>
+            <typeparam name="T">Type of the object to match.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.LSBRadixSort.Sort``1(BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Sorts a set of keys and their associated values using radix sort.
+            </summary>
+            <remarks>Only one invocation of the sort can be running at a time on a given instance of the sorter.</remarks>
+            <typeparam name="TValue">Type of the values to sort.</typeparam>
+            <typeparam name="TKeySpan">Type of the span that holds the keys to sort.</typeparam>
+            <typeparam name="TValueSpan">Type of the span that holds the values to sort.</typeparam>
+            <param name="inputKeys">Span containing the keys to sort.</param>
+            <param name="inputValues">Span containing the values to sort.</param>
+            <param name="scratchKeys">Scratch array to write temporary results into.</param>
+            <param name="scratchValues">Scratch array to write temporary results into.</param>
+            <param name="startIndex">Start location of the sort.</param>
+            <param name="count">Number of elements, including the start index, to sort.</param>
+            <param name="keysUpperBound">Value equal to or greater than the value of any key within the sorted key set. Tighter bounds can allow faster execution.</param>
+            <param name="bufferPool">Pool to pull temporary buffers from.</param>
+            <param name="sortedKeys">Span containing the sorted keys. Will be either the input keys span or scratchKeys span depending on the keysUpperBound.</param>
+            <param name="sortedValues">Span containing the sorted values. Will be either the input values span or scratchValues span depending on the keysUpperBound.
+            Only the region defined by the startIndex and count is modified; the remainder of the span (whether it be the input span or the scratch span) is unmodified.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.PrimitiveComparer`1">
+            <summary>
+            Provides optimized equality testing, comparison, and hashing for primitive types.
+            </summary>
+            <typeparam name="T">Type to compare and hash.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.HashHelper">
+            <summary>
+            Contains basic helpers for hashing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.HashHelper.Rehash(System.Int32)">
+            <summary>
+            Redistributes a hash. Useful for converting unique but contiguous hashes into a semirandom distribution.
+            </summary>
+            <param name="hash">Hash to redistribute.</param>
+            <returns>Hashed hash.</returns>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickDictionary`3">
+            <summary>
+            Container supporting constant time adds and removes of key-value pairs while preserving fast iteration times.
+            Offers very direct access to information at the cost of safety.
+            </summary>
+            <remarks>
+            <para>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </para>
+            <para>Note that the implementation is extremely simple. It uses single-step linear probing under the assumption of very low collision rates.
+            A generous table capacity is recommended; this trades some memory for simplicity and runtime performance.</para></remarks>
+            <typeparam name="TKey">Type of key held by the container.</typeparam>
+            <typeparam name="TValue">Type of value held by the container.</typeparam>
+            <typeparam name="TEqualityComparer">Type of the equality tester and hash calculator used.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Count">
+            <summary>
+            Gets the number of elements in the dictionary.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.TableMask">
+            <summary>
+            Mask for use in performing fast modulo operations for hashes. Requires that the table span is a power of 2.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.TablePowerOffset">
+            <summary>
+            Desired size of the table relative to the size of the key/value spans in terms of a power of 2. Table capacity target will be elementCapacityTarget * 2^TablePowerOffset.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Table">
+            <summary>
+            Backing memory of the dictionary's table. Values are distributed according to the EqualityComparer's hash function.
+            Slots containing 0 are unused and point to nothing. Slots containing higher values are equal to one plus the index of an element in the Span.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Keys">
+            <summary>
+            Backing memory containing the keys of the dictionary.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Values">
+            <summary>
+            Backing memory containing the values of the dictionary.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.EqualityComparer">
+            <summary>
+            Equality comparer used to compare and hash keys.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickDictionary`3.Item(System.Int32)">
+            <summary>
+            Gets or sets a key-value pair at the given index in the list representation.
+            </summary>
+            <param name="index">Index to grab a pair from.</param>
+            <returns>Pair at the given index in the dictionary.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,`2,System.Int32)">
+            <summary>
+            Creates a new dictionary.
+            </summary>
+            <param name="initialKeySpan">Span to use as backing memory of the dictionary keys.</param>
+            <param name="initialValueSpan">Span to use as backing memory of the dictionary values.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="comparer">Comparer to use for the dictionary.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,System.Int32)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialKeySpan">Span to use as backing memory of the dictionary keys.</param>
+            <param name="initialValueSpan">Span to use as backing memory of the dictionary values.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="comparer">Comparer to use for the dictionary.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool,`2)">
+            <summary>
+            Creates a new dictionary.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@)">
+            <summary>
+            Swaps out the dictionary's backing memory span for a new span.
+            If the new span is smaller, the dictionary's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newKeySpan">New span to use for keys.</param>
+            <param name="newValueSpan">New span to use for values.</param>
+            <param name="newTableSpan">New span to use for the table. Must be zeroed.</param>
+            <param name="oldKeySpan">Previous span used for keys.</param>
+            <param name="oldValueSpan">Previous span used for values.</param>
+            <param name="oldTableSpan">Previous span used for the table.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the dictionary's backing array for the given size.
+            If the new span is smaller, the dictionary's count is truncated and the extra elements are dropped. 
+            </summary>
+            <param name="newSize">Minimum size of the new object memory block. Actual size may be larger.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the dictionary to pools.
+            </summary>
+            <param name="keyPool">Pool used for key spans.</param>   
+            <param name="valuePool">Pool used for value spans.</param>   
+            <param name="tablePool">Pool used for table spans.</param>
+            <typeparam name="TKeyPool">Type of the pool used for key spans.</typeparam>
+            <typeparam name="TValuePool">Type of the pool used for value spans.</typeparam>
+            <typeparam name="TTablePool">Type of the pool used for table spans.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the dictionary has enough room to hold the specified number of elements.
+            </summary>     
+            <param name="pool">Pool used for spans.</param>   
+            <param name="count">Number of elements to hold.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the internal buffers to the smallest acceptable size and releases the old buffers to the pools.
+            </summary>
+            <param name="pool">Pool used for spans.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.GetTableIndices(`0@,System.Int32@,System.Int32@)">
+            <summary>
+            Gets the index of the element in the table.
+            </summary>
+            <param name="element">Element to look up.</param>
+            <param name="tableIndex">Index of the element in the redirect table, or if it is not present, the index of where it would be added.</param>
+            <param name="elementIndex">The index of the element in the element arrays, if it exists; -1 otherwise.</param>
+            <returns>True if the element is present in the dictionary, false if it is not.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.IndexOf(`0)">
+            <summary>
+            Gets the index of the key in the dictionary values list if it exists.
+            </summary>
+            <param name="key">Key to get the index of.</param>
+            <returns>The index of the key if the key exists in the dictionary, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.IndexOf(`0@)">
+            <summary>
+            Gets the index of the key in the dictionary values list if it exists.
+            </summary>
+            <param name="key">Key to get the index of.</param>
+            <returns>The index of the key if the key exists in the dictionary, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.ContainsKey(`0)">
+            <summary>
+            Checks if a given key already belongs to the dictionary.
+            </summary>
+            <param name="key">Key to test for.</param>
+            <returns>True if the key already belongs to the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.ContainsKey(`0@)">
+            <summary>
+            Checks if a given key already belongs to the dictionary.
+            </summary>
+            <param name="key">Key to test for.</param>
+            <returns>True if the key already belongs to the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.TryGetValue(`0,`1@)">
+            <summary>
+            Tries to retrieve the value associated with a key if it exists.
+            </summary>
+            <param name="key">Key to look up.</param>
+            <param name="value">Value associated with the specified key.</param>
+            <returns>True if a value was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.TryGetValue(`0@,`1@)">
+            <summary>
+            Tries to retrieve the value associated with a key if it exists.
+            </summary>
+            <param name="key">Key to look up.</param>
+            <param name="value">Value associated with the specified key.</param>
+            <returns>True if a value was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlotUnsafely(`0@,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlotUnsafely(`0,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlot(`0@,BepuUtilities.Memory.BufferPool,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="pool">Pool used to resize the container if necessary to allocate.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlot(`0,BepuUtilities.Memory.BufferPool,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="pool">Pool used to resize the container if necessary to allocate.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplaceUnsafely(`0@,`1@)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplaceUnsafely(`0,`1@)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddUnsafely(`0@,`1@)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddUnsafely(`0,`1@)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplace(`0@,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplace(`0,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Add(`0@,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <typeparam name="TPool">Type of the pool used for spans.</typeparam>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Add(`0,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool to pull resources from and to return resources to.</param>   
+            <typeparam name="TPool">Type of the pool to use.</typeparam>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(System.Int32,System.Int32)">
+            <summary>
+            Removes an element from the dictionary according to its table and element index. Can only be used if the table and element index are valid.
+            </summary>
+            <param name="tableIndex">Index of the table entry associated with the existing element to remove.</param>
+            <param name="elementIndex">Index of the existing element to remove in the contiguous key/value arrays.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(`0@)">
+            <summary>
+            Removes a pair associated with a key from the dictionary if belongs to the dictionary.
+            Does not preserve the order of elements in the dictionary.
+            </summary>
+            <param name="key">Key of the pair to remove.</param>
+            <returns>True if the key was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(`0)">
+            <summary>
+            Removes a pair associated with a key from the dictionary if belongs to the dictionary.
+            Does not preserve the order of elements in the dictionary.
+            </summary>
+            <param name="key">Key of the pair to remove.</param>
+            <returns>True if the key was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Clear">
+            <summary>
+            Removes all elements from the dictionary.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastClear">
+            <summary>
+            Removes all elements from the dictionary without modifying the contents of the keys or values arrays.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AsSpans(System.Span{`0}@,System.Span{`1}@)">
+            <summary>
+            Gets the keys and values wrapped in spans.
+            </summary>
+            <param name="keys">Keys from the dictionary.</param>
+            <param name="values">Values from the dictionary.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickList`1">
+            <summary>
+            Container supporting list-like behaviors built on top of unmanaged buffers.
+            </summary>
+            <remarks>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </remarks>
+            <typeparam name="T">Type of the elements in the list.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickList`1.Span">
+            <summary>
+            Backing memory containing the elements of the list.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickList`1.Count">
+            <summary>
+            Number of elements in the list.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickList`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the element at the given index in the list.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the list.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.GetPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the element at the given index in the list.
+            </summary>
+            <param name="index">Index to grab an element pointer from.</param>
+            <returns>Pointer to the element at the given index in the list.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.#ctor(BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a new list.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory to begin with.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new list.
+            </summary>
+            <param name="pool">Pool to pull a span from.</param>
+            <param name="minimumInitialCount">The minimum size of the region to be pulled from the pool. Actual span may be larger.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Swaps out the list's backing memory span for a new span.
+            If the new span is smaller, the list's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newSpan">New span to use.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the list's backing array for the given size.
+            Any elements that do not fit in the resized span are dropped and the count is truncated.
+            </summary>
+            <param name="newSize">Minimum number of elements required in the new backing array. Actual capacity of the created span may exceed this size.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the list to pools. Any managed references still contained within the list are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the list has enough room to hold the specified number of elements. Can be used to initialize a list.
+            </summary>
+            <param name="count">Number of elements to hold.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Compacts the internal buffer to the minimum size required for the number of elements in the list.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(BepuUtilities.Memory.Buffer{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a buffer to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(BepuUtilities.Memory.Buffer{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a buffer to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(BepuUtilities.Memory.Buffer{`0})">
+            <summary>
+            Adds the elements of a buffer to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(BepuUtilities.Memory.Buffer{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a buffer to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.Span{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.Span{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.Span{`0})">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.Span{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.ReadOnlySpan{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.ReadOnlySpan{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.ReadOnlySpan{`0})">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.ReadOnlySpan{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AllocateUnsafely">
+            <summary>
+            Appends space on the end of the list without checking capacity and returns a reference to it.
+            </summary>
+            <returns>Reference to the allocated space.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AllocateUnsafely(System.Int32)">
+            <summary>
+            Appends space on the end of the list without checking capacity and returns a reference to the beginning of it.
+            </summary>
+            <param name="count">Number of elements to allocate space for.</param>
+            <returns>Reference to the beginning of the allocated space.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Allocate(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Appends space on the end of the list and returns a reference to it.
+            </summary>
+            <returns>Reference to the allocated space.</returns>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Allocate(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Appends space on the end of the list and returns a reference to the beginning of it.
+            </summary>
+            <returns>Reference to the beginning of the allocated space.</returns>
+            <param name="count">Number of elements to allocate space for.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddUnsafely(`0@)">
+            <summary>
+            Adds the element to the list without checking the count against the capacity.
+            </summary>
+            <param name="element">Item to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Add(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the element to the list.
+            </summary>
+            <param name="element">Item to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf(`0)">
+            <summary>
+            Gets the index of the element in the list using the default comparer, if present.
+            </summary>
+            <param name="element">Element to find.</param>
+            <returns>Index of the element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf(`0@)">
+            <summary>
+            Gets the index of the element in the list using the default comparer, if present.
+            </summary>
+            <param name="element">Element to find.</param>
+            <returns>Index of the element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf``1(``0@)">
+            <summary>
+            Gets the index of the first element in the list which matches a predicate, if any.
+            </summary>
+            <param name="predicate">Predicate to match.</param>
+            <returns>Index of the first matching element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove(`0@)">
+            <summary>
+            Removes an element from the list. Preserves the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove(`0)">
+            <summary>
+            Removes an element from the list. Preserves the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove``1(``0@)">
+            <summary>
+            Removes the first element that matches a predicate from the list. Preserves the order of elements.
+            </summary>
+            <param name="predicate">Predicate to test elements with.</param>
+            <returns>True if an element matched and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove(`0@)">
+            <summary>
+            Removes an element from the list. Does not preserve the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove(`0)">
+            <summary>
+            Removes an element from the list. Comparisons use the default comparer for the type. Does not preserve the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove``1(``0@)">
+            <summary>
+            Removes the first element from the list that matches a predicate, moving from low to high indices. Does not preserve the order of elements.
+            </summary>
+            <param name="predicate">Predicate to test elements with.</param>
+            <returns>True if an element matched and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.RemoveAt(System.Int32)">
+            <summary>
+            Removes an element from the list at the given index. Preserves the order of elements.
+            </summary>
+            <param name="index">Index of the element to remove from the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemoveAt(System.Int32)">
+            <summary>
+            Removes an element from the list at the given index. Does not preserve the order of elements.
+            </summary>
+            <param name="index">Index of the element to remove from the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Pop(`0@)">
+            <summary>
+            Removes and outputs the last element in the list. Assumes positive count. User is responsible for guaranteeing correctness.
+            </summary>
+            <param name="element">Last element of the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.TryPop(`0@)">
+            <summary>
+            Removes and outputs the last element in the list if it exists.
+            </summary>
+            <param name="element">Last element of the list.</param>
+            <returns>True if the element existed and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains(`0)">
+            <summary>
+            Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
+            </summary>
+            <returns>
+            true if <paramref name="element"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
+            </returns>
+            <param name="element">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains(`0@)">
+            <summary>
+            Determines whether the collection contains a specific value.
+            </summary>
+            <returns>
+            True if <paramref name="element"/> is found in the collection; otherwise, false.
+            </returns>
+            <param name="element">The object to locate in the collection.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains``1(``0@)">
+            <summary>
+            Determines whether the collection contains an element that matches a predicate.
+            </summary>
+            <returns>
+            True if an element matching the predicate exists, otherwise false.
+            </returns>
+            <param name="predicate">The predicate to test against elements in the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Clear">
+            <summary>
+            Clears the list by setting the count to zero and explicitly setting all relevant indices in the backing array to default values.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickQueue`1">
+            <summary>
+            Container supporting double ended queue behaviors built on top of pooled arrays.
+            </summary>
+            <remarks>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </remarks>
+            <typeparam name="T">Type of the elements in the queue.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.Count">
+            <summary>
+            Number of elements in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.FirstIndex">
+            <summary>
+            Index of the first element in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.LastIndex">
+            <summary>
+            Index of the last element in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.CapacityMask">
+            <summary>
+            Mask based on the current span length used to do fast modulo operations; requires that the span has a power of 2 length.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.Span">
+            <summary>
+            Gets the backing memory containing the elements of the queue.
+            Indices from FirstIndex to LastIndex inclusive hold actual data. All other data is undefined.
+            Watch out for wrap around; LastIndex can be less than FirstIndex even when count > 0!
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.GetBackingArrayIndex(System.Int32)">
+            <summary>
+            Gets the backing array index for the logical queue index.
+            </summary>
+            <param name="queueIndex">Index in the logical queue.</param>
+            <returns>The index in in the backing array corresponding to the given logical queue index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickQueue`1.Item(System.Int32)">
+            <summary>
+            Gets an element at the given index in the queue.
+            0 gets the element at the FirstIndex. Count-1 would get the element at LastIndex.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.#ctor(BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a new queue.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory to begin with.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new queue.
+            </summary>
+            <param name="pool">Pool to pull a span from.</param>
+            <param name="minimumInitialCount">The minimum size of the region to be pulled from the pool. Actual span may be larger.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Swaps out the queue's backing memory span for a new span.
+            If the new span is smaller, the queue's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newSpan">New span to use.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the queue's backing array for the given size.
+            Any elements that do not fit in the resized span are dropped and the count is truncated.
+            </summary>
+            <param name="newSize">Minimum number of elements required in the new backing array. Actual capacity of the created span may exceed this size.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the queue to pools. Any managed references still contained within the queue are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the queue has enough room to hold the specified number of elements.
+            </summary>
+            <param name="count">Number of elements to hold.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Compacts the internal buffer to the minimum size required for the number of elements in the queue.
+            </summary>
+            <param name="pool">Pool to pull from if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely">
+            <summary>
+            Enqueues a slot on the end of the queue, incrementing the last index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <returns>Reference to the enqueued slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely">
+            <summary>
+            Pushes a slot at the front of the queue, decrementing the first index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <returns>Reference to the enqueued slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Enqueue(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues a slot on the end of the queue, incrementing the last index.
+            </summary>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirst(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Pushes a slot at the front of the queue, decrementing the first index.
+            </summary>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely(`0@)">
+            <summary>
+            Enqueues the element to the end of the queue, incrementing the last index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely(`0@)">
+            <summary>
+            Enqueues the element to the start of the queue, decrementing the first index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Enqueue(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues the element to the end of the queue, incrementing the last index.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirst(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues the element to the start of the queue, decrementing the first index.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Dequeue">
+            <summary>
+            Dequeues an element from the start of the queue, incrementing the first index.
+            </summary>
+            <returns>Element removed from the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueLast">
+            <summary>
+            Dequeues an element from the end of the queue, decrementing the last index.
+            </summary>
+            <returns>Element removed from the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.TryDequeue(`0@)">
+            <summary>
+            Attempts to dequeue an element from the start of the queue, incrementing the first index.
+            </summary>
+            <param name="element">Element removed from the queue, if any.</param>
+            <returns>True if an element was available to remove, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.TryDequeueLast(`0@)">
+            <summary>
+            Attempts to dequeue an element from the end of the queue, decrementing the last index.
+            </summary>
+            <param name="element">Element removed from the queue, if any.</param>
+            <returns>True if an element was available to remove, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueUnsafely">
+            <summary>
+            Dequeues a slot from the start of the queue, incrementing the first index and returning a reference to the slot. Does not check count before attempting to dequeue.
+            </summary>
+            <returns>Reference to the slot removed from the queue.</returns>
+            <remarks>Be very careful with this function; it is easy to accidentally destroy your foot in sneaky ways.
+            Consider what happens if you call <see cref="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely"/> after this function- both functions will return references to the same slot.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueLastUnsafely">
+            <summary>
+            Dequeues a slot from the end of the queue, decrementing the last index and returning a reference to the slot. Does not check count before attempting to dequeue.
+            </summary>
+            <returns>Reference to the slot removed from the queue.</returns>
+            <remarks>Be very careful with this function; it is easy to accidentally destroy your foot in sneaky ways.
+            Consider what happens if you call <see cref="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely"/> after this function- both functions will return references to the same slot.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.RemoveAt(System.Int32)">
+            <summary>
+            Removes the element at the given index, preserving the order of the queue.
+            </summary>
+            <param name="queueIndex">Index in the queue to remove. The index is in terms of the conceptual queue, not the backing array.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Clear">
+            <summary>
+            Clears the queue by setting the count to zero and explicitly setting all relevant indices in the backing array to default values.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.FastClear">
+            <summary>
+            Clears the queue without changing any of the values in the backing array.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickSet`2">
+            <summary>
+            Container supporting constant time adds and removes while preserving fast iteration times.
+            Offers very direct access to information at the cost of safety.
+            </summary>
+            <remarks>
+            <para>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </para>
+            <para>Note that the implementation is extremely simple. It uses single-step linear probing under the assumption of very low collision rates.
+            A generous table capacity is recommended; this trades some memory for simplicity and runtime performance.</para></remarks>
+            <typeparam name="T">Type of element held by the container.</typeparam>
+            <typeparam name="TEqualityComparer">Type of the equality tester and hash calculator used.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Count">
+            <summary>
+            Gets the number of elements in the set.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.TableMask">
+            <summary>
+            Mask for use in performing fast modulo operations for hashes. Requires that the table span is a power of 2.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.TablePowerOffset">
+            <summary>
+            Desired size of the table relative to the size of the key/value spans in terms of a power of 2. Table capacity target will be elementCapacityTarget * 2^TablePowerOffset.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Table">
+            <summary>
+            Backing memory of the set's table. Values are distributed according to the EqualityComparer's hash function.
+            Slots containing 0 are unused and point to nothing. Slots containing higher values are equal to one plus the index of an element in the Span.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Span">
+            <summary>
+            Backing memory containing the elements of the set.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.EqualityComparer">
+            <summary>
+            Equality comparer used to compare and hash elements.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickSet`2.Item(System.Int32)">
+            <summary>
+            Gets or sets an element at the given index in the list representation of the set.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the set.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,`1,System.Int32)">
+            <summary>
+            Creates a new set.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory of the set elements.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed out.</param>
+            <param name="comparer">Comparer to use for the set.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,System.Int32)">
+            <summary>
+            Creates a new set using a default constructed equality comparer.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory of the set elements.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool,`1)">
+            <summary>
+            Creates a new set.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the set.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new set with a default constructed comparer.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new set with a default constructed comparer.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@)">
+            <summary>
+            Swaps out the set's backing memory span for a new span.
+            If the new span is smaller, the set's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>      
+            <param name="newSpan">New span to use for elements.</param>
+            <param name="newTableSpan">New span to use for the table. Must be zeroed.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+            <param name="oldTableSpan">Previous span used for the table.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the set's backing array for the given size.
+            If the new span is smaller, the set's count is truncated and the extra elements are dropped. 
+            </summary>
+            <param name="newSize">Minimum size of the new object memory block. Actual size may be larger.</param>
+            <param name="pool">Pool to take spans from.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the set to pools. Any managed references still contained within the set are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the set has enough room to hold the specified number of elements.
+            </summary>     
+            <param name="pool">Pool used for spans.</param>   
+            <param name="count">Number of elements to hold.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the internal buffers to the smallest acceptable size and releases the old buffers to the pools.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.GetTableIndices(`0@,System.Int32@,System.Int32@)">
+            <summary>
+            Gets the index of the element in the table.
+            </summary>
+            <param name="element">Element to look up.</param>
+            <param name="tableIndex">Index of the element in the redirect table, or if it is not present, the index of where it would be added.</param>
+            <param name="elementIndex">The index of the element in the elements array, if it exists; -1 otherwise.</param>
+            <returns>True if the element is present in the set, false if it is not.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.IndexOf(`0)">
+            <summary>
+            Gets the index of the element in the set if it exists.
+            </summary>
+            <param name="element">Element to get the index of.</param>
+            <returns>The index of the element if the element exists in the set, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.IndexOf(`0@)">
+            <summary>
+            Gets the index of the element in the set if it exists.
+            </summary>
+            <param name="element">Element to get the index of.</param>
+            <returns>The index of the element if the element exists in the set, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Contains(`0)">
+            <summary>
+            Checks if a given element already belongs to the set.
+            </summary>
+            <param name="element">Element to test for.</param>
+            <returns>True if the element already belongs to the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Contains(`0@)">
+            <summary>
+            Checks if a given element already belongs to the set.
+            </summary>
+            <param name="element">Element to test for.</param>
+            <returns>True if the element already belongs to the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplaceUnsafely(`0@)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplaceUnsafely(`0)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddUnsafely(`0@)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddUnsafely(`0)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplace(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Add(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplace(`0,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Add(`0,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(System.Int32,System.Int32)">
+            <summary>
+            Removes an element from the dictionary according to its table and element index. Can only be used if the table and element index are valid.
+            </summary>
+            <param name="tableIndex">Index of the table entry associated with the existing element to remove.</param>
+            <param name="elementIndex">Index of the existing element to remove in the contiguous element array.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(`0@)">
+            <summary>
+            Removes an element from the set if belongs to the set.
+            Does not preserve the order of elements in the set.
+            </summary>
+            <param name="element">Element to remove.</param>
+            <returns>True if the element was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(`0)">
+            <summary>
+            Removes an element from the set if belongs to the set.
+            Does not preserve the order of elements in the set.
+            </summary>
+            <param name="element">Element to remove.</param>
+            <returns>True if the element was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Clear">
+            <summary>
+            Removes all elements from the set.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastClear">
+            <summary>
+            Removes all elements from the set without modifying the contents of the elements array.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.ReferenceComparer`1">
+            <summary>
+            Provides equality comparison and hashing for referenced types.
+            </summary>
+            <typeparam name="T">Type to compare for equality and hash.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.VectorizedSorts">
+            <summary>
+            Specialized sorts that can go fast sometimes, but often come with special requirements.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.VectorizedSorts.VectorCountingSort(BepuUtilities.Memory.Buffer{BepuUtilities.Numerics.Number},BepuUtilities.Memory.Buffer{System.Int32},System.Int32)">
+            <summary>
+            Computes the mapping from current index to ascending sorted index for all elements in the paddedKeys. The paddedKeys buffer is not actually sorted.
+            <para>This function requires that <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or <see cref="!:Vector128.IsHardwareAccelerated"/>.</para>
+            </summary>
+            <param name="paddedKeys">Padded keys to compute sorted indices for. This buffer's contents will not be mutated.
+            The buffer must be at least as long as the targetIndices buffer and must be padded to be divisible by vector length.
+            Vector length is 8 elements if <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or 4 elements if only <see cref="!:Vector128.IsHardwareAccelerated"/>.</param>
+            <param name="paddedTargetIndices">Buffer to be filled with the target indices each slot should be moved to in order to sort the buffer.
+            The buffer must be padded to be divisible by vector length.
+            Vector length is 8 elements if <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or 4 elements if only <see cref="!:Vector128.IsHardwareAccelerated"/>.</param>
+            <param name="elementCount">Number of actual elements in the paddedKeys buffer.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.WrapperEqualityComparer`1">
+            <summary>
+            IEqualityComparerRef wrapper around an EqualityComparer.
+            </summary>
+            <typeparam name="T">Type of the objects to compare and hash.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.WrapperEqualityComparer`1.CreateDefault(BepuUtilities.Collections.WrapperEqualityComparer{`0}@)">
+            <summary>
+            Creates a default comparer for the given type.
+            </summary>
+            <param name="predicate">Predicate to test against other items using the default comparer for this type.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.WrapperPredicate`1">
+            <summary>
+            IPredicate wrapper around an EqualityComparer and an object to compare against.
+            </summary>
+            <typeparam name="T">Type of the objects to compare.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.WrapperPredicate`1.CreateDefault(`0@,BepuUtilities.Collections.WrapperPredicate{`0}@)">
+            <summary>
+            Creates a default comparer for the given type.
+            </summary>
+            <param name="item">Item to compare against other items.</param>
+            <param name="predicate">Predicate to test against other items using the default comparer for this type.</param>
+        </member>
+        <member name="T:BepuUtilities.ContainmentType">
+            <summary>
+            The current containment state of two objects.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Disjoint">
+            <summary>
+            The objects are separate.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Contains">
+            <summary>
+            One object fully contains the other.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Intersects">
+            <summary>
+            The objects are intersecting, but neither object fully contains the other.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.Get``1(BepuUtilities.Numerics.Vector{``0}@,System.Int32)">
+            <summary>
+            Gets a reference to an element from a vector without using pointers, bypassing direct vector access for codegen reasons. This performs no bounds testing!
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.CopyLane``1(``0@,System.Int32,``0@,System.Int32)">
+            <summary>
+            Copies from one bundle lane to another. The bundle must be a contiguous block of Vector types.
+            </summary>
+            <typeparam name="T">Type of the copied bundles.</typeparam>
+            <param name="sourceBundle">Source bundle of the data to copy.</param>
+            <param name="sourceInnerIndex">Index of the lane within the source bundle.</param>
+            <param name="targetBundle">Target bundle of the data to copy.</param>
+            <param name="targetInnerIndex">Index of the lane within the target bundle.</param>
+            <remarks>
+            For performance critical operations, a specialized implementation should be used. This uses a loop with stride equal to a Vector that isn't yet unrolled.
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.ClearLane``2(``0@,System.Int32)">
+            <summary>
+            Clears a bundle lane using the default value of the specified type. The bundle must be a contiguous block of Vector types, all sharing the same type,
+            and the first vector must start at the address pointed to by the bundle reference.
+            </summary>
+            <typeparam name="TOuter">Type containing one or more Vectors.</typeparam>
+            <typeparam name="TVector">Type of the vectors to clear.</typeparam>
+            <param name="bundle">Target bundle to clear a lane in.</param>
+            <param name="innerIndex">Index of the lane within the target bundle to clear.</param>
+            <remarks>
+            For performance critical operations, a specialized implementation should be used. This uses a loop with stride equal to a Vector.
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.GetOffsetInstance``1(``0@,System.Int32)">
+            <summary>
+            Gets a reference to a shifted bundle container such that the first slot of each bundle covers the given inner index of the original bundle reference.
+            </summary>
+            <typeparam name="T">Type of the bundle container.</typeparam>
+            <param name="bundleContainer">Bundle container whose reference acts as the base for the shifted reference.</param>
+            <param name="innerIndex">Index within the bundle to access with the shifted reference.</param>
+            <returns>Shifted bundle container reference covering the inner index of the original bundle reference.</returns>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.GetFirst``1(BepuUtilities.Numerics.Vector{``0}@)">
+            <summary>
+            Gets a reference to the first element in the vector reference.
+            </summary>
+            <typeparam name="T">Type of value held by the vector.</typeparam>
+            <param name="vector">Vector to pull the first slot value from.</param>
+            <returns>Reference to the value in the given vector's first slot.</returns>
+        </member>
+        <member name="T:BepuUtilities.IForEachRef`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body. Takes a ref parameter for efficiency when dealing with large value types.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.IForEach`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.IBreakableForEach`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body that supports breaking the loop early.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.IBreakableForEach`1.LoopBody(`0)">
+            <summary>
+            Executes one execution of the loop body.
+            </summary>
+            <param name="i">Visited element.</param>
+            <returns>True if the loop should continue, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.IBreakableForEachRef`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body that supports breaking the loop early.
+            Takes a ref parameter for efficiency when dealing with large value types.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.IBreakableForEachRef`1.LoopBody(`0@)">
+            <summary>
+            Executes one execution of the loop body.
+            </summary>
+            <param name="i">Visited element.</param>
+            <returns>True if the loop should continue, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.Int2">
+            <summary>
+            Provides simple 2d cell hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Int3">
+            <summary>
+            A set of 3 integers, useful for spatial hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Int4">
+            <summary>
+            A set of 4 integers, useful for spatial hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.ThreadDispatcherWorker">
+            <summary>
+            Function to be invoked on a worker thread in an <see cref="T:BepuUtilities.IThreadDispatcher"/>. Provides the unmanaged context of the dispatch.
+            </summary>
+            <param name="workerIndex">Index of the worker in the dispatcher executing this function.</param>
+            <param name="context">Pointer to the context of this dispatch, if any.</param>
+            
+        </member>
+        <member name="T:BepuUtilities.IThreadDispatcher">
+            <summary>
+            Provides multithreading dispatch primitives, a thread count, and per thread resource pools for the simulation to use.
+            </summary>
+            <remarks>
+            <para>Note that the simulation does not require a true load balancing forloop implementation. All that's needed is a way to jumpstart some threads.
+            All systems which use multithreading tend to have some form of domain specific load balancing that a general purpose thread pool or parallel for loop implementation 
+            couldn't match. The simulation also tends to keep the number of dispatches as low as it can. Combined, these two things reduce the importance of a
+            very highly optimized dispatcher.</para>
+            <para>This is important when a user wants to share some other thread pool, but doesn't have the time to guarantee extremely high performance and high quality
+            load balancing. Instead of worrying about that, they can just wrap whatever implementation they happen to have and it'll probably work fine.</para>
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.ThreadCount">
+            <summary>
+            Gets the number of workers available in the thread dispatcher.
+            </summary>
+            <remarks>Note that some systems (like the solver) expect the ThreadCount to be backed by truly independent threads capable of progression even when one is blocked.
+            If the ThreadCount doesn't represent independent threads, deadlocks will occur.
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.UnmanagedContext">
+            <summary>
+            Gets the unmanaged context associated with the current dispatch, if any.
+            </summary>
+            <remarks>This is intended to help pass information to workers, especially those defined with function pointers that can't just include extra state in closures.</remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.ManagedContext">
+            <summary>
+            Gets the managed context associated with the current dispatch, if any.
+            </summary>
+            <remarks>This is intended to help pass information to workers, especially those defined with function pointers that can't just include extra state in closures.</remarks>
+        </member>
+        <member name="M:BepuUtilities.IThreadDispatcher.DispatchWorkers(,System.Int32,System.Void*,System.Object)">
+            <summary>
+            Dispatches all the available workers.
+            </summary>
+            <param name="workerBody">Function pointer to be invoked on every worker. Matches the signature of the <see cref="T:BepuUtilities.ThreadDispatcherWorker"/>.</param>
+            <param name="maximumWorkerCount">Maximum number of workers to dispatch.</param>
+            <param name="unmanagedContext">Unmanaged context of the dispatch.</param>
+            <param name="managedContext">Managed context of the dispatch.</param>
+        </member>
+        <member name="M:BepuUtilities.IThreadDispatcher.DispatchWorkers(System.Action{System.Int32},System.Int32,System.Void*,System.Object)">
+            <summary>
+            Dispatches all the available workers with a null context.
+            </summary>
+            <param name="workerBody">Delegate to be invoked on every worker.</param>
+            <param name="maximumWorkerCount">Maximum number of workers to dispatch.</param>
+            <param name="unmanagedContext">Unmanaged context of the dispatch.</param>
+            <param name="managedContext">Managed context of the dispatch.</param>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.WorkerPools">
+            <summary>
+            Gets the set of memory pools associated with thread workers.
+            </summary>
+            <remarks>All usages of these worker pools within the simulation are guaranteed to return thread pool memory before the function returns. In other words,
+            thread memory pools are used for strictly ephemeral memory, and it will never be held by the simulation outside the scope of a function that 
+            takes the IThreadDispatcher as input.</remarks>
+        </member>
+        <member name="T:BepuUtilities.MathChecker">
+            <summary>
+            Contains conditional extensions to check for bad values in various structures.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.IsInvalid(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks a single float for validity.
+            </summary>
+            <param name="f">Value to validate.</param>
+            <returns>True if the value is invalid, false if it is valid.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector2)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector4)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Matrix3x3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Matrix)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.ValidateOrientation(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.AffineTransform)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.BoundingBox)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.BoundingSphere)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.MathHelper">
+            <summary>
+            Contains helper math methods.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.Pi">
+            <summary>
+            Approximate value of Pi.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.TwoPi">
+            <summary>
+            Approximate value of Pi multiplied by two.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.PiOver2">
+            <summary>
+            Approximate value of Pi divided by two.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.PiOver4">
+            <summary>
+            Approximate value of Pi divided by four.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(System.Int32,System.Int32)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(System.Int32,System.Int32)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(System.Int64,System.Int64,System.Int64)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(System.Int64,System.Int64)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(System.Int64,System.Int64)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.ToRadians(BepuUtilities.Numerics.Number)">
+            <summary>
+            Converts degrees to radians.
+            </summary>
+            <param name="degrees">Degrees to convert.</param>
+            <returns>Radians equivalent to the input degrees.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.ToDegrees(BepuUtilities.Numerics.Number)">
+            <summary>
+            Converts radians to degrees.
+            </summary>
+            <param name="radians">Radians to convert.</param>
+            <returns>Degrees equivalent to the input radians.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.BinarySign(BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns -1 if the value is negative and 1 otherwise.
+            </summary>
+            <param name="x">Value to compute the sign of.</param>
+            <returns>-1 if the input is negative, and 1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Cos(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of cosine. Maximum error a little below 8e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the cosine of.</param>
+            <returns>Approximate cosine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Sin(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of sine. Maximum error a little below 5e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the sine of.</param>
+            <returns>Approximate sine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Acos(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of arccos. Inputs outside of [-1, 1] are clamped. Maximum error less than 5.17e-07.
+            </summary>
+            <param name="x">Input value to the arccos function.</param>
+            <returns>Result of the arccos function.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Cos(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of cosine. Maximum error a little below 8e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Values to take the cosine of.</param>
+            <returns>Approximate cosine of the input values.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Sin(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of sine. Maximum error a little below 5e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the sine of.</param>
+            <returns>Approximate sine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Acos(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of arccos. Inputs outside of [-1, 1] are clamped. Maximum error less than 5.17e-07.
+            </summary>
+            <param name="x">Input value to the arccos function.</param>
+            <returns>Result of the arccos function.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.GetSignedAngleDifference(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Gets the change in angle from a to b as a signed value from -pi to pi.
+            </summary>
+            <param name="a">Source angle.</param>
+            <param name="b">Target angle.</param>
+            <param name="difference">Difference between a and b, expressed as a value from -pi to pi.</param>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.X">
+            <summary>
+            Row 1 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.Y">
+            <summary>
+            Row 2 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.Z">
+            <summary>
+            Row 3 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.W">
+            <summary>
+            Row 4 of the matrix.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Matrix">
+            <summary>
+            Provides SIMD-aware 4x4 matrix math.
+            </summary>
+            <remarks>
+            All functions assume row vectors.
+            </remarks>
+        </member>
+        <member name="F:BepuUtilities.Matrix.X">
+            <summary>
+            Row 1 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.Y">
+            <summary>
+            Row 2 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.Z">
+            <summary>
+            Row 3 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.W">
+            <summary>
+            Row 4 of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix.TransformTranspose(BepuUtilities.Numerics.Vector4@,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a transposed matrix.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix whose transpose will be applied to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Transform(BepuUtilities.Numerics.Vector4@,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a matrix.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a matrix. Implicitly uses 1 as the fourth component of the input vector.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Multiply(BepuUtilities.Matrix@,BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Multiplies a matrix by another matrix.
+            </summary>
+            <param name="a">First matrix.</param>
+            <param name="b">Second matrix.</param>
+            <param name="result">Result of the matrix multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.op_Multiply(BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Concatenates two matrices.
+            </summary>
+            <param name="m1">First input matrix.</param>
+            <param name="m2">Second input matrix.</param>
+            <returns>Concatenated transformation of the form m1 * m2.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfView(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfViewLH(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a left-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFromFieldOfViews(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="verticalFieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="horizontalFieldOfView">Horizontal field of view of the perspective in radians.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <returns>Resulting perspective matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFromFieldOfViews(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="verticalFieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="horizontalFieldOfView">Horizontal field of view of the perspective in radians.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfView(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <returns>Resulting perspective matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateOrthographic(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right handed orthographic projection.
+            </summary>
+            <param name="left">Leftmost coordinate of the projected area.</param>
+            <param name="right">Rightmost coordinate of the projected area.</param>
+            <param name="bottom">Bottom coordinate of the projected area.</param>
+            <param name="top">Top coordinate of the projected area.</param>
+            <param name="zNear">Near plane of the projection.</param>
+            <param name="zFar">Far plane of the projection.</param>
+            <param name="projection">The resulting orthographic projection matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Invert(BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Inverts the matrix.
+            </summary>
+            <param name="m">Matrix to invert.</param>
+            <param name="inverted">Inverted version of the matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Invert(BepuUtilities.Matrix@)">
+            <summary>
+            Inverts the matrix.
+            </summary>
+            <param name="m">Matrix to invert.</param>
+            <returns>Inverted version of the matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateLookAt(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a view matrix pointing from a position to a target with the given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="target">Target of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <param name="viewMatrix">Look at matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateLookAt(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a view matrix pointing from a position to a target with the given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="target">Target of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <returns>Look at matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateView(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a view matrix pointing in a direction with a given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="forward">Forward direction of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <param name="viewMatrix">Look at matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateView(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a view matrix pointing looking in a direction with a given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="forward">Forward direction of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <returns>Look at matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateRigid(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a rigid world matrix from a rotation and position.
+            </summary>
+            <param name="rotation">Rotation of the transform.</param>
+            <param name="position">Position of the transform.</param>
+            <param name="world">4x4 matrix representing the combined transform.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateRigid(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a rigid world matrix from a rotation and position.
+            </summary>
+            <param name="rotation">Rotation of the transform.</param>
+            <param name="position">Position of the transform.</param>
+            <param name="world">4x4 matrix representing the combined transform.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateFrom3x3(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a 4x4 matrix from a 3x3 matrix. All extra columns and rows filled with 0 except the W.W, which is set to 1.
+            </summary>
+            <param name="matrix3x3">Smaller matrix to base the larger matrix on.</param>
+            <param name="matrix4x4">Larger matrix that has the smaller matrix as a submatrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateFrom3x3(BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a 4x4 matrix from a 3x3 matrix. All extra columns and rows filled with 0 except the W.W, which is set to 1.
+            </summary>
+            <param name="matrix3x3">Smaller matrix to base the larger matrix on.</param>
+            <returns>Larger matrix that has the smaller matrix as a submatrix.</returns>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x2Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x2Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Scale(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Add(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Adds the components of one matrix to another.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two given matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Subtract(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from..</param>
+            <param name="b">Matrix to subtract from the other.</param>
+            <param name="result">Result of the subtraction.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.InvertWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="matrix">Matrix to be inverted.</param>
+            <param name="result">Inverted matrix.</param>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x3Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x3Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.MultiplyTransposedWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the first matrix is sampled as if it were transposed: result = transpose(a) * b.
+            </summary>
+            <param name="a">Matrix to be sampled as if it were transposed when multiplied with the second matrix.</param>
+            <param name="b">Second matrix in the pair.</param>
+            <param name="result">Result of the multiplication transpose(a) * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.Scale(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="T:BepuUtilities.Matrix3x3">
+            <summary>
+            3 row, 3 column matrix.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Matrix3x3.Identity">
+            <summary>
+            Gets the 3x3 identity matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Add(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Scale(BepuUtilities.Matrix3x3,BepuUtilities.Numerics.Number,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Scales the components of a matrix by a scalar.
+            </summary>
+            <param name="matrix">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the matrix's components.</param>
+            <param name="result">Scaled matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Subtract(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from a.</param>
+            <param name="result">Difference of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Transpose(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>                                                                                                
+            Computes the transposed matrix of a matrix.                                                              
+            </summary>                                                                                               
+            <param name="m">Matrix to transpose.</param>                                                             
+            <param name="transposed">Transposed matrix.</param>                                                      
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Determinant">
+            <summary>
+            Calculates the determinant of the matrix.
+            </summary>
+            <returns>The matrix's determinant.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Invert(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Invert(BepuUtilities.Matrix3x3*,BepuUtilities.Matrix3x3*)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector by the matrix.
+            </summary>
+            <param name="v">Vector3 to transform.</param>
+            <param name="m">Matrix to use as the transformation.</param>
+            <param name="result">Product of the transformation.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.TransformTranspose(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector by the matrix's transpose.
+            </summary>
+            <param name="v">Vector3 to transform.</param>
+            <param name="m">Matrix to use as the transformation transpose.</param>
+            <param name="result">Product of the transformation.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.MultiplyTransposed(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices, where a is treated as transposed: result = transpose(a) * b
+            </summary>
+            <param name="a">First matrix to multiply that will be transposed.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateScale(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a 3x3 matrix representing the given scale along its local axes.
+            </summary>
+            <param name="scale">Scale to represent.</param>
+            <param name="linearTransform">Matrix representing a scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a matrix representing a rotation derived from an axis and angle.
+            </summary>
+            <param name="axis">Axis of the rotation.</param>
+            <param name="angle">Angle of the rotation.</param>
+            <param name="result">Resulting rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a matrix representing a rotation derived from an axis and angle.
+            </summary>
+            <param name="axis">Axis of the rotation.</param>
+            <param name="angle">Angle of the rotation.</param>
+            <returns>Resulting rotation matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateCrossProduct(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a matrix such that a x v = a * result.
+            </summary>
+            <param name="v">Vector to build the skew symmetric matrix from.</param>
+            <param name="result">Skew symmetric matrix representing the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.op_Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Concatenates two matrices.
+            </summary>
+            <param name="m1">First input matrix.</param>
+            <param name="m2">Second input matrix.</param>
+            <returns>Concatenated transformation of the form m1 * m2.</returns>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.Z">
+            <summary>
+            Third row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.MultiplyTransposedWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the first matrix is sampled as if it were transposed: result = transpose(a) * b.
+            </summary>
+            <param name="a">Matrix to be sampled as if it were transposed when multiplied with the second matrix.</param>
+            <param name="b">Second matrix in the pair.</param>
+            <param name="result">Result of the multiplication transpose(a) * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.Negate(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Negates the components of a matrix.
+            </summary>
+            <param name="m">Matrix to negate.</param>
+            <param name="result">Negated result matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.Scale(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.ReadFirst(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.ReadSlot(BepuUtilities.Matrix3x3Wide@,System.Int32,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.Allocator">
+            <summary>
+            Represents a chunk of abstract memory supporting allocations and deallocations.
+            Never moves any memory.
+            </summary>
+            <remarks>Uses an extremely simple ring buffer that makes no attempt to skip groups of allocations. Not particularly efficient.</remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.Allocator.Capacity">
+            <summary>
+            Gets or sets the capacity of the allocator.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.Allocator.searchStartIndex">
+            <summary>
+            Index in allocations that we should start at during the next allocation attempt.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.#ctor(System.Int64,BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Creates a new allocator.
+            </summary>
+            <param name="capacity">Size of the memory handled by the allocator in elements.</param>
+            <param name="initialAllocationCapacity">Estimated number of allocations to allocate room for in the internal structures.</param>
+            <param name="pool">Pool to pull internal resources from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Contains(System.UInt64)">
+            <summary>
+            Checks if the id is currently allocated.
+            </summary>
+            <param name="id">Id to check for.</param>
+            <returns>True if the id is present in the allocations set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.TryGetAllocationRegion(System.UInt64,BepuUtilities.Memory.Allocator.Allocation@)">
+            <summary>
+            Gets the allocation region associated with the given allocation id if it is present.
+            </summary>
+            <param name="allocationId">Allocation id to look up the allocation for.</param>
+            <param name="allocation">Allocation associated with the id, if present.</param>
+            <returns>True if the allocationId was present in the allocator, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.CanFit``1(System.Int64,``0@)">
+            <summary>
+            Checks if a block of memory can fit into the current state of the allocator.
+            </summary>
+            <param name="size">Size of the memory to test.</param>
+            <param name="ignoredIds">Ids of allocations to treat as nonexistent for the purposes of the test.</param>
+            <returns>True if the size could fit, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.CanFit(System.Int64)">
+            <summary>
+            Checks if a block of memory can fit into the current state of the allocator.
+            </summary>
+            <param name="size">Size of the memory to test.</param>
+            <returns>True if the size could fit, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Allocate(System.UInt64,System.Int64,System.Int64@)">
+            <summary>
+            Attempts to allocate a range of memory.
+            </summary>
+            <param name="id">Unique id of the memory to allocate.</param>
+            <param name="size">Size of the memory to allocate.</param>
+            <param name="outputStart">Starting index of the allocated memory, if successful.</param>
+            <returns>True if the allocation succeeded, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Deallocate(System.UInt64)">
+            <summary>
+            Removes the memory associated with the id from the pool.
+            </summary>
+            <param name="id">Id to remove.</param>
+            <returns>True of the id was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.GetLargestContiguousSize(System.Int64@,System.Int64@)">
+            <summary>
+            Gets the size of the largest contiguous area and the total free space in the allocator.
+            Not very efficient; runs in linear time for the number of allocations.
+            </summary>
+            <param name="largestContiguous">Largest contiguous region in the allocator. The allocator can hold an allocation up to this size.</param>
+            <param name="totalFreeSpace">Total free space in the allocator.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.IncrementalCompact(System.UInt64@,System.Int64@,System.Int64@,System.Int64@)">
+            <summary>
+            Finds the first allocation with empty space before it and pulls it forward to close the gap. Assumes the ability to perform synchronous reallocation.
+            </summary>
+            <param name="id">Id of the allocation to be moved, if any.</param>
+            <param name="size">Size of the moved allocation.</param>
+            <param name="oldStart">Old starting location of the allocation.</param>
+            <param name="newStart">New starting location of the allocation.</param>
+            <returns>True if a compaction was performed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Resize(System.UInt64,System.Int64,System.Int64@,System.Int64@)">
+            <summary>
+            Attempts to resize a given allocation to a new size. If the new size is smaller, the start index remains unchanged.
+            </summary>
+            <param name="id">Id of the allocation to resize.</param>
+            <param name="size">New desired size of the allocation.</param>
+            <param name="oldStart">Old start location of the allocation.</param>
+            <param name="newStart">New start location of the allocation.</param>
+            <returns>True if the resize was successful. False if there was insufficient room for the larger allocation.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.Buffer`1">
+            <summary>
+            Span over an unmanaged memory region.
+            </summary>
+            <typeparam name="T">Type of the memory exposed by the span.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Memory.Buffer`1.Memory">
+            <summary>
+            Pointer to the beginning of the memory backing this buffer.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.Buffer`1.Id">
+            <summary>
+            Implementation specific identifier of the raw buffer set by its source. If taken from a BufferPool, Id includes the index in the power pool from which it was taken.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.#ctor(System.Void*,System.Int32,System.Int32)">
+            <summary>
+            Creates a new buffer.
+            </summary>
+            <param name="memory">Memory to back the buffer.</param>
+            <param name="length">Length of the buffer in terms of the specified type.</param>
+            <param name="id">Id of the buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Allocates a new buffer from a pool.
+            </summary>
+            <param name="length">Length of the buffer in terms of elements of type T</param>
+            <param name="pool">Pool to allocate from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns a buffer to a pool. This should only be used if the specified pool is the same as the one used to allocate the buffer.
+            </summary>
+            <param name="pool">Pool to return the buffer to.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Get(BepuUtilities.Memory.Buffer{System.Byte}@,System.Int32)">
+            <summary>
+            Gets a typed reference from a byte buffer by an index in terms of the type.
+            </summary>
+            <param name="buffer">Byte buffer to interpret.</param>
+            <param name="index">Index into the buffer in terms of the specified type instead of bytes.</param>
+            <returns>Reference to the instance at the specified index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to grab a reference of.</param>
+            <returns>Reference to the element at the given index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Item(System.UInt32)">
+            <summary>
+            Gets a reference to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to grab a reference of.</param>
+            <returns>Reference to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.GetPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to retrieve a pointer for.</param>
+            <returns>Pointer to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.GetPointer(System.UInt32)">
+            <summary>
+            Gets a pointer to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to retrieve a pointer for.</param>
+            <returns>Pointer to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,System.Int32)">
+            <summary>
+            Creates a view of a subset of the buffer's memory.
+            </summary>
+            <param name="start">Index at which to start the sliced buffer.</param>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <returns>Buffer spanning the specified subset of the original buffer.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32)">
+            <summary>
+            Creates a view of a subset of the buffer's memory, starting from the first index.
+            </summary>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <returns>Buffer spanning the specified subset of the original buffer.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,System.Int32,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a view of a subset of the buffer's memory.
+            </summary>
+            <param name="start">Index at which to start the sliced buffer.</param>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <param name="sliced">Buffer spanning the specified subset of the original buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a view of a subset of the buffer's memory, starting from the first index.
+            </summary>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <param name="sliced">Buffer spanning the specified subset of the original buffer.</param>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Length">
+            <summary>
+            Gets the length of the buffer in typed elements.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Allocated">
+            <summary>
+            Gets whether the buffer references non-null memory.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Clear(System.Int32,System.Int32)">
+            <summary>
+            Zeroes out the buffer's memory.
+            </summary>
+            <param name="start">Start location in the buffer.</param>
+            <param name="count">Number of elements to clear beyond the start index.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyTo(System.Int32,BepuUtilities.Memory.Buffer{`0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies buffer data into another buffer.
+            </summary>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="target">Target buffer to copy into.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyTo(System.Int32,System.Span{`0},System.Int32,System.Int32)">
+            <summary>
+            Copies buffer data into another buffer.
+            </summary>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="target">Target buffer to copy into.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyFrom(System.Span{`0},System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Copies span data into this buffer.
+            </summary>
+            <param name="source">Source span to copy from.</param>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyFrom(System.ReadOnlySpan{`0},System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Copies span data into this buffer.
+            </summary>
+            <param name="source">Source span to copy from.</param>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf(`0@,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of an element in the buffer using the type's default comparer.
+            </summary>
+            <param name="element">Element to look for in the buffer.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the element in the buffer if found, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf(`0,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of an element in the buffer using the type's default comparer.
+            </summary>
+            <param name="element">Element to look for in the buffer.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the element in the buffer if found, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf``1(``0@,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of the first element that matches a provided predicate.
+            </summary>
+            <param name="predicate">Predicate to test each element with.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the first matching element in the buffer if any, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.As``1">
+            <summary>
+            Creates a typed region from the raw buffer with the largest capacity that can fit within the allocated bytes.
+            </summary>
+            <typeparam name="TCast">Type of the buffer.</typeparam>
+            <returns>Typed buffer of maximum extent within the current buffer.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.BufferPool">
+            <summary>
+            Unmanaged memory pool that suballocates from memory blocks pulled from the native heap.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.BufferPool.PowerPool.Slots">
+            <summary>
+            Pool of slots available to this power level.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.BufferPool.PowerPool.BlockAlignment">
+            <summary>
+            Byte alignment to enforce for all block allocations within the buffer pool.
+            </summary>
+            <remarks>Since this only applies at the level of blocks, we can use a pretty beefy value without much concern.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new buffer pool.
+            </summary>
+            <param name="minimumBlockAllocationSize">Minimum size of individual block allocations. Must be a power of 2.
+            Pools with single allocations larger than the minimum will use the minimum value necessary to hold one element.
+            Buffers will be suballocated from blocks.</param>
+            <param name="expectedPooledResourceCount">Number of suballocations to preallocate reference space for.
+            This does not preallocate actual blocks, just the space to hold references that are waiting in the pool.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.EnsureCapacityForPower(System.Int32,System.Int32)">
+            <summary>
+            Ensures that the pool associated with a given power has at least a certain amount of capacity, measured in bytes.
+            </summary>
+            <param name="byteCount">Minimum number of bytes to require for the power pool.</param>
+            <param name="power">Power associated with the pool to check.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.GetCapacityForPower(System.Int32)">
+            <summary>
+            Gets the capacity allocated for a power.
+            </summary>
+            <param name="power">Power to check.</param>
+            <returns>Allocated capacity for the given power.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.GetTotalAllocatedByteCount">
+            <summary>
+            Computes the total number of bytes allocated from native memory in this buffer pool.
+            Includes allocated memory regardless of whether it currently has outstanding references.
+            </summary>
+            <returns>Total number of bytes allocated from native memory in this buffer pool.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.TakeAtLeast``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of elements of a given type. Capacity may be larger than requested.
+            </summary>
+            <typeparam name="T">Type of the elements in the buffer.</typeparam>
+            <param name="count">Desired minimum capacity of the buffer in typed elements.</param>
+            <param name="buffer">Buffer large enough to contain the requested number of elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Take``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a typed buffer of the requested size from the pool.
+            </summary>
+            <typeparam name="T">Type of the instances in the buffer.</typeparam>
+            <param name="count">Desired capacity of the buffer in typed elements.</param>
+            <param name="buffer">Typed buffer of the requested size.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.TakeForPower(System.Int32,BepuUtilities.Memory.Buffer{System.Byte}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of bytes given by a power, where the number of bytes is 2^power.
+            </summary>
+            <param name="power">Number of bytes that should fit within the buffer as an exponent, where the number of bytes is 2^power.</param>
+            <param name="buffer">Buffer that can hold the bytes.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.ReturnUnsafely(System.Int32)">
+            <inheritdoc/>       
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Return``1(BepuUtilities.Memory.Buffer{``0}@)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.ResizeToAtLeast``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Resize``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.AssertEmpty">
+            <summary>
+            Issues debug assertions that all pools are empty.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Clear">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            The pool will remain in a usable state after clearing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.System#IDisposable#Dispose">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            Equivalent to <see cref="M:BepuUtilities.Memory.BufferPool.Clear"/> for <see cref="T:BepuUtilities.Memory.BufferPool"/>.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Memory.IdPool">
+            <summary>
+            Manages a pool of identifier values. Grabbing an id from the pool picks a number that has been picked and returned before, 
+            or if none of those are available, the minimum value greater than any existing id.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.HighestPossiblyClaimedId">
+            <summary>
+            Gets the highest value which any index claimed thus far could possibly have.
+            This is not necessarily the current highest claimed index; this value may represent an earlier claim that has already been released.
+            -1 if nothing has ever been claimed.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.AvailableIdCount">
+            <summary>
+            Gets the number of previously returned ids waiting in the pool.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.Allocated">
+            <summary>
+            Gets whether the id pool has backing resources allocated to it and is ready to use.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns an id to the pool without checking if a resize is required on the available id stack.
+            </summary>
+            <param name="id">Id to return.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Clear">
+            <summary>
+            Resets the IdPool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the underlying id queue can hold at least a certain number of ids.
+            </summary>
+            <param name="count">Number of elements to preallocate space for in the available ids queue.</param>
+            <param name="pool">Pool to pull resized spans from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Compact(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the available ids queue to the smallest size that can fit the given count and the current available id count.
+            </summary>
+            <param name="minimumCount">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the underlying buffer to the smallest size required to hold the given count and the current available id count.
+            </summary>
+            <param name="count">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns underlying memory to the pool.
+            </summary>
+            <remarks>The IdPool can be reused only if EnsureCapacity or Resize is called.</remarks>
+        </member>
+        <member name="T:BepuUtilities.Memory.IUnmanagedMemoryPool">
+            <summary>
+            Defines a type that is capable of rapidly serving requests for allocation and deallocation of unmanaged memory.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.TakeAtLeast``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of elements of a given type. Capacity may be larger than requested.
+            </summary>
+            <typeparam name="T">Type of the elements in the buffer.</typeparam>
+            <param name="count">Desired minimum capacity of the buffer in typed elements.</param>
+            <param name="buffer">Buffer large enough to contain the requested number of elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Take``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a typed buffer of the requested size from the pool.
+            </summary>
+            <typeparam name="T">Type of the instances in the buffer.</typeparam>
+            <param name="count">Desired capacity of the buffer in typed elements.</param>
+            <param name="buffer">Typed buffer of the requested size.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Return``1(BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Returns a buffer to the pool.
+            </summary>
+            <typeparam name="T">Type of the buffer's elements.</typeparam>
+            <param name="buffer">Buffer to return to the pool. The reference will be cleared.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.GetCapacityForCount``1(System.Int32)">
+            <summary>
+            Gets the capacity of a buffer that would be returned by the pool if a given element count was requested from TakeAtLeast.
+            </summary>
+            <typeparam name="T">Type of the elements being requested.</typeparam>
+            <param name="count">Number of elements to request.</param>
+            <returns>Capacity of a buffer that would be returned if the given element count was requested.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns a buffer to the pool by id.
+            </summary>
+            <param name="id">Id of the buffer to return to the pool.</param>
+            <remarks>Pools zero out the passed-in buffer by convention. This costs very little and avoids a wide variety of bugs (either directly or by forcing fast failure).
+            This "Unsafe" overload should be used only in cases where there's a reason to bypass the clear; the naming is intended to dissuade casual use.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.ResizeToAtLeast``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Resizes a typed buffer to the smallest size available in the pool which contains the target size. Copies a subset of elements into the new buffer. 
+            Final buffer size is at least as large as the target size and may be larger.
+            </summary>
+            <typeparam name="T">Type of the buffer to resize.</typeparam>
+            <param name="buffer">Buffer reference to resize.</param>
+            <param name="targetSize">Number of elements to resize the buffer for.</param>
+            <param name="copyCount">Number of elements to copy into the new buffer from the old buffer. Contents of slots outside the copied range in the resized buffer are undefined.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Resize``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Resizes a buffer to the target size. Copies a subset of elements into the new buffer.
+            </summary>
+            <typeparam name="T">Type of the buffer to resize.</typeparam>
+            <param name="buffer">Buffer reference to resize.</param>
+            <param name="targetSize">Number of elements to resize the buffer for.</param>
+            <param name="copyCount">Number of elements to copy into the new buffer from the old buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Clear">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            The pool will remain in a usable state after clearing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.GetTotalAllocatedByteCount">
+            <summary>
+            Computes the total number of bytes allocated from the memory source in this pool.
+            Includes allocated memory regardless of whether it currently has outstanding references.
+            </summary>
+            <returns>Total number of bytes allocated from the backing memory source in this pool.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.ManagedIdPool">
+            <summary>
+            Manages a pool of identifier values. Grabbing an id from the pool picks a number that has been picked and returned before, 
+            or if none of those are available, the minimum value greater than any existing id.
+            </summary>
+            <remarks>This contrasts with the IdPool which operates on unmanaged memory. This version only exists to support use cases where the unmanaged version can't be used-
+            for example, in the BufferPool. While the implementation can be shared, doing so involves creating enough supporting infrastructure that it's simpler to have a managed-only version.</remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.ManagedIdPool.HighestPossiblyClaimedId">
+            <summary>
+            Gets the highest value which any index claimed thus far could possibly have.
+            This is not necessarily the current highest claimed index; this value may represent an earlier claim that has already been released.
+            -1 if nothing has ever been claimed.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.ManagedIdPool.AvailableIdCount">
+            <summary>
+            Gets the number of previously returned ids waiting in the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.#ctor(System.Int32)">
+            <summary>
+            Gets the capacity of the id pool for returned ids.
+            </summary>        
+            public int Capacity => availableIds.Length;
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns an id to the pool without checking if a resize is required on the available id stack.
+            </summary>
+            <param name="id">Id to return.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Clear">
+            <summary>
+            Resets the IdPool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.EnsureCapacity(System.Int32)">
+            <summary>
+            Ensures that the underlying id queue can hold at least a certain number of ids.
+            </summary>
+            <param name="count">Number of elements to preallocate space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Compact(System.Int32)">
+            <summary>
+            Shrinks the available ids queue to the smallest size that can fit the given count and the current available id count.
+            </summary>
+            <param name="minimumCount">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Resize(System.Int32)">
+            <summary>
+            Resizes the underlying buffer to the smallest size required to hold the given count and the current available id count.
+            </summary>
+            <param name="count">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.Pool`1">
+            <summary>
+            Manages a cache of a type of resource.
+            </summary>
+            <typeparam name="T">Type of object to pool.</typeparam>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.PooledElementCount">
+            <summary>
+            Gets the number of existing elements in the pool. This number of elements can be requested without creating any new ones.
+            </summary>
+            <remarks> 
+            Does not do any locking. Should not be used while elements may still be getting added to or removed from the pool.
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Creator">
+            <summary>
+            Gets or sets the function used to create new objects when the pool has no existing objects available.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Initializer">
+            <summary>
+            Gets or sets the function used to initialize objects taken from the pool. Runs even if the object was just created by the Creator delegate.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Cleaner">
+            <summary>
+            Gets or sets the action applied to an element when it is returned to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Clear">
+            <summary>
+            Clears all elements from the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Take">
+            <summary>
+            Takes an element from the pool. If the pool is empty, a new resource is created and returned.
+            </summary>
+            <returns>Element from the pool.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Return(`0)">
+            <summary>
+            Returns the specified item to the pool. If a cleaner delegate is set, the item is cleaned.
+            </summary>
+            <param name="item">Item to give back to the pool.</param>
+        </member>
+        <member name="F:BepuUtilities.Memory.SpanHelper.MaximumSpanSizePower">
+            <summary>
+            The highest size span exponent. The largest span is 2^MaximumSpanSizePower. This avoids overflow.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.GetContainingPowerOf2(System.Int32)">
+            <summary>
+            Computes the lowest integer N such that 2^N >= i.
+            </summary>
+            <param name="i">Integer to compute the power of.</param>
+            <returns>Lowest integer N such that 2^N >= i.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.IsPrimitive``1">
+            <summary>
+            Tests if a generic parameter is primitive. Fast path; specialized compilation.
+            </summary>
+            <typeparam name="T">Type to check for primitiveness.</typeparam>
+            <returns>True if the type is one of the primitive types, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.IsPrimitive(System.Type)">
+            <summary>
+            Tests if a type is primitive. Slow path; unspecialized compilation.
+            </summary>
+            <param name="type">Type to check for primitiveness.</param>
+            <returns>True if the type is one of the primitive types, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from one buffer to another.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source buffer to pull elements from.</param>
+            <param name="sourceIndex">Index in the buffer to start pulling elements from.</param>
+            <param name="target">Target buffer to set values.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Span{``0},System.Int32,System.Int32)">
+            <summary>
+            Copies data from a buffer to a span.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source buffer to pull elements from.</param>
+            <param name="sourceIndex">Index in the buffer to start pulling elements from.</param>
+            <param name="target">Target span to set values.</param>
+            <param name="targetIndex">Index in the span to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(System.Span{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from a span to a buffer.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source span to pull elements from.</param>
+            <param name="sourceIndex">Index in the span to start pulling elements from.</param>
+            <param name="target">Target buffer to set values into.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(System.ReadOnlySpan{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from a span to a buffer.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source span to pull elements from.</param>
+            <param name="sourceIndex">Index in the span to start pulling elements from.</param>
+            <param name="target">Target buffer to set values into.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.WorkerBufferPools">
+            <summary>
+            Collection of pools used by worker threads.
+            </summary> 
+        </member>
+        <!-- Badly formed XML comment ignored for member "P:BepuUtilities.Memory.WorkerBufferPools.Item(System.Int32)" -->
+        <member name="P:BepuUtilities.Memory.WorkerBufferPools.DefaultBlockCapacity">
+            <summary>
+            Gets or sets the default block capacity for any newly created arena subpools.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new set of worker pools.
+            </summary>
+            <param name="initialWorkerCount">Initial number of workers to allocate space for.</param>
+            <param name="defaultBlockCapacity">Default block capacity in thread pools.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.Clear">
+            <summary>
+            Clears all allocations from worker pools. Pools can still be used after being cleared.
+            </summary>
+            <remarks>This does not take any locks and should not be called if any other threads may be using any of the involved pools.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.Dispose">
+            <summary>
+            Disposes all worker pools. Pools cannot be used after being disposed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.GetTotalAllocatedByteCount">
+            <summary>
+            Gets the total number of bytes allocated from native memory by all worker pools. Includes memory that is not currently in use by external allocators.
+            </summary>
+            <returns>Total number of bytes allocated from native memory by all worker pools. Includes memory that is not currently in use by external allocators.</returns>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Quaternion.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>Creates a quaternion from a unit vector and an angle to rotate around the vector.</summary>
+            <param name="axis">The unit vector to rotate around.</param>
+            <param name="angle">The angle, in radians, to rotate around the vector.</param>
+            <returns>The newly created quaternion.</returns>
+            <remarks><paramref name="axis" /> vector must be normalized before calling this method or the resulting <see cref="T:BepuUtilities.Numerics.Quaternion" /> will be incorrect.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Quaternion.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion)">
+            <summary>Concatenates two quaternions.</summary>
+            <param name="value1">The first quaternion rotation in the series.</param>
+            <param name="value2">The second quaternion rotation in the series.</param>
+            <returns>A new quaternion representing the concatenation of the <paramref name="value1" /> rotation followed by the <paramref name="value2" /> rotation.</returns>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Vector3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>Transforms a vector by the specified Quaternion rotation value.</summary>
+            <param name="value">The vector to rotate.</param>
+            <param name="rotation">The rotation to apply.</param>
+            <returns>The transformed vector.</returns>
+        </member>
+        <member name="T:BepuUtilities.QuaternionEx">
+            <summary>
+            Provides additional functionality and some lower overhead function variants for Quaternions.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Add(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Adds two quaternions together.
+            </summary>
+            <param name="a">First quaternion to add.</param>
+            <param name="b">Second quaternion to add.</param>
+            <param name="result">Sum of the addition.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Scale(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Scales a quaternion.
+            </summary>
+            <param name="q">Quaternion to multiply.</param>
+            <param name="scale">Amount to multiply each component of the quaternion by.</param>
+            <param name="result">Scaled quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.ConcatenateWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            Assumes that neither input parameter overlaps the output parameter.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to multiply.</param>
+            <param name="b">Second quaternion to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="P:BepuUtilities.QuaternionEx.Identity">
+            <summary>
+            Quaternion representing the identity transform.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix used to create a new quaternion.</param>
+            <returns>Quaternion representing the same rotation as the matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <returns>Quaternion based on the rotation matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Normalize(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Ensures the quaternion has unit length.
+            </summary>
+            <param name="quaternion">Quaternion to normalize.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.LengthSquared(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the squared length of the quaternion.
+            </summary>
+            <returns>Squared length of the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Length(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the length of the quaternion.
+            </summary>
+            <returns>Length of the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Slerp(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Blends two quaternions together to get an intermediate state.
+            </summary>
+            <param name="start">Starting point of the interpolation.</param>
+            <param name="end">Ending point of the interpolation.</param>
+            <param name="interpolationAmount">Amount of the end point to use.</param>
+            <param name="result">Interpolated intermediate quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Slerp(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number)">
+            <summary>
+            Blends two quaternions together to get an intermediate state.
+            </summary>
+            <param name="start">Starting point of the interpolation.</param>
+            <param name="end">Ending point of the interpolation.</param>
+            <param name="interpolationAmount">Amount of the end point to use.</param>
+            <returns>Interpolated intermediate quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Conjugate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <param name="result">Conjugated quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Conjugate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <returns>Conjugated quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Inverse(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the inverse of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to invert.</param>
+            <param name="result">Result of the inversion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Inverse(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the inverse of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to invert.</param>
+            <returns>Result of the inversion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Negate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Negates the components of a quaternion.
+            </summary>
+            <param name="a">Quaternion to negate.</param>
+            <param name="b">Negated result.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Negate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Negates the components of a quaternion.
+            </summary>
+            <param name="q">Quaternion to negate.</param>
+            <returns>Negated result.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformWithoutOverlap(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector using a quaternion, assuming that the output does not alias with the input.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitX(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit X direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitY(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit Y vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitZ(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit Z vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a quaternion from an axis and angle.
+            </summary>
+            <param name="axis">Axis of rotation.</param>
+            <param name="angle">Angle to rotate around the axis.</param>
+            <returns>Quaternion representing the axis and angle rotation.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Creates a quaternion from an axis and angle.
+            </summary>
+            <param name="axis">Axis of rotation.</param>
+            <param name="angle">Angle to rotate around the axis.</param>
+            <param name="q">Quaternion representing the axis and angle rotation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromYawPitchRoll(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a quaternion from yaw, pitch, and roll.
+            </summary>
+            <param name="yaw">Yaw of the rotation.</param>
+            <param name="pitch">Pitch of the rotation.</param>
+            <param name="roll">Roll of the rotation.</param>
+            <returns>Quaternion representing the yaw, pitch, and roll.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromYawPitchRoll(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from yaw, pitch, and roll.
+            </summary>
+            <param name="yaw">Yaw of the rotation.</param>
+            <param name="pitch">Pitch of the rotation.</param>
+            <param name="roll">Roll of the rotation.</param>
+            <param name="q">Quaternion representing the yaw, pitch, and roll.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetAngleFromQuaternion(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the angle change represented by a normalized quaternion.
+            </summary>
+            <param name="q">Quaternion to be converted.</param>
+            <returns>Angle around the axis represented by the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetAxisAngleFromQuaternion(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the axis angle representation of a normalized quaternion.
+            </summary>
+            <param name="q">Quaternion to be converted.</param>
+            <param name="axis">Axis represented by the quaternion.</param>
+            <param name="angle">Angle around the axis represented by the quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <param name="q">Quaternion representing the rotation from v1 to v2.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetRelativeRotationWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the rotation from the start orientation to the end orientation such that end = Quaternion.Concatenate(start, relative).
+            Assumes that neither input parameter overlaps with the output parameter.
+            </summary>
+            <param name="start">Starting orientation.</param>
+            <param name="end">Ending orientation.</param>
+            <param name="relative">Relative rotation from the start to the end orientation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetLocalRotationWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Transforms the rotation into the local space of the target basis such that rotation = Quaternion.Concatenate(localRotation, targetBasis)
+            Assumes that neither input parameter overlaps with the output parameter.
+            </summary>
+            <param name="rotation">Rotation in the original frame of reference.</param>
+            <param name="targetBasis">Basis in the original frame of reference to transform the rotation into.</param>
+            <param name="localRotation">Rotation in the local space of the target basis.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Rebroadcast(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Takes a slot from the source quaternion and broadcasts it into all slots of the target quaternion.
+            </summary>
+            <param name="source">Quaternion to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="broadcasted">Target quaternion to be filled with the selected data.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.CreateFromRotationMatrix(BepuUtilities.Matrix3x3Wide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Add(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Adds the components of two quaternions together.
+            </summary>
+            <param name="a">First quaternion to add.</param>
+            <param name="b">Second quaternion to add.</param>
+            <param name="result">Sum of the two input quaternions.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <param name="q">Quaternion representing the rotation from v1 to v2.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <returns>Quaternion representing the rotation from v1 to v2.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetAxisAngleFromQuaternion(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Gets an axis and angle representation of the rotation stored in a quaternion.
+            </summary>
+            <param name="q">Quaternion to extract an axis-angle representation from.</param>
+            <param name="axis">Axis of rotation extracted from the quaternion.</param>
+            <param name="angle">Angle of rotation extracted from the quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the vector using a quaternion. Assumes that the memory backing the input and output do not overlap.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Transform(BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Transform(BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformByConjugate(BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitX(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit X direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitY(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit Y vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitZ(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit Z vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitXY(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the unit X and unit Y direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vectors.</param>
+            <param name="x">Transformed unit X vector.</param>
+            <param name="y">Transformed unit Y vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitXZ(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the unit X and unit Z direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vectors.</param>
+            <param name="x">Transformed unit X vector.</param>
+            <param name="z">Transformed unit Z vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ConcatenateWithoutOverlap(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b. Assumes that the memory backing the input and output do not overlap.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Concatenate(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.op_Multiply(BepuUtilities.QuaternionWide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <returns>Product of the concatenation.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Conjugate(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <param name="result">Conjugated quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Conjugate(BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <returns>Conjugated quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ReadFirst(BepuUtilities.QuaternionWide@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Gathers values from the first slot of a wide quaternion and puts them into a narrow representation.
+            </summary>
+            <param name="source">Wide quaternion to copy values from.</param>
+            <param name="target">Narrow quaternion to place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.WriteFirst(BepuUtilities.Numerics.Quaternion,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Gathers values from a quaternion and places them into the first indices of the target wide quaternion.
+            </summary>
+            <param name="source">Quaternion to copy values from.</param>
+            <param name="targetSlot">Wide quaternion to place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.WriteSlot(BepuUtilities.Numerics.Quaternion,System.Int32,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ReadSlot(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="T:BepuUtilities.Symmetric2x2Wide">
+            <summary>
+            Stores the lower left triangle (including diagonal) of a 2x2 matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.SandwichScale(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes m * scale * mT. 
+            </summary>
+            <param name="m">Matrix to sandwich the scale with.</param>
+            <param name="scale">Scale to be sandwiched.</param>
+            <param name="result">Result of m * scale * mT.</param>
+            <remarks>This is a peculiar operation, but it's useful for computing linear effective mass contributions in 2DOF constraints.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.MultiplyTransposed(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric2x2Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = transpose(transpose(a) * b), assuming b is symmetric.
+            </summary>
+            <param name="a">Matrix to be transposed and multiplied.</param>
+            <param name="b">Symmetric matrix to multiply.</param>
+            <param name="result">Result of transpose(transpose(a) * b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.CompleteMatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes a * transpose(b), assuming a = b * M for some symmetric matrix M. This is conceptually the second half of Triangular3x3Wide.MatrixSandwich.
+            </summary>
+            <param name="a">First matrix to multiply. Must be of the form a = b * M for some symmetric matrix M.</param>
+            <param name="b">Matrix to be transaposed and multiplied with a..</param>
+            <param name="result">Symmetric result of a * transpose(b), assuming a = b * M.</param>
+        </member>
+        <member name="T:BepuUtilities.Symmetric3x3">
+            <summary>
+            Lower left triangle (including diagonal) of a symmetric 3x3 matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.XX">
+            <summary>
+            First row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.YX">
+            <summary>
+            Second row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.YY">
+            <summary>
+            Second row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZX">
+            <summary>
+            Third row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZY">
+            <summary>
+            Third row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZZ">
+            <summary>
+            Third row, third column of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.RotationSandwich(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes rT * m * r for a symmetric matrix m and a rotation matrix r.
+            </summary>
+            <param name="r">Rotation matrix to use as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of transpose(r) * m * r.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Determinant(BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the determinant of a symmetric matrix.
+            </summary>
+            <param name="m">Matrix to intepret as symmetric.</param>
+            <returns>Determinant of the matrix interpreted as symmetric.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Invert(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <returns>Inverted matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Invert(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Add(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Matrix with components equal to the components of the two input matrices added together.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Subtract(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <param name="result">Matrix with components equal to the components of the matrix a minus the components of matrix b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Add(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Matrix with components equal to the components of the two input matrices added together.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Subtract(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <param name="result">Matrix with components equal to the difference of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="b">Matrix to be subtracted from</param>
+            <param name="a">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Scale(BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Multiplies every component in the matrix by the given scale.
+            </summary>
+            <param name="m">Matrix to be scaled.</param>
+            <param name="scale">Scale to apply to every component of the original matrix.</param>
+            <param name="scaled">Scaled result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Multiplies every component in the matrix by the given scale.
+            </summary>
+            <param name="m">Matrix to be scaled.</param>
+            <param name="scale">Scale to apply to every component of the original matrix.</param>
+            <returns>Scaled result.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.MultiplyWithoutOverlap(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Multiplies the two matrices as if they were symmetric.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Multiplies the two matrices as if they were symmetric.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.TransformWithoutOverlap(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by a symmetric matrix.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to interpret as symmetric transform.</param>
+            <param name="result">Result of transforming the vector by the given symmetric matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Transforms a vector by a symmetric matrix.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to interpret as symmetric transform.</param>
+            <returns>Result of transforming the vector by the given symmetric matrix.</returns>
+        </member>
+        <member name="T:BepuUtilities.Symmetric3x3Wide">
+            <summary>
+            Stores the lower left triangle (including diagonal) of a 3x3 matrix. Useful for symmetric matrices (and sometimes antisymmetric matrices).
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.XX">
+            <summary>
+            First row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.YX">
+            <summary>
+            Second row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.YY">
+            <summary>
+            Second row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZX">
+            <summary>
+            Third row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZY">
+            <summary>
+            Third row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZZ">
+            <summary>
+            Third row, third column of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Invert(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Inverts the matrix as if it is a symmetric matrix where M32 == M23, M13 == M31, and M21 == M12.
+            </summary>
+            <param name="m">Symmetric matrix to invert.</param>
+            <param name="inverse">Inverse of the symmetric matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Add(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Adds the components of two symmetric matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Addition(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Adds the components of two symmetric matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Sum of the two input matrices.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Subtract(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Subtracts one symmetric matrix's components from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <param name="result">Result of a - b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Subtraction(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Subtracts one symmetric matrix's components from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <returns>Result of a - b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.SkewSandwichWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes skewSymmetric(v) * m * transpose(skewSymmetric(v)) for a symmetric matrix m. Assumes that the input and output matrices do not overlap.
+            </summary>
+            <param name="m">Symmetric matrix.</param>
+            <param name="v">Vector to create the skew symmetric matrix from to act as the sandwich bread.</param>
+            <param name="sandwich">Result of skewSymmetric(v) * m * transpose(skewSymmetric(v)).</param>
+            <remarks>This operation might have a formal name that isn't skew sandwich. But that's okay, its real name is skew sandwich.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.VectorSandwich(BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes v * m * transpose(v) for a symmetric matrix m. Assumes that the input and output do not overlap.
+            </summary>
+            <param name="v">Vector acting as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of v * m * transpose(v) for a symmetric matrix m.</param>
+            <remarks>Since I called the other one a skew sandwich, I really don't have a choice in the naming convention anymore.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.RotationSandwich(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes rT * m * r for a symmetric matrix m and a rotation matrix R.
+            </summary>
+            <param name="r">Rotation matrix to use as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of v * m * transpose(v) for a symmetric matrix m.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyWithoutOverlap(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <returns>Result of multiplying a * b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <returns>Result of multiplying a * b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Multiply(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that a represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="b">Second matrix of the pair to multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that a represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="b">Second matrix of the pair to multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyByTransposed(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * transpose(b).
+            </summary>
+            <param name="a">Matrix to multiply with the transposed matrix.</param>
+            <param name="b">Matrix to transpose and concatenate with the first matrix.</param>
+            <param name="result">Result of a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyByTransposed(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = transpose(a * transpose(b)).
+            </summary>
+            <param name="a">Matrix to multiply with the transposed matrix.</param>
+            <param name="b">Matrix to transpose and concatenate with the first matrix.</param>
+            <param name="result">Result of transpose(a * transpose(b)).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes m * t * mT for a symmetric matrix t and a matrix m.
+            </summary>
+            <param name="m">Matrix to use as the sandwich bread.</param>
+            <param name="t">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of m * t * mT for a symmetric matrix t.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwich(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, where a = transpose(b) * M for some symmetric matrix M.
+            </summary>
+            <param name="a">Some matrix equal to transpose(b) * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M.</param>
+            <param name="result">Complete result of transpose(b) * M * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = tranpose(a) * b, where a = transpose(transpose(b) * M) for some symmetric matrix M. In other words, we're just treating matrix a as a 3x2 matrix.
+            </summary>
+            <param name="a">Some matrix equal to transpose(b) * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M.</param>
+            <param name="result">Complete result of transpose(b) * M * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwichByTranspose(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * transpose(b), where a = b * M for some symmetric matrix M.
+            </summary>
+            <param name="a">Some matrix equal to b * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M, to be transposed.</param>
+            <param name="result">Complete result of b * M * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwichTranspose(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = transpose(a) * b, where b = M * a for some symmetric matrix M.
+            </summary>
+            <param name="a">Matrix used to sandwich the original matrix M.</param>
+            <param name="b">Some matrix equal to M * a for some symmetric matrix M.</param>
+            <param name="result">Complete result of transpose(a) * M * a.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.GetUpperLeft3x3Block(BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Returns a reference to the upper left 3x3 block of the matrix.
+            </summary>
+            <param name="m">Matrix to pull a block from.</param>
+            <returns>Reference to the requested block.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.GetUpperRight3x1Block(BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Returns a reference to the upper right 3x1 (or lower left 1x3) block of the matrix. 
+            </summary>
+            <param name="m">Matrix to pull a block from.</param>
+            <returns>Reference to the requested block.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.Scale(BepuUtilities.Symmetric4x4Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.TransformWithoutOverlap(BepuUtilities.Vector4Wide@,BepuUtilities.Symmetric4x4Wide,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes result = v * m.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result">Result of the transform.</param>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.A">
+            <summary>
+            Upper left 3x3 block of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.B">
+            <summary>
+            Lower left 2x3 block of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.D">
+            <summary>
+            Lower right 2x2 block of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric5x5Wide.Scale(BepuUtilities.Symmetric5x5Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric5x5Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric5x5Wide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector2Wide@,BepuUtilities.Symmetric5x5Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Computes result = v * m, where v and result are 1x5 vectors which are split into two subvectors.
+            </summary>
+            <param name="v0">First half of the a vector.</param>
+            <param name="v1">Second half of the a vector.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result0">First half of the result.</param>
+            <param name="result1">Second half of the result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.Scale(BepuUtilities.Symmetric6x6Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric6x6Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric6x6Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes result = v * m, where v and result are 1x6 vectors which are split into two 1x3 values.
+            </summary>
+            <param name="v0">First half of the a vector.</param>
+            <param name="v1">Second half of the a vector.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result0">First half of the result.</param>
+            <param name="result1">Second half of the result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.LDLTSolve(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Solves [vLower, vUpper] = [resultLower, resultUpper] * [[a, b], [bT, d]] for [resultLower, resultUpper] using LDLT decomposition.
+            [[a, b], [bT, d]] should be positive semidefinite.
+            </summary>
+            <param name="v0">First 3 values of the 6 component input vector.</param>
+            <param name="v1">Second 3 values of the 6 component input vector.</param>
+            <param name="a">Upper left 3x3 region of the matrix.</param>
+            <param name="b">Upper right 3x3 region of the matrix. Also the lower left 3x3 region of the matrix, transposed.</param>
+            <param name="d">Lower right 3x3 region of the matrix.</param>
+            <param name="result0">First 3 values of the result vector.</param>
+            <param name="result1">Second 3 values of the result vector.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.ContinuationBlock">
+            <summary>
+            Stores a block of task continuations that maintains a pointer to previous blocks. 
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.ContinuationHandle">
+            <summary>
+            Refers to a continuation within a <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/>.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Completed">
+            <summary>
+            Gets whether the tasks associated with this continuation have completed. If the continuation has not been initialized, this will always return false.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Continuation">
+            <summary>
+            Retrieves a pointer to the continuation data for <see cref="T:BepuUtilities.TaskScheduling.ContinuationHandle"/>.
+            </summary>
+            <returns>Pointer to the continuation backing the given handle.</returns>
+            <remarks>This should not be used if the continuation handle is not known to be valid. The data pointed to by the data could become invalidated if the continuation completes.</remarks>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Null">
+            <summary>
+            Gets a null continuation handle.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Initialized">
+            <summary>
+            Gets whether this handle ever represented an allocated handle. This does not guarantee that the continuation's associated tasks are active in the <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/> that it was allocated from.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.ContinuationHandle.NotifyTaskCompleted(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Notifies the continuation that one task was completed.
+            </summary>
+            <param name="workerIndex">Worker index to pass to the continuation's delegate, if any.</param>
+            <param name="dispatcher">Dispatcher to pass to the continuation's delegate, if any.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.IJobFilter">
+            <summary>
+            Determines which jobs are allowed to serve a <see cref="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)"/> request.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.IJobFilter.AllowJob(System.UInt64)">
+            <summary>
+            Determines whether a job with the given tag should be allowed to serve a <see cref="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)"/> request.
+            </summary>
+            <param name="jobTag">Tag of the candidate job.</param>
+            <returns>True if the job should be allowed to serve a request, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.AllowAllJobs">
+            <summary>
+            A filter that will allow pops from any jobs.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.AllowAllJobs.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.DelegateJobFilter">
+            <summary>
+            A job filter that wraps a managed delegate.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.DelegateJobFilter.Filter">
+            <summary>
+            Delegate to use as the filter.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.DelegateJobFilter.#ctor(System.Func{System.UInt64,System.Boolean})">
+            <summary>
+            Creates a job filter that wraps a delegate.
+            </summary>
+            <param name="filter">Delegate to use as the filter.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.DelegateJobFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.FunctionPointerJobFilter">
+            <summary>
+            A job filter that wraps a function pointer.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.Filter">
+            <summary>
+            Delegate to use as the filter.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.#ctor()">
+            <summary>
+            Creates a job filter that wraps a delegate.
+            </summary>
+            <param name="filter">Delegate to use as the filter.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.MinimumTagFilter">
+            <summary>
+            A job filter that requires the job tag to meet or exceed a threshold value.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.MinimumTagFilter.MinimumTagValue">
+            <summary>
+            Value that a job must match or exceed to be allowed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.MinimumTagFilter.#ctor(System.UInt64)">
+            <summary>
+            Creates a job filter that requires the job tag to meet or exceed a threshold value.
+            </summary>
+            <param name="minimumTagValue">Value that a job must match or exceed to be allowed.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.MinimumTagFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.EqualTagFilter">
+            <summary>
+            A job filter that requires the job tag to match a specific value.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.EqualTagFilter.RequiredTag">
+            <summary>
+            Tag value required to allow a job.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.EqualTagFilter.#ctor(System.UInt64)">
+            <summary>
+            Creates a job filter that requires the job tag to match a specific value.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.EqualTagFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Job.TryPop(BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task from the job.
+            </summary>
+            <param name="task">Task popped from the job, if any.</param>
+            <returns>True if a task was available to pop, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.PopTaskResult">
+            <summary>
+            Describes the result status of a pop attempt.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Success">
+            <summary>
+            A task was successfully popped.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Empty">
+            <summary>
+            The stack was empty, but may have more tasks in the future.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Stop">
+            <summary>
+            The stack has been terminated and all threads seeking work should stop.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.Task">
+            <summary>
+            Description of a task to be submitted to a <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/>.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Function">
+            <summary>
+            Function to be executed by the task. Takes as arguments the <see cref="F:BepuUtilities.TaskScheduling.Task.Id"/>, <see cref="F:BepuUtilities.TaskScheduling.Task.Context"/> pointer, and executing worker index.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Context">
+            <summary>
+            Context to be passed into the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Continuation">
+            <summary>
+            Continuation to be notified after this task completes, if any.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Id">
+            <summary>
+            User-provided identifier of this task.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.#ctor(,System.Void*,System.Int64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Creates a new task.
+            </summary>
+            <param name="function">Function to be executed by the task. Takes as arguments the <see cref="F:BepuUtilities.TaskScheduling.Task.Id"/>, <see cref="F:BepuUtilities.TaskScheduling.Task.Context"/> pointer, executing worker index, and executing <see cref="T:BepuUtilities.IThreadDispatcher"/>.</param>
+            <param name="context">Context pointer to pass to the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.</param>
+            <param name="taskId">Id of this task to be passed into the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.</param>
+            <param name="continuation">Continuation to notify after the completion of this task, if any.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.op_Implicit()~BepuUtilities.TaskScheduling.Task">
+            <summary>
+            Creates a task from a function.
+            </summary>
+            <param name="function">Function to turn into a task.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.Run(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Runs the task and, if necessary, notifies the associated continuation of its completion.
+            </summary>
+            <param name="workerIndex">Worker index to pass to the function.</param> 
+            <param name="dispatcher">Dispatcher running this task.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.TaskContinuation">
+            <summary>
+            Stores data relevant to tracking task completion and reporting completion for a continuation.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskContinuation.OnCompleted">
+            <summary>
+            Task to run upon completion of the associated task.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskContinuation.RemainingTaskCounter">
+            <summary>
+            Number of tasks not yet reported as complete in the continuation.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.TaskStack">
+            <summary>
+            Manages a linked stack of tasks.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskStack.head">
+            <summary>
+            Most recently pushed job on the stack. May be null if the stack is empty.
+            </summary>
+            <remarks>Pointers and generics don't play well, alas.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.#ctor(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a new parallel task stack.
+            </summary>
+            <param name="pool">Buffer pool to allocate non-thread allocated resources from.</param>
+            <param name="dispatcher">Thread dispatcher to pull thread pools from for thread allocations.</param>
+            <param name="workerCount">Number of workers to allocate space for.</param>
+            <param name="initialWorkerJobCapacity">Initial number of jobs (groups of tasks submitted together) to allocate space for in each worker.</param>
+            <param name="continuationBlockCapacity">Number of slots to allocate in each block of continuations in each worker.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Reset(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Returns the stack to a fresh state without reallocating.
+            </summary>
+            <param name="dispatcher">Dispatcher whose thread pools should be used to return any thread allocated resources.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Dispose(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Returns unmanaged resources held by the <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/> to a pool.
+            </summary>
+            <param name="pool">Buffer pool to return resources to.</param>
+            <param name="dispatcher">Dispatcher whose thread pools should be used to return any thread allocated resources.</param>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.TaskStack.ApproximateTaskCount">
+            <summary>
+            Gets the approximate number of active tasks. This is not guaranteed to actually measure the true number of tasks at any one point in time.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.TaskStack.ApproximateContinuationCount">
+            <summary>
+            Gets the approximate number of active continuations. This is not guaranteed to actually measure the true number of continuations at any one point in time; it checks each worker in sequence, and the continuation counts could vary arbitrarily as the checks proceed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.AllocateContinuation(System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Attempts to allocate a continuation for a set of tasks.
+            </summary>
+            <param name="taskCount">Number of tasks associated with the continuation.</param>
+            <param name="workerIndex">Worker index to allocate the continuation on.</param>
+            <param name="dispatcher">Dispatcher to use for any per-thread allocations if necessary.</param>
+            <param name="onCompleted">Function to execute upon completing all associated tasks, if any. Any task with a null <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/> will not be executed.</param>
+            <returns>Handle of the continuation.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task.
+            </summary>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="task">Popped task, if any.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPop(BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task.
+            </summary>
+            <param name="task">Popped task, if any.</param>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPopAndRun``1(``0@,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Attempts to pop a task and run it.
+            </summary>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="workerIndex">Index of the worker to pass into the task function.</param>
+            <param name="dispatcher">Thread dispatcher running this task stack.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPopAndRun(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Attempts to pop a task and run it.
+            </summary>
+            <param name="workerIndex">Index of the worker to pass into the task function.</param>
+            <param name="dispatcher">Thread dispatcher running this task stack.</param>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushUnsafely(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks onto the task stack. This function is not thread safe.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User-defined tag data for the submitted job.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushUnsafely(BepuUtilities.TaskScheduling.Task,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a task onto the task stack. This function is not thread safe.
+            </summary>
+            <param name="task">Task to push.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Push(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks onto the task stack.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User-defined tag data for the submitted job.</param>
+            <returns>True if the push succeeded, false if it was contested.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.AllocateContinuationAndPush(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Pushes a set of tasks to the stack with a created continuation.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <param name="onComplete">Task to run upon completion of all the submitted tasks, if any.</param>
+            <returns>Handle of the continuation created for these tasks.</returns>
+            <remarks>Note that this will keep trying until task submission succeeds.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.WaitForCompletion``1(``0@,BepuUtilities.TaskScheduling.ContinuationHandle,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Waits for a continuation to be completed.
+            </summary>
+            <remarks>Instead of spinning the entire time, this may pop and execute pending tasks to fill the gap.</remarks>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="continuation">Continuation to wait on.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the executing worker.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.WaitForCompletion(BepuUtilities.TaskScheduling.ContinuationHandle,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Waits for a continuation to be completed.
+            </summary>
+            <remarks>Instead of spinning the entire time, this may pop and execute pending tasks to fill the gap.</remarks>
+            <param name="continuation">Continuation to wait on.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the executing worker.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RunTasks``1(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,``0@,System.UInt64)">
+            <summary>
+            Pushes a set of tasks to the worker stack and returns when all tasks are complete.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="workerIndex">Index of the worker executing this function.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="filter">Filter applied to jobs considered for filling the calling thread's wait for other threads to complete.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <remarks>Note that this will keep working until all tasks are run. It may execute tasks unrelated to the requested tasks while waiting on other workers to complete constituent tasks.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RunTasks(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks to the worker stack and returns when all tasks are complete.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="workerIndex">Index of the worker executing this function.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>Note that this will keep working until all tasks are run. It may execute tasks unrelated to the requested tasks while waiting on other workers to complete constituent tasks.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RequestStop">
+            <summary>
+            Requests that all workers stop. The next time a worker runs out of tasks to run, if it sees a stop command, it will be reported.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushForUnsafely(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Pushes a for loop onto the task stack. Does not take a lock.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each task execution.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <param name="continuation">Continuation associated with the loop tasks, if any.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushFor(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Pushes a for loop onto the task stack.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each task execution.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param> 
+            <param name="continuation">Continuation associated with the loop tasks, if any.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>This function will not attempt to run any iterations of the loop itself.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.For``1(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,``0@,System.UInt64)">
+            <summary>
+            Submits a set of tasks representing a for loop over the given indices and returns when all loop iterations are complete.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each iteration of the loop.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="filter">Filter applied to jobs considered for filling the calling thread's wait for other threads to complete.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.For(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Submits a set of tasks representing a for loop over the given indices and returns when all loop iterations are complete.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each iteration of the loop.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Worker.AllocateJob(System.Span{BepuUtilities.TaskScheduling.Task},System.UInt64,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Pushes a set of tasks onto the stack.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="tag">User tag associated with the job.</param>
+            <param name="dispatcher">Dispatcher used to pull thread allocations if necessary.</param>
+            <remarks>If the worker associated with this stack might be active, this function can only be called by the worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Worker.AllocateContinuation(System.Int32,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Allocates a continuation for a set of tasks.
+            </summary>
+            <param name="taskCount">Number of tasks associated with the continuation.</param>
+            <param name="dispatcher">Dispatcher from which to pull a buffer pool if needed for resizing.</param>
+            <param name="onCompleted">Function to execute upon completing all associated tasks, if any. Any task with a null <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/> will not be executed.</param>
+            <returns>Handle of the continuation.</returns>
+        </member>
+        <member name="T:BepuUtilities.ThreadDispatcher">
+            <summary>
+            Provides a <see cref="T:BepuUtilities.IThreadDispatcher"/> implementation. Not reentrant.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.ThreadCount">
+            <summary>
+            Gets the number of threads to dispatch work on.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.WorkerPools">
+            <inheritdoc/>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.UnmanagedContext">
+            <inheritdoc/>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.ManagedContext">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new thread dispatcher with the given number of threads.
+            </summary>
+            <param name="threadCount">Number of threads to dispatch on each invocation.</param>
+            <param name="threadPoolBlockAllocationSize">Size of memory blocks to allocate for thread pools.</param>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.DispatchWorkers(,System.Int32,System.Void*,System.Object)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.DispatchWorkers(System.Action{System.Int32},System.Int32,System.Void*,System.Object)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.Dispose">
+            <summary>
+            Waits for all pending work to complete and then disposes all workers.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Vector2Wide">
+            <summary>
+            Two dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector2Wide.X">
+            <summary>
+            First component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector2Wide.Y">
+            <summary>
+            Second component of the vector.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.Add(BepuUtilities.Vector2Wide@,BepuUtilities.Vector2Wide@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Vector2Wide,BepuUtilities.Vector2Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Vector2Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector2Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.ReadFirst(BepuUtilities.Vector2Wide@,BepuUtilities.Numerics.Vector2@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.ReadSlot(BepuUtilities.Vector2Wide@,System.Int32,BepuUtilities.Numerics.Vector2@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.WriteFirst(BepuUtilities.Numerics.Vector2@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.WriteSlot(BepuUtilities.Numerics.Vector2@,System.Int32,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="T:BepuUtilities.Vector3Wide">
+            <summary>
+            Three dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.X">
+            <summary>
+            First component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.Y">
+            <summary>
+            Second component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.Z">
+            <summary>
+            Third component of the vector.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.#ctor(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Creates a vector by populating each component with the given scalar.
+            </summary>
+            <param name="s">Scalar to copy into all lanes of the vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.#ctor(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Creates a vector by populating each component with the given scalar.
+            </summary>
+            <param name="s">Scalar to copy into all lanes of the vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Add(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Add(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <param name="result">Vector with components equal to the input vector added to the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Subtracts one vector from another.
+            </summary>
+            <param name="a">Vector to subtract from.</param>
+            <param name="b">Vector to subtract from the first vector.</param>
+            <param name="result">Vector with components equal the input scalar subtracted from the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of subtracting a scalar from every component of a vector.
+            </summary>
+            <param name="v">Vector to subtract from.</param>
+            <param name="s">Scalar to subtract from every component of the vector.</param>
+            <param name="result">Vector with components equal the input scalar subtracted from the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Subtraction(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Subtracts one vector from another.
+            </summary>
+            <param name="a">Vector to subtract from.</param>
+            <param name="b">Vector to subtract from the first vector.</param>
+            <returns>Vector with components equal the input scalar subtracted from the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of subtracting the components of a vector from a scalar.
+            </summary>
+            <param name="v">Vector to subtract from the scalar.</param>
+            <param name="s">Scalar to subtract from.</param>
+            <param name="result">Vector with components equal the input vector subtracted from the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Subtraction(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of subtracting the components of a vector from a scalar.
+            </summary>
+            <param name="v">Vector to subtract from the scalar.</param>
+            <param name="s">Scalar to subtract from.</param>
+            <returns>Vector with components equal the input vector subtracted from the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Dot(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the inner product between two vectors.
+            </summary>
+            <param name="a">First vector to dot.</param>
+            <param name="b">Second vector to dot.</param>
+            <param name="result">Dot product of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Dot(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the inner product between two vectors.
+            </summary>
+            <param name="a">First vector to dot.</param>
+            <param name="b">Second vector to dot.</param>
+            <returns>Dot product of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component minimum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the scalar value and the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component minimum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <returns>Vector with components matching the smaller of the scalar value and the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <returns>Vector with components matching the smaller of the two input vectors.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component maximum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the scalar value and the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component maximum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <returns>Vector with components matching the larger of the scalar value and the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <returns>Vector with components matching the larger of the two input vectors.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Scale(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <param name="result">Scaled result vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Division(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Divides each component of the vector by the scalar.
+            </summary>
+            <param name="vector">Vector to divide.</param>
+            <param name="scalar">Scalar to divide the vector by.</param>
+            <returns>Value of the vector divided by the scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <returns>Scaled result vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <returns>Scaled result vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Abs(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the absolute value of a vector.
+            </summary>
+            <param name="vector">Vector to take the absolute value of.</param>
+            <param name="result">Absolute value of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Abs(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the absolute value of a vector.
+            </summary>
+            <param name="vector">Vector to take the absolute value of.</param>
+            <returns>Absolute value of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Negate(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Negates a vector.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <param name="result">Negated vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Negate(BepuUtilities.Vector3Wide@)">
+            <summary>
+            Negates a vector in place and returns a reference to it.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <returns>Reference to the input parameter, mutated.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_UnaryNegation(BepuUtilities.Vector3Wide)">
+            <summary>
+            Negates a vector.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <returns>Negated vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Reference to the vector to be conditionally negated.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Vector to be conditionally negated.</param>
+            <param name="negated">Conditionally negated result.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Vector to be conditionally negated.</param>
+            <returns>Conditionally negated vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.CrossWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the cross product between two vectors, assuming that the vector references are not aliased.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <param name="result">Result of the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Cross(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the cross product between two vectors.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <param name="result">Result of the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Cross(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the cross product between two vectors.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <returns>Result of the cross product.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the squared length of a vector.
+            </summary>
+            <param name="v">Vector to compute the squared length of.</param>
+            <param name="lengthSquared">Squared length of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the length of a vector.
+            </summary>
+            <param name="v">Vector to compute the length of.</param>
+            <param name="length">Length of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the squared length of a vector.
+            </summary>
+            <param name="v">Vector to compute the squared length of.</param>
+            <returns>Squared length of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the length of a vector.
+            </summary>
+            <param name="v">Vector to compute the length of.</param>
+            <returns>Length of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared">
+            <summary>
+            Computes the squared length of the vector.
+            </summary>
+            <returns>Squared length of this vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length">
+            <summary>
+            Computes the length of the vector.
+            </summary>
+            <returns>Length of this vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Distance(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <param name="distance">Distance between a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.DistanceSquared(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the squared distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <param name="distanceSquared">Squared distance between a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Distance(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <returns>Distance between a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.DistanceSquared(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the squared distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <returns>Squared distance between a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Normalize(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes a unit length vector pointing in the same direction as the input.
+            </summary>
+            <param name="v">Vector to normalize.</param>
+            <param name="result">Vector pointing in the same direction as the input, but with unit length.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Normalize(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes a unit length vector pointing in the same direction as the input.
+            </summary>
+            <param name="v">Vector to normalize.</param>
+            <returns>Vector pointing in the same direction as the input, but with unit length.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionalSelect(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Selects the left or right input for each lane depending on a mask.
+            </summary>
+            <param name="condition">Mask to use to decide between the left and right value for each lane..</param>
+            <param name="left">Value to choose if the condition mask is set.</param>
+            <param name="right">Value to choose if the condition mask is unset.</param>
+            <param name="result">Blended result.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionalSelect(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Selects the left or right input for each lane depending on a mask.
+            </summary>
+            <param name="condition">Mask to use to decide between the left and right value for each lane..</param>
+            <param name="left">Value to choose if the condition mask is set.</param>
+            <param name="right">Value to choose if the condition mask is unset.</param>
+            <returns>Blended result.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Multiply(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Multiplies the components of one vector with another.
+            </summary>
+            <param name="a">First vector to multiply.</param>
+            <param name="b">Second vector to multiply.</param>
+            <param name="result">Result of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Multiplies the components of one vector with another.
+            </summary>
+            <param name="a">First vector to multiply.</param>
+            <param name="b">Second vector to multiply.</param>
+            <returns>Result of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ReadSlot(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ReadFirst(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.WriteFirst(BepuUtilities.Numerics.Vector3,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.WriteSlot(BepuUtilities.Numerics.Vector3,System.Int32,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Broadcast(BepuUtilities.Numerics.Vector3,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Expands each scalar value to every slot of the bundle.
+            </summary>
+            <param name="source">Source value to write to every bundle slot.</param>
+            <param name="broadcasted">Bundle containing the source's components in every slot.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Broadcast(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Expands each scalar value to every slot of the bundle.
+            </summary>
+            <param name="source">Source value to write to every bundle slot.</param>
+            <returns>Bundle containing the source's components in every slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Rebroadcast(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Takes a slot from the source vector and broadcasts it into all slots of the target vector.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="broadcasted">Target vector to be filled with the selected data.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Rebroadcast(BepuUtilities.Vector3Wide,System.Int32)">
+            <summary>
+            Takes a slot from the source vector and broadcasts it into all slots of the target vector.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <returns>Target vector to be filled with the selected data.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.CopySlot(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Vector3Wide@,System.Int32)">
+            <summary>
+            Takes a slot from the source vector and places it into a slot of the target.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="sourceSlotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="target">Target vector whose slot will be filled with the selected data.</param>
+            <param name="targetSlotIndex">Slot in the target vectors to write values into.</param>
+        </member>
+        <member name="T:BepuUtilities.Vector4Wide">
+            <summary>
+            Four dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Add(BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Add(BepuUtilities.Vector4Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector4Wide@)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <param name="result">Vector with components equal to the input vector added to the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Vector4Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector4Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Min(BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Max(BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.ReadSlot(BepuUtilities.Vector4Wide@,System.Int32,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.ReadFirst(BepuUtilities.Vector4Wide@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.WriteFirst(BepuUtilities.Numerics.Vector4@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+    </members>
+</doc>

BIN
Release/net8.0/Apq.Web5.dll


BIN
Release/net8.0/Apq.Web5.pdb


BIN
Release/net8.0/Apq.dll


BIN
Release/net8.0/Apq.pdb


+ 7 - 2
Release/net8.0/Apq.xml

@@ -3172,16 +3172,21 @@
             </summary>
             </summary>
             <returns>新项的插入位置。</returns>
             <returns>新项的插入位置。</returns>
         </member>
         </member>
-        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按索引位置获取子项,越界则取类型T的默认值
             按索引位置获取子项,越界则取类型T的默认值
             </summary>
             </summary>
         </member>
         </member>
-        <member name="M:Apq.Extension.Ext_IList.IndexOf_ByFirst``1(System.Collections.Generic.IList{``0},System.Int32)">
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrFirstOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按索引位置获取子项,越界则取第一个值
             按索引位置获取子项,越界则取第一个值
             </summary>
             </summary>
         </member>
         </member>
+        <member name="M:Apq.Extension.Ext_IList.IndexOfOrLastOrDefault``1(System.Collections.Generic.IList{``0},System.Int32)">
+            <summary>
+            按索引位置获取子项,越界则取最后一个值
+            </summary>
+        </member>
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
         <member name="M:Apq.Extension.Ext_IList.IndexOf_ByCycle``1(System.Collections.Generic.IList{``0},System.Int32)">
             <summary>
             <summary>
             按循环索引获取子项
             按循环索引获取子项

+ 66 - 0
Release/net8.0/BepuPhysics.deps.json

@@ -0,0 +1,66 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "BepuPhysics/2.5.0-beta.13": {
+        "dependencies": {
+          "BepuUtilities": "2.5.0-beta.13",
+          "Microsoft.SourceLink.GitHub": "1.1.1"
+        },
+        "runtime": {
+          "BepuPhysics.dll": {}
+        }
+      },
+      "Microsoft.Build.Tasks.Git/1.1.1": {},
+      "Microsoft.SourceLink.Common/1.1.1": {},
+      "Microsoft.SourceLink.GitHub/1.1.1": {
+        "dependencies": {
+          "Microsoft.Build.Tasks.Git": "1.1.1",
+          "Microsoft.SourceLink.Common": "1.1.1"
+        }
+      },
+      "BepuUtilities/2.5.0-beta.13": {
+        "runtime": {
+          "BepuUtilities.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "BepuPhysics/2.5.0-beta.13": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "Microsoft.Build.Tasks.Git/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==",
+      "path": "microsoft.build.tasks.git/1.1.1",
+      "hashPath": "microsoft.build.tasks.git.1.1.1.nupkg.sha512"
+    },
+    "Microsoft.SourceLink.Common/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==",
+      "path": "microsoft.sourcelink.common/1.1.1",
+      "hashPath": "microsoft.sourcelink.common.1.1.1.nupkg.sha512"
+    },
+    "Microsoft.SourceLink.GitHub/1.1.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==",
+      "path": "microsoft.sourcelink.github/1.1.1",
+      "hashPath": "microsoft.sourcelink.github.1.1.1.nupkg.sha512"
+    },
+    "BepuUtilities/2.5.0-beta.13": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    }
+  }
+}

BIN
Release/net8.0/BepuPhysics.dll


BIN
Release/net8.0/BepuPhysics.pdb


+ 8010 - 0
Release/net8.0/BepuPhysics.xml

@@ -0,0 +1,8010 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>BepuPhysics</name>
+    </assembly>
+    <members>
+        <member name="T:BepuPhysics.BatchCompressor">
+            <summary>
+            Handles the movement of constraints from higher indexed batches into lower indexed batches to avoid accumulating a bunch of unnecessary ConstraintBatches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BatchCompressor.TargetCandidateFraction">
+            <summary>
+            Gets or sets the desired number of candidates to analyze as a fraction of the total number of constraints.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BatchCompressor.MaximumCompressionFraction">
+            <summary>
+            Gets or sets the maximum number of constraint moves that can occur in a single execution of Compress as a fraction of the total number of constraints.
+            </summary>       
+        </member>
+        <member name="F:BepuPhysics.BatchCompressor.nextBatchIndex">
+            <summary>
+            Index of the constraint batch to optimize.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BatchCompressor.Compress(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,System.Boolean)">
+            <summary>
+            Incrementally finds and applies a set of compressions to apply to the constraints in the solver's batches.
+            Constraints in higher index batches try to move to lower index batches whenever possible.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyMemoryLocation">
+            <summary>
+            Location of a body in memory.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyMemoryLocation.SetIndex">
+            <summary>
+            Index of the set owning the body reference. If the set index is 0, the body is awake. If the set index is greater than zero, the body is asleep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyMemoryLocation.Index">
+            <summary>
+            Index of the body within its owning set.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Bodies">
+            <summary>
+            Collection of all allocated bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.HandleToLocation">
+            <summary>
+            Remaps a body handle integer value to the actual array index of the body.
+            The backing array index may change in response to cache optimization.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.HandlePool">
+            <summary>
+            Pool from which handles are pulled for new bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.Sets">
+            <summary>
+            The set of existing bodies. The slot at index 0 contains all active bodies. Later slots, if allocated, contain the bodies associated with inactive islands.
+            Note that this buffer does not necessarily contain contiguous elements. When a set is removed, a gap remains.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Bodies.ActiveSet">
+            <summary>
+            Gets a reference to the active set, stored in the index 0 of the Sets buffer.
+            </summary>
+            <returns>Reference to the active body set.</returns>
+        </member>
+        <member name="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to a body in the collection.
+            </summary>
+            <param name="handle">Handle of the body to pull a reference for.</param>
+            <returns>Reference to the requested body.</returns>
+            <remarks>This is an alias for the older <see cref="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)"/> and the <see cref="T:BepuPhysics.BodyReference"/> constructor. They are all equivalent.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Bodies.Pool">
+            <summary>
+            Gets the pool used by the bodies collection to allocate and free memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Bodies.MinimumConstraintCapacityPerBody">
+            <summary>
+            Gets or sets the minimum constraint capacity for each body. Future resizes or allocations will obey this minimum, but changing this does not immediately resize existing lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,BepuPhysics.CollisionDetection.BroadPhase,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a new bodies collection. Initialize must be called for the instance to be ready for use.
+            </summary>
+            <param name="pool">Pool for the collection to pull persistent allocations from.</param>
+            <param name="shapes">Shapes referenced by the collection's bodies.</param>
+            <param name="broadPhase">Broad phase containing the body collidables.</param>
+            <param name="initialBodyCapacity">Initial number of bodies to allocate space for in the active set.</param>
+            <param name="initialIslandCapacity">Initial number of islands to allocate space for in the Sets buffer.</param>
+            <param name="initialConstraintCapacityPerBody">Expected number of constraint references per body to allocate space for.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Initialize(BepuPhysics.Solver,BepuPhysics.IslandAwakener,BepuPhysics.IslandSleeper)">
+            <summary>
+            Initializes the bodies set. Used to complete bidirectional dependencies.
+            </summary>
+            <param name="solver">Solver responsible for the constraints connected to the collection's bodies.</param>
+            <param name="awakener">Island awakener to use when bodies undergo transitions requiring that they exist in the active set.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.UpdateBounds(BepuPhysics.BodyHandle)">
+            <summary>
+            Updates the bounds held within the broad phase for the body's current state. Does not expand the bounding box by velocity. If there is no shape associated with the body, this does nothing.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Add(BepuPhysics.BodyDescription@)">
+            <summary>
+            Adds a new active body to the simulation.
+            </summary>
+            <param name="description">Description of the body to add.</param>
+            <returns>Handle of the created body.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.RemoveAt(System.Int32)">
+            <summary>
+            Removes an active body by its index. Any constraints connected to this body will be removed. Assumes that the input location is valid.
+            </summary>
+            <param name="activeBodyIndex">Index of the active body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Remove(BepuPhysics.BodyHandle)">
+            <summary>
+            Removes a body from the set by its handle. If the body is inactive, all bodies in its island will be forced active.
+            </summary>
+            <param name="handle">Handle of the body to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.AddConstraint(System.Int32,BepuPhysics.ConstraintHandle,System.Int32)">
+            <summary>
+            Adds a constraint to an active body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the body to add the constraint to.</param>
+            <param name="constraintHandle">Handle of the constraint to add.</param>
+            <param name="indexInConstraint">Index of the body in the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.RemoveConstraintReference(System.Int32,BepuPhysics.ConstraintHandle)">
+            <summary>
+            Removes a constraint from an active body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the active body.</param>
+            <param name="constraintHandle">Handle of the constraint to remove.</param>
+            <returns>True if the number of constraints remaining attached to the body is 0, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertia)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematicUnsafeGCHole(BepuPhysics.BodyInertia@)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze. Must be a reference to fixed data; a pointer will be taken.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+            <remarks>This is not exposed by default because of the risk of a non-obvious GC hole.
+            It exists because it's a mildly more convenient form than the pointer overload, and every use within the engine references only pinned data.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertiaWide)">
+            <summary>
+            Checks inertia lanes for kinematicity (all inverse mass and inertia values are zero).
+            </summary>
+            <param name="inertia">Inertia to examine for kinematicity.</param>
+            <returns>Mask of lanes which contain zeroed inverse masses and inertias.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsKinematic(BepuPhysics.BodyInertia*)">
+            <summary>
+            Gets whether the inertia matches that of a kinematic body (that is, all inverse mass and inertia components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.HasLockedInertia(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Gets whether the angular inertia matches that of a kinematic body (that is, all inverse inertia tensor components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.HasLockedInertia(BepuUtilities.Symmetric3x3*)">
+            <summary>
+            Gets whether the angular inertia matches that of a kinematic body (that is, all inverse inertia tensor components are zero).
+            </summary>
+            <param name="inertia">Body inertia to analyze.</param>
+            <returns>True if all components of inverse mass and inertia are zero, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.SetLocalInertia(BepuPhysics.BodyHandle,BepuPhysics.BodyInertia@)">
+            <summary>
+            Changes the local mass and inertia tensor associated with a body. Properly handles the transition between kinematic and dynamic.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed.
+            Wakes up the body.
+            </summary>
+            <param name="handle">Handle of the body whose inertia should change.</param>
+            <param name="localInertia">New local inertia for the body.</param>
+            <remarks>
+            This function is only necessary when the inertia change could potentially result in a transition between dynamic and kinematic states.
+            If it is guaranteed to be dynamic before and after the change, the inertia can be directly modified without issue.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.SetShape(BepuPhysics.BodyHandle,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a body. Properly handles the transition between shapeless and shapeful. If the body is inactive, it will be forced awake.
+            Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="handle">Handle of the body to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.ApplyDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)">
+            <summary>
+            Applies a description to a body. Properly handles any transitions between dynamic and kinematic and between shapeless and shapeful.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed. Wakes up the body.
+            Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="handle">Handle of the body to receive the description.</param>
+            <param name="description">Description to apply to the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)">
+            <summary>
+            Gets the description of a body by handle.
+            </summary>
+            <param name="handle">Handle of the body to look up.</param>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetDescription(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets the description of a body by handle.
+            </summary>
+            <param name="handle">Handle of the body to look up.</param>
+            <returns>Description of the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to a body by its handle.
+            </summary>
+            <param name="handle">Handle of the body to grab a reference of.</param>
+            <returns>Reference to the desired body.</returns>
+            <remarks>This is an alias for <see cref="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)"/> and the <see cref="T:BepuPhysics.BodyReference"/> constructor. They are all equivalent.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Bodies.BodyExists(BepuPhysics.BodyHandle)">
+            <summary>
+            Checks whether a body handle is currently registered with the bodies set.
+            </summary>
+            <param name="bodyHandle">Handle to check for.</param>
+            <returns>True if the handle exists in the collection, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnumerateConnectedBodyIndices``1(System.Int32,``0@)">
+            <summary>
+            Enumerates all the bodies connected to a given active body.
+            Bodies which are connected by more than one constraint will be reported multiple times.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to execute on each connected body.</typeparam>
+            <param name="activeBodyIndex">Index of the active body to enumerate the connections of. This body will not appear in the set of enumerated bodies, even if it is connected to itself somehow.</param>
+            <param name="enumerator">Enumerator instance to run on each connected body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnumerateConnectedBodies``1(BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Enumerates all the bodies connected to a given body.
+            Bodies which are connected by more than one constraint will be reported multiple times.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to execute on each connected body.</typeparam>
+            <param name="bodyHandle">Handle of the body to enumerate the connections of. This body will not appear in the set of enumerated bodies, even if it is connected to itself somehow.</param>
+            <param name="enumerator">Enumerator instance to run on each connected body.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Clear">
+            <summary>
+            Clears all bodies from all sets without releasing any memory that wouldn't be released by a sequence of regular removals.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Resize(System.Int32)">
+            <summary>
+            Resizes the allocated spans for active body data. Note that this is conservative; it will never orphan existing objects.
+            </summary>
+            <param name="capacity">Target body data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.ResizeConstraintListCapacities">
+            <summary>
+            Resizes all active body constraint lists to meet the MinimumConstraintCapacityPerBody. Inactive bodies are untouched.
+            Resizes are guaranteed to never shrink a list below the current count.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of active body buffers if needed to hold the target capacity.
+            </summary>
+            <param name="capacity">Target data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Bodies.EnsureConstraintListCapacities">
+            <summary>
+            Ensures all active body constraint lists can hold at least MinimumConstraintCapacityPerBody constraints. Inactive bodies are untouched.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.Dispose">
+            <summary>
+            Returns all body resources to the pool used to create them.
+            </summary>
+            <remarks>The object can be reused if it is reinitialized by using EnsureCapacity or Resize.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Bodies.DynamicLimit">
+            <summary>
+            Constraint body references greater than a given unsigned value are either kinematic (bit 30 set) or correspond to an empty lane (bit 31 set).
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Bodies.BodyReferenceMask">
+            <summary>
+            Mask of bits containing the decoded body reference in a constraint body reference. For active constraints this would be the body index bits, for sleeping constraints this would be the body handle bits.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsEncodedDynamicReference(System.Int32)">
+            <summary>
+            Checks whether a constraint encoded body reference value refers to a dynamic body.
+            </summary>
+            <param name="encodedBodyReferenceValue">Raw encoded value taken from a constraint.</param>
+            <returns>True if the encoded body reference refers to a dynamic body, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.IsEncodedKinematicReference(System.Int32)">
+            <summary>
+            Checks whether a constraint encoded body reference value refers to a kinematic body.
+            </summary>
+            <param name="encodedBodyReferenceValue">Raw encoded value taken from a constraint.</param>
+            <returns>True if the encoded body reference refers to a kinematic body, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Bodies.TransposeMotionStates(BepuUtilities.Memory.Buffer{BepuPhysics.MotionState},BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transposes of bundle of array-of-structures layout motion states into a bundle of array-of-structures-of-arrays layout.
+            Size of buffer must be no larger than the <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/>.
+            </summary>
+            <param name="states">Array-of-structures data to transpose.</param>
+            <param name="position">Array-of-structures-of-arrays positions.</param>
+            <param name="orientation">Array-of-structures-of-arrays orientations.</param>
+            <param name="velocity">Array-of-structures-of-arrays velocities.</param>
+        </member>
+        <member name="T:BepuPhysics.BodyActivityDescription">
+            <summary>
+            Describes the thresholds for a body going to sleep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivityDescription.SleepThreshold">
+            <summary>
+            Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivityDescription.MinimumTimestepCountUnderThreshold">
+            <summary>
+            The number of time steps that the body must be under the sleep threshold before the body becomes a sleep candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyActivityDescription.#ctor(BepuUtilities.Numerics.Number,System.Byte)">
+            <summary>
+            Creates a body activity description.
+            </summary>
+            <param name="sleepThreshold">Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).</param>
+            <param name="minimumTimestepCountUnderThreshold">The number of time steps that the body must be under the sleep threshold before the body becomes a sleep candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyActivityDescription.op_Implicit(BepuUtilities.Numerics.Number)~BepuPhysics.BodyActivityDescription">
+            <summary>
+            Creates a body activity description. Uses a <see cref="F:BepuPhysics.BodyActivityDescription.MinimumTimestepCountUnderThreshold"/> of 32.
+            </summary>
+            <param name="sleepThreshold">Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.</param>
+        </member>
+        <member name="T:BepuPhysics.BodyDescription">
+            <summary>
+            Describes a body's state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Pose">
+            <summary>
+            Position and orientation of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Velocity">
+            <summary>
+            Linear and angular velocity of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.LocalInertia">
+            <summary>
+            Mass and inertia tensor of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Collidable">
+            <summary>
+            Shape and collision detection settings for the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDescription.Activity">
+            <summary>
+            Sleeping settings for the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.GetDefaultSpeculativeMargin``1(``0@)">
+            <summary>
+            Computes a decent default speculative margin for a shape based on its minimum and maximum radii.
+            </summary>
+            <typeparam name="TShape">Type of the shape to compute a speculative margin for.</typeparam>
+            <param name="shape">Shape to compute a speculative margin for.</param>
+            <returns>Speculative margin for the given shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.GetDefaultActivity``1(``0@)">
+            <summary>
+            Computes a decent default activity description for a shape.
+            </summary>
+            <typeparam name="TShape">Type of the shape to create an activity description for.</typeparam>
+            <param name="shape">Shape to create an activity description for.</param>
+            <returns>Default activity description for the given shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateDynamic(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.BodyInertia,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a dynamic body description.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="inertia">Local inertia of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateDynamic(BepuPhysics.RigidPose,BepuPhysics.BodyInertia,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a dynamic body description with zero initial velocity.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="inertia">Local inertia of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexDynamic``1(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a dynamic body description with collidable, inertia, and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="mass">Mass of the body. The inertia tensor will be calculated based on this mass and the shape.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexDynamic``1(BepuPhysics.RigidPose,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a dynamic body description with zero initial velocity and collidable, inertia, and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="mass">Mass of the body. The inertia tensor will be calculated based on this mass and the shape.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateKinematic(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a kinematic body description.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateKinematic(BepuPhysics.RigidPose,BepuPhysics.Collidables.CollidableDescription,BepuPhysics.BodyActivityDescription)">
+            <summary>
+            Creates a kinematic body description with zero initial velocity.
+            </summary>
+            <param name="pose">Pose of the body.</param>
+            <param name="collidable">Collidable to associate with the body.</param>
+            <param name="activity">Activity settings for the body.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexKinematic``1(BepuPhysics.RigidPose,BepuPhysics.BodyVelocity,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Creates a kinematic body description with collidable and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="velocity">Initial velocity of the body.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyDescription.CreateConvexKinematic``1(BepuPhysics.RigidPose,BepuPhysics.Collidables.Shapes,``0)">
+            <summary>
+            Creates a kinematic body description with zero initial velocity and collidable and activity descriptions generated from a convex shape. Adds the shape to the given shape set.
+            </summary>
+            <typeparam name="TConvexShape">Type of the shape to create a body for.</typeparam>
+            <param name="pose">Pose of the body.</param>
+            <param name="shapes">Shape collection to add the shape to.</param>
+            <param name="shape">Shape to add to the shape set and to create the body from.</param>
+            <returns>Constructed description for the body.</returns>
+        </member>
+        <member name="T:BepuPhysics.MotionState">
+            <summary>
+            Describes the pose and velocity of a body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.MotionState.Pose">
+            <summary>
+            Pose of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.MotionState.Velocity">
+            <summary>
+            Linear and angular velocity of the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.MotionState.ToString">
+            <summary>
+            Returns a string representing the MotionState.
+            </summary>
+            <returns>String representing the MotionState.</returns>
+        </member>
+        <member name="T:BepuPhysics.RigidPose">
+            <summary>
+            Represents a rigid transformation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.RigidPose.Orientation">
+            <summary>
+            Orientation of the pose.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.RigidPose.Position">
+            <summary>
+            Position of the pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.RigidPose.Identity">
+            <summary>
+            Returns a pose with a position at (0,0,0) and identity orientation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Creates a rigid pose with the given position and orientation.
+            </summary>
+            <param name="position">Position of the pose.</param>
+            <param name="orientation">Orientation of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a rigid pose with the given position and identity orientation.
+            </summary>
+            <param name="position">Position of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(BepuUtilities.Numerics.Vector3)~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose by treating a <see cref="T:BepuUtilities.Numerics.Vector3"/> as a position. Orientation is set to identity.
+            </summary>
+            <param name="position">Position to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(BepuUtilities.Numerics.Quaternion)~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose by treating a <see cref="T:BepuUtilities.Numerics.Quaternion"/> as an orientation in the pose. Position is set to zero.
+            </summary>
+            <param name="orientation">Orientation to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.op_Implicit(System.ValueTuple{BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion})~BepuPhysics.RigidPose">
+            <summary>
+            Creates a pose from a tuple of a position and orientation.
+            </summary>
+            <param name="poseComponents">Position and orientation to use in the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.Transform(BepuUtilities.Numerics.Vector3,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by the rigid pose: v * pose.Orientation + pose.Position.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="pose">Pose to transform the vector with.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.TransformByInverse(BepuUtilities.Numerics.Vector3,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by the inverse of a rigid pose: (v - pose.Position) * pose.Orientation^-1.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="pose">Pose to invert and transform the vector with.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.Invert(BepuPhysics.RigidPose@,BepuPhysics.RigidPose@)">
+            <summary>
+            Inverts the rigid transformation of the pose.
+            </summary>
+            <param name="pose">Pose to invert.</param>
+            <param name="inverse">Inverse of the pose.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.MultiplyWithoutOverlap(BepuPhysics.RigidPose@,BepuPhysics.RigidPose@,BepuPhysics.RigidPose@)">
+            <summary>
+            Concatenates one rigid transform with another. The resulting transform is equivalent to performing transform a followed by transform b.
+            </summary>
+            <param name="a">First transform to concatenate.</param>
+            <param name="b">Second transform to concatenate.</param>
+            <param name="result">Result of the concatenation.</param>
+        </member>
+        <member name="M:BepuPhysics.RigidPose.ToString">
+            <summary>
+            Returns a string representing the RigidPose as "Position, Orientation".
+            </summary>
+            <returns>String representing the RigidPose.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyVelocity">
+            <summary>
+            Linear and angular velocity for a body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyVelocity.Linear">
+            <summary>
+            Linear velocity associated with the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyVelocity.Angular">
+            <summary>
+            Angular velocity associated with the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a new set of body velocities. Angular velocity is set to zero.
+            </summary>
+            <param name="linear">Linear velocity to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a new set of body velocities.
+            </summary>
+            <param name="linear">Linear velocity to use for the body.</param>
+            <param name="angular">Angular velocity to use for the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.op_Implicit(BepuUtilities.Numerics.Vector3)~BepuPhysics.BodyVelocity">
+            <summary>
+            Creates a body velocity by treating a <see cref="T:BepuUtilities.Numerics.Vector3"/> as a linear velocity. Angular velocity is set to zero.
+            </summary>
+            <param name="linearVelocity">Linear velocity to use in the body velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.op_Implicit(System.ValueTuple{BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3})~BepuPhysics.BodyVelocity">
+            <summary>
+            Creates a body velocity from a tuple of linear and angular velocities..
+            </summary>
+            <param name="velocities">Velocities to use in the body velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyVelocity.ToString">
+            <summary>
+            Returns a string representing the BodyVelocity as "Linear, Angular".
+            </summary>
+            <returns>String representing the BodyVelocity.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyInertia">
+            <summary>
+            Stores the inertia for a body.
+            </summary>
+            <remarks>This representation stores the inverse mass and inverse inertia tensor. Most of the high frequency use cases in the engine naturally use the inverse.</remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyInertia.InverseInertiaTensor">
+            <summary>
+            Inverse of the body's inertia tensor.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertia.InverseMass">
+            <summary>
+            Inverse of the body's mass.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyInertia.ToString">
+            <summary>
+            Returns a string representing the BodyInertia as "InverseMass, InverseInertiaTensor".
+            </summary>
+            <returns>String representing the BodyInertia.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyInertias">
+            <summary>
+            Stores the local and world views of a body's inertia, packed together for efficient access.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertias.Local">
+            <summary>
+            Local inertia of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyInertias.World">
+            <summary>
+            Transformed world inertia of the body. Note that this is only valid between the velocity integration that updates it and the pose integration that follows.
+            Outside of that execution window, this should be considered undefined.
+            </summary>
+            <remarks>
+            We cache this here because velocity integration wants both the local and world inertias, and any integration happening within the solver will do so without the benefit of sequential loads.
+            In that context, being able to load a single cache line to grab both local and world inertia helps quite a lot.</remarks>
+        </member>
+        <member name="M:BepuPhysics.BodyInertias.ToString">
+            <summary>
+            Returns a string representing the BodyInertias.
+            </summary>
+            <returns>String representing the BodyInertias.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyDynamics">
+            <summary>
+            Stores all body information needed by the solver together.
+            </summary>
+            <remarks>
+            With 2.4's revamp of the solver, every solving stage loads pose, velocity, and inertia for every body in each constraint.
+            L2 prefetchers often fetch memory in even-odd pairs of cache lines (see https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf#page=162).
+            Since L2 is likely pulling in adjacent cache lines when loading either motion state or inertias, they might as well live together in one block.
+            Note that this goes along with a change to the buffer pool's default alignment to 128 bytes.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyDynamics.Motion">
+            <summary>
+            Pose and velocity information for the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyDynamics.Inertia">
+            <summary>
+            Inertia information for the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyDynamics.ToString">
+            <summary>
+            Returns a string representing the BodyDynamics.
+            </summary>
+            <returns>String representing the BodyDynamics.</returns>
+        </member>
+        <member name="T:BepuPhysics.BodyActivity">
+            <summary>
+            Describes how a body sleeps, and its current state with respect to sleeping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.SleepThreshold">
+            <summary>
+            Threshold of squared velocity under which the body is allowed to go to sleep. This is compared against dot(linearVelocity, linearVelocity) + dot(angularVelocity, angularVelocity).
+            Setting this to a negative value guarantees the body cannot go to sleep without user action.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.MinimumTimestepsUnderThreshold">
+            <summary>
+            The number of time steps that the body must be under the sleep threshold before the body becomes a sleeping candidate.
+            Note that the body is not guaranteed to go to sleep immediately after meeting this minimum.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.TimestepsUnderThresholdCount">
+            <summary>
+            If the body is awake, this is the number of time steps that the body has had a velocity below the sleep threshold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyActivity.SleepCandidate">
+            <summary>
+            True if this body is a candidate for being slept. If all the bodies that it is connected to by constraints are also candidates, this body may go to sleep.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyReference">
+            <summary>
+            Convenience structure for directly referring to a body's properties.
+            </summary>
+            <remarks>Note that this type makes no attempt to protect against unsafe modification of body properties, nor does modifying its properties try to wake up bodies if they are asleep.</remarks>
+        </member>
+        <member name="F:BepuPhysics.BodyReference.Handle">
+            <summary>
+            Handle of the body that this reference refers to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyReference.Bodies">
+            <summary>
+            The bodies collection containing the body.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.#ctor(BepuPhysics.BodyHandle,BepuPhysics.Bodies)">
+            <summary>
+            Constructs a new body reference.
+            </summary>
+            <param name="handle">Handle of the body to refer to.</param>
+            <param name="bodies">Collection containing the body.</param>
+            <remarks>This is equivalent to <see cref="M:BepuPhysics.Bodies.GetBodyReference(BepuPhysics.BodyHandle)"/> and <see cref="P:BepuPhysics.Bodies.Item(BepuPhysics.BodyHandle)"/>.</remarks>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Exists">
+            <summary>
+            Gets whether the body reference exists within the body set. True if the handle maps to a valid memory location that agrees that the handle points to it, false otherwise.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.MemoryLocation">
+            <summary>
+            Gets a reference to the body's memory location stored in the handle to location mapping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Awake">
+            <summary>
+            Gets or sets whether the body is in the active set. Setting this to true will attempt to wake the body; setting it to false will force the body and any constraint-connected bodies asleep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Velocity">
+            <summary>
+            Gets a reference to the body's velocity.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Pose">
+            <summary>
+            Gets a reference to the body's pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.MotionState">
+            <summary>
+            Gets a reference to the body's motion state, including both pose and velocity.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Dynamics">
+            <summary>
+            Gets a reference to the body's solver-relevant state, including pose, velocity, and inertia.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Collidable">
+            <summary>
+            Gets a reference to the body's collidable.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.LocalInertia">
+            <summary>
+            Gets a reference to the body's local inertia.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Activity">
+            <summary>
+            Gets a reference to the body's activity state.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Constraints">
+            <summary>
+            Gets a reference to the list of the body's connected constraints.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.CollidableReference">
+            <summary>
+            <para>Gets a CollidableReference for this body. CollidableReferences uniquely identify a collidable object in a simulation by including both the dynamic/kinematic/static state of the object and its handle.</para>
+            <para>Despite an unfortunate naming collision, CollidableReferences are distinct from a direct reference to a body's collidable data, which you can get from the Collidable property.</para>
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.Kinematic">
+            <summary>
+            Gets whether the body is kinematic, meaning its inverse inertia and mass are all zero.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.HasLockedInertia">
+            <summary>
+            Gets whether the body has locked inertia, meaning its inverse inertia tensor is zero.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.BecomeKinematic">
+            <summary>
+            If the body is dynamic, turns the body kinematic by setting all inverse inertia and mass values to zero and activates it.
+            Any constraints connected to the body that now only contain kinematic references are removed.
+            If the body is kinematic, does nothing.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.SetLocalInertia(BepuPhysics.BodyInertia@)">
+            <summary>
+            Sets the body's local inertia to the provided inertia. Wakes up the body and correctly handles any transition between dynamic and kinematic states.
+            If the body moves from dynamic to kinematic, any constraints connected to the body that now only contain kinematic references are removed.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ComputeInverseInertia(BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the world space inverse inertia tensor for the body based on the LocalInertia and Pose.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetDescription(BepuPhysics.BodyDescription@)">
+            <summary>
+            Gets a description of the body.
+            </summary>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyDescription(BepuPhysics.BodyDescription@)">
+            <summary>
+            Sets a body's properties according to a description. Properly handles any transitions between dynamic and kinematic and between shapeless and shapeful.
+            If the body is becoming kinematic, any constraints which only contain kinematic bodies will be removed. Wakes up the body and updates its bounds in the broad phase.
+            </summary>
+            <param name="description">Description of the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.SetShape(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a body. Properly handles the transition between shapeless and shapeful. If the body is inactive, it will be forced awake. Updates the bounds of the body in the broad phase.
+            </summary>
+            <param name="newShape">Index of the new shape to use for the body.</param>
+        </member>
+        <member name="P:BepuPhysics.BodyReference.BoundingBox">
+            <summary>
+            Gets a copy of the body's bounding box. If the body has no shape, the bounding box has a min at Number.MaxValue and a max at Number.MinValue.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetBoundsReferencesFromBroadPhase(BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets direct pointers to the body's bounding box minimum and maximum in the broad phase. Outputs null if the body has no shape.
+            </summary>
+            <param name="min">Pointer to the bounding box minimum in the broad phase. Null if the body has no shape.</param>
+            <param name="max">Pointer to the bounding box maximum in the broad phase. Null if the body has no shape.</param>
+            <returns>True if the body has a shape and bounds, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.UpdateBounds">
+            <summary>
+            Updates the body's bounds in the broad phase for its current state. Does not include velocity expansion. Does nothing if the body has no shape.
+            </summary>
+            <remarks>Can be useful if you made modifications to the body's state that you want reflected in the broad phase before the next timestep.
+            For example, if you want to perform ray casts against the broad phase after moving objects around directly, their bounds must be updated or else the broad phase bounds will be out of date and the ray will likely miss.</remarks>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.BodyInertia@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@)">
+            <summary>
+            Applies an impulse to a body by index. Does not wake the body up.
+            </summary>
+            <param name="pose">Pose of the body to apply impulse to.</param>
+            <param name="velocity">Velocity of the body to apply impulse to.</param>
+            <param name="localInertia">Local inertia of the body to apply impulse to.</param>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset from the center of the body to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuPhysics.BodySet@,System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a body by index. Does not wake the body up.
+            </summary>
+            <param name="set">Body set containing the body to apply an impulse to.</param>
+            <param name="index">Index of the body in the body set.</param>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset from the center of the body to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyAngularImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Applies an angular impulse to an angular velocity. Does not wake the body up.
+            </summary>
+            <param name="angularImpulse">Impulse to apply to the velocity.</param>
+            <param name="inverseInertiaTensor">Inverse inertia tensor to transform the impulse with.</param>
+            <param name="angularVelocity">Angular velocity to be modified.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyLinearImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Applies an impulse to a linear velocity. Does not wake the body up.
+            </summary>
+            <param name="impulse">Impulse to apply to the velocity.</param>
+            <param name="inverseMass">Inverse mass to transform the impulse with.</param>
+            <param name="linearVelocity">Linear velocity to be modified.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyImpulse(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a body at the given world space position. Does not modify activity states.
+            </summary>
+            <param name="impulse">Impulse to apply to the body.</param>
+            <param name="impulseOffset">World space offset to apply the impulse at.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyLinearImpulse(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an impulse to a linear velocity. Does not wake the body up.
+            </summary>
+            <param name="impulse">Impulse to apply to the velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.GetVelocityForOffset(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the velocity of an offset point attached to the body.
+            </summary>
+            <param name="offset">Offset from the body's center to </param>
+            <param name="velocity">Effective velocity of the point if it were attached to the body.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.ApplyAngularImpulse(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies an angular impulse to an angular velocity. Does not wake the body up.
+            </summary>
+            <param name="angularImpulse">Impulse to apply to the velocity.</param>
+        </member>
+        <member name="M:BepuPhysics.BodyReference.op_Implicit(BepuPhysics.BodyReference)~BepuPhysics.BodyHandle">
+            <summary>
+            Implicitly converts a <see cref="T:BepuPhysics.BodyReference"/> to the <see cref="T:BepuPhysics.BodyHandle"/> that the body reference was created from.
+            </summary>
+            <param name="reference">Body reference to extract the handle from.</param>
+        </member>
+        <member name="T:BepuPhysics.BodySet">
+            <summary>
+            Stores a group of bodies- either the set of active bodies, or the bodies involved in an inactive simulation island.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.IndexToHandle">
+            <summary>
+            Remaps a body index to its handle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.DynamicsState">
+            <summary>
+            Stores all data involved in solving constraints for a body, including pose, velocity, and inertia.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Collidables">
+            <summary>
+            The collidables owned by each body in the set. Speculative margins, continuity settings, and shape indices can be changed directly.
+            Shape indices cannot transition between pointing at a shape and pointing at nothing or vice versa without notifying the broad phase of the collidable addition or removal.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Activity">
+            <summary>
+            Activity states of bodies in the set.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodySet.Constraints">
+            <summary>
+            List of constraints associated with each body in the set.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BodySet.Allocated">
+            <summary>
+            Gets whether this instance is backed by allocated memory.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BodySet.RemoveConstraintReference(System.Int32,BepuPhysics.ConstraintHandle,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a constraint from a body's constraint list.
+            </summary>
+            <param name="bodyIndex">Index of the body to remove the constraint reference from.</param>
+            <param name="constraintHandle">Handle of the constraint to remove.</param>
+            <param name="minimumConstraintCapacityPerBody">Minimum constraint capacity to maintain the body's constraint list. The list will automatically downsize as constraints are removed, but its capacity will not go below this threshold.</param>
+            <param name="pool">Pool to use to resize the constraint list.</param>
+            <returns>True if the number of constraints remaining attached to the body is 0, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.BodySet.DisposeBuffers(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the buffers, but nothing inside of the buffers. Per-body constraint lists stored in the set will not be returned.
+            </summary>
+            <param name="pool">Pool to return the set's top level buffers to.</param>
+        </member>
+        <member name="M:BepuPhysics.BodySet.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the body set's buffers and any resources within them.
+            </summary>
+            <param name="pool">Pool to return resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.ExpandLocalBoundingBoxes(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Expands the bounding box surrounding a shape A in the local space of some other collidable B.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.GetLocalBoundingBoxForSweep(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.Shapes,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a child shape A in the local space of some other collidable B with a sweep direction representing the net linear motion.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundingBoxHelpers.GetLocalBoundingBoxForSweep``1(``0@,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of shape A in the local space of some other collidable B with a sweep direction representing the net linear motion.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollidableProperty`1">
+            <summary>
+            Convenience collection that stores extra properties about bodies and statics, indexed by the body or static handle.
+            </summary>
+            <typeparam name="T">Type of the data to store.</typeparam>
+            <remarks>This is built for use cases relying on random access like the narrow phase. For maximum performance with sequential access, an index-aligned structure would be better.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.#ctor(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Constructs a new collection to store handle-aligned body properties. Assumes the Initialize function will be called later to provide the Bodies collection.
+            </summary>
+            <param name="pool">Pool from which to pull internal resources. If null, uses the later Initialize-provided Bodies pool.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.#ctor(BepuPhysics.Simulation,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Constructs a new collection to store handle-aligned body and static properties.
+            </summary>
+            <param name="simulation">Simulation to track.</param>
+            <param name="pool">Pool from which to pull internal resources. If null, uses the Simulation pool.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Initializes the property collection if the Bodies/Statics-less constructor was used.
+            </summary>
+            <param name="simulation">Simulation whose bodies and statics will be tracked.</param>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.BodyHandle)">
+            <summary>
+            Gets a reference to the properties associated with a body's handle.
+            </summary>
+            <param name="bodyHandle">Body handle to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a body handle.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to the properties associated with a static's handle.
+            </summary>
+            <param name="staticHandle">Static handle to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a static handle.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollidableProperty`1.Item(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Gets a reference to the properties associated with a collidable.
+            </summary>
+            <param name="staticHandle">Collidable to retrieve the properties for.</param>
+            <returns>Reference to properties associated with a collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.BodyHandle)">
+            <summary>
+            Ensures there is space for a given body handle and returns a reference to the used memory.
+            </summary>
+            <param name="bodyHandle">Body handle to allocate for.</param>
+            <returns>Reference to the data for the given body.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.StaticHandle)">
+            <summary>
+            Ensures there is space for a given static handle and returns a reference to the used memory.
+            </summary>
+            <param name="handle">Static handle to allocate for.</param>
+            <returns>Reference to the data for the given static.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Allocate(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Ensures there is space for a given collidable reference and returns a reference to the used memory.
+            </summary>
+            <param name="handle">Collidable reference to allocate for.</param>
+            <returns>Reference to the data for the given collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.EnsureBodyCapacity(System.Int32)">
+            <summary>
+            Ensures that the internal structures have at least the given capacity for bodies.
+            </summary>
+            <param name="capacity">Capacity to ensure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.EnsureStaticCapacity(System.Int32)">
+            <summary>
+            Ensures that the internal structures have at least the given capacity for statics.
+            </summary>
+            <param name="capacity">Capacity to ensure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.CompactBodies">
+            <summary>
+            Compacts the memory used by the collection for bodies to a safe minimum based on the Bodies collection.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.CompactStatics">
+            <summary>
+            Compacts the memory used by the collection for statics to a safe minimum based on the Statics collection.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollidableProperty`1.Dispose">
+            <summary>
+            Returns all held resources.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.BigCompound">
+            <summary>
+            Compound shape containing a bunch of shapes accessible through a tree acceleration structure. Useful for compounds with lots of children.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Tree">
+            <summary>
+            Acceleration structure for the compound children.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Children">
+            <summary>
+            Buffer of children within this compound.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.CreateWithoutTreeBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a BigCompound shape instance, but leaves the Tree in an unbuilt state. The Tree must be built before the compound can be used.
+            </summary>
+            <param name="children">Children to use in the compound.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created compound shape.</returns>
+            <remarks>In some cases, the default binned build may not be the ideal builder. This function does everything needed to set up a tree without the expense of figuring out the details of the acceleration structure.
+            The user can then run whatever build/refinement process is appropriate.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.FillSubtreesForChildren(System.Span{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,System.Span{BepuPhysics.Trees.NodeChild})">
+            <summary>
+            Fills a buffer of subtrees according to a buffer of triangles.
+            </summary>
+            <remarks>The term "subtree" is used because the binned builder does not care whether the input came from leaf nodes or a refinement process's internal nodes.</remarks>
+            <param name="children">Children to build subtrees from.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="subtrees">Subtrees created for the triangles.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.CreateWithSweepBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a compound shape instance and builds an acceleration structure using a sweep builder.
+            </summary>
+            <param name="children">Children to use in the compound.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created compound shape.</returns>
+            <remarks>The sweep builder is significantly slower than the binned builder, but can sometimes create higher quality trees.
+            <para>Note that the binned builder can be tuned to create higher quality trees. That is usually a better choice than trying to use the sweep builder; this is here primarily for legacy reasons.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Creates a compound shape with an acceleration structure.
+            </summary>
+            <param name="children">Set of children in the compound.</param>
+            <param name="shapes">Shapes set in which child shapes are allocated.</param>
+            <param name="pool">Pool to use to allocate acceleration structures.</param>
+            <param name="dispatcher">Thread dispatcher to use to multithread the acceleration structure build, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.Add(BepuPhysics.Collidables.CompoundChild,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Adds a child to the compound.
+            </summary>
+            <param name="child">Child to add to the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+            <param name="shapes">Shapes collection containing the compound's children.</param>
+            <remarks><para>This function keeps the <see cref="F:BepuPhysics.Collidables.BigCompound.Tree"/> in a valid state, but significant changes over time may degrade the tree's quality and result in reduced collision/query performance.
+            If this happens, consider calling <see cref="M:BepuPhysics.Trees.Tree.RefitAndRefine(BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.Numerics.Number)"/> with a refinementIndex that changes with each call (to prioritize different parts of the tree).
+            Incrementing a counter with each call would work fine. The ideal frequency of refinement depends on the kind of modifications being made, but it's likely to be rare.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.RemoveAt(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a child from the compound by index. The last child is pulled to fill the gap left by the removed child.
+            </summary>
+            <param name="childIndex">Index of the child to remove from the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+            <remarks>This function keeps the <see cref="F:BepuPhysics.Collidables.BigCompound.Tree"/> in a valid state, but significant changes over time may degrade the tree's quality and result in reduced collision/query performance.
+            If this happens, consider calling <see cref="M:BepuPhysics.Trees.Tree.RefitAndRefine(BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.Numerics.Number)"/> with a refinementIndex that changes with each call (to prioritize different parts of the tree).
+            Incrementing a counter with each call would work fine. The ideal frequency of refinement depends on the kind of modifications being made, but it's likely to be rare.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.BigCompound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="F:BepuPhysics.Collidables.BigCompound.Id">
+            <summary>
+            Type id of compound shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Box">
+            <summary>
+            Collision shape representing a solid cuboid.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfWidth">
+            <summary>
+            Half of the box's width along its local X axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfHeight">
+            <summary>
+            Half of the box's height along its local Y axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.HalfLength">
+            <summary>
+            Half of the box's length along its local Z axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Width">
+            <summary>
+            Gets or sets the width of the box along its local X axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Height">
+            <summary>
+            Gets or sets the height of the box along its local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Box.Length">
+            <summary>
+            Gets or sets the length of the box along its local Z axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Box.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a Box shape.
+            </summary>
+            <param name="width">Width of the box along the local X axis.</param>
+            <param name="height">Height of the box along the local Y axis.</param>
+            <param name="length">Length of the box along the local Z axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Box.Id">
+            <summary>
+            Type id of box shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Capsule">
+            <summary>
+            Collision shape representing a sphere-expanded line segment.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.Radius">
+            <summary>
+            Spherical expansion applied to the internal line segment.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.HalfLength">
+            <summary>
+            Half of the length of the internal line segment. Oriented along the local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Capsule.Length">
+            <summary>
+            Gets or sets the length of the capsule's internal line segment along the local Y axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Capsule.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a capsule shape.
+            </summary>
+            <param name="radius">Radius of the capsule.</param>
+            <param name="length">Length of the capsule's internal line segment along the local Y axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Capsule.Id">
+            <summary>
+            Type id of capsule shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ContinuousDetectionMode">
+            <summary>
+            Defines how a collidable will handle collision detection in the presence of velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will not be expanded by velocity beyond the speculative margin.</para>
+            <para>This is the cheapest mode. If a Discrete mode collidable is moving quickly and the maximum speculative margin is limited,
+            the fact that its bounding box is not expanded may cause it to miss a collision even with a non-Discrete collidable.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will be expanded by velocity without being limited by the speculative margin.</para>
+            <para>This is useful when a collidable may move quickly and does not itself require continuous detection, but there exist other collidables with continuous modes 
+            that should avoid missing collisions.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous">
+            <summary>
+            <para>Collision detection will start with a sweep test to identify a likely time of impact. Speculative contacts will be generated for the predicted collision.</para>
+            <para>This mode can capture angular motion with very few ghost collisions. It can, however, miss secondary collisions that would have occurred due to the primary impact's velocity change.</para>
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ContinuousDetection">
+            <summary>
+            Defines how a collidable handles collisions with significant velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.Mode">
+            <summary>
+            The continuous collision detection mode.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.MinimumSweepTimestep">
+            <summary>
+            If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, this defines the minimum progress that the sweep test will make when searching for the first time of impact.
+            Collisions lasting less than <see cref="F:BepuPhysics.Collidables.ContinuousDetection.MinimumSweepTimestep"/> may be missed by the sweep test. Using larger values can significantly increase the performance of sweep tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ContinuousDetection.SweepConvergenceThreshold">
+            <summary>
+            If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, sweep tests will terminate if the time of impact region has been refined to be smaller than <see cref="F:BepuPhysics.Collidables.ContinuousDetection.SweepConvergenceThreshold"/>.
+            Values closer to zero will converge more closely to the true time of impact, but for speculative contact generation larger values usually work fine.
+            Larger values allow the sweep to terminate much earlier and can significantly improve sweep performance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.AllowExpansionBeyondSpeculativeMargin">
+            <summary>
+            Gets whether the continuous collision detection configuration will permit bounding box expansion beyond the calculated speculative margin.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.Discrete">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box will not be expanded by velocity beyond the speculative margin.</para>
+            <para>This can be marginally cheaper than Passive modes if using a limited maximum speculative margin. If a Discrete mode collidable is moving quickly and the maximum speculative margin is limited,
+            the fact that its bounding box is not expanded may cause it to miss a collision even with a non-Discrete collidable.</para>
+            <para>Note that Discrete and Passive only differ if maximum speculative margin is restricted.</para>
+            </summary>
+            <returns>Detection settings for the given discrete configuration.</returns>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ContinuousDetection.Passive">
+            <summary>
+            <para>No sweep tests are performed. Default speculative contact generation will occur within the speculative margin.</para>
+            <para>The collidable's bounding box and speculative margin will be expanded by velocity.</para>
+            <para>This is useful when a collidable may move quickly and does not itself require continuous detection, but there exist other collidables with continuous modes that should avoid missing collisions.</para>
+            </summary>
+            <returns>Detection settings for the passive configuration.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ContinuousDetection.Continuous(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            <para>Collision detection will start with a sweep test to identify a likely time of impact. Speculative contacts will be generated for the predicted collision.</para>
+            <para>This mode can capture angular motion with very few ghost collisions. It can, however, miss secondary collisions that would have occurred due to the primary impact's velocity change.</para>
+            </summary>
+            <param name="minimumSweepTimestep">Minimum progress that the sweep test will make when searching for the first time of impact.
+            Collisions lasting less than MinimumProgress may be missed by the sweep test. Using larger values can significantly increase the performance of sweep tests.</param>
+            <param name="sweepConvergenceThreshold">Threshold against which the time of impact region is compared for sweep termination. 
+            If the region has been refined to be smaller than SweepConvergenceThreshold, the sweep will terminate.
+            Values closer to zero will converge more closely to the true time of impact, but for speculative contact generation larger values usually work fine.
+            Larger values allow the sweep to terminate much earlier and can significantly improve sweep performance.</param>
+            <returns>Detection settings for the given continuous configuration.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Collidable">
+            <summary>
+            Description of a collidable used by a body living in the broad phase and able to generate collision pairs.
+            Collidables with a ShapeIndex that points to nothing (a default constructed <see cref="T:BepuPhysics.Collidables.TypedIndex"/>) are not capable of colliding with anything.
+            This can be used for a body which needs no collidable representation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.Shape">
+            <summary>
+            Index of the shape used by the body. While this can be changed, any transition from shapeless->shapeful or shapeful->shapeless must be reported to the broad phase. 
+            If you need to perform such a transition, consider using <see cref="M:BepuPhysics.Bodies.SetShape(BepuPhysics.BodyHandle,BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.Bodies.ApplyDescription(BepuPhysics.BodyHandle,BepuPhysics.BodyDescription@)"/>; those functions update the relevant state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.Continuity">
+            <summary>
+            Continuous collision detection settings for this collidable. Includes the collision detection mode to use and tuning variables associated with those modes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.MinimumSpeculativeMargin">
+            <summary>
+            Lower bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks>0 tends to be a good default value. Higher values can be chosen if velocity magnitude is a poor proxy for speculative margins, but these cases are rare.
+            In those cases, try to use the smallest value that still satisfies requirements to avoid creating unnecessary contact constraints.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin">
+            <summary>
+            Upper bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks><see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> tends to be a good default value for discrete or passive mode collidables. 
+            The speculative margin will increase in size proportional to velocity magnitude, so having an unlimited maximum won't cost extra if the body isn't moving fast.
+            <para>Smaller values can be useful for improving performance in chaotic situations where missing a collision is acceptable. When using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, a speculative margin larger than the velocity magnitude will result in the sweep test being skipped, so lowering the maximum margin can help avoid ghost collisions.</para>
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.SpeculativeMargin">
+            <summary>
+            Automatically computed size of the margin around the surface of the shape in which contacts can be generated. These contacts will have negative depth and only contribute if the frame's velocities
+            would push the shapes of a pair into overlap. 
+            <para>This is automatically set by bounding box prediction each frame, and is bound by the collidable's <see cref="F:BepuPhysics.Collidables.Collidable.MinimumSpeculativeMargin"/> and <see cref="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin"/> values.
+            The effective speculative margin for a collision pair can also be modified from <see cref="T:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks"/> callbacks.</para>
+            <para>This should be positive to avoid jittering.</para>
+            <para>It can also be used as a form of continuous collision detection, but excessively high values combined with fast motion may result in visible 'ghost collision' artifacts. 
+            For continuous collision detection with less chance of ghost collisions, use <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>.</para>
+            <para>If using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, consider setting <see cref="F:BepuPhysics.Collidables.Collidable.MaximumSpeculativeMargin"/> to a smaller value to help filter ghost collisions.</para>
+            <para>For more information, see the ContinuousCollisionDetection.md documentation.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Collidable.BroadPhaseIndex">
+            <summary>
+            Index of the collidable in the broad phase. Used to look up the target location for bounding box scatters. Under normal circumstances, this should not be set externally.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableDescription">
+            <summary>
+            Describes a collidable and how it should handle continuous collision detection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.Shape">
+            <summary>
+            Shape of the collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.Continuity">
+            <summary>
+            Continuous collision detection settings used by the collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin">
+            <summary>
+            Lower bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks>0 tends to be a good default value. Higher values can be chosen if velocity magnitude is a poor proxy for speculative margins, but these cases are rare.
+            In those cases, try to use the smallest value that still satisfies requirements to avoid creating unnecessary contact constraints.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin">
+            <summary>
+            Upper bound on the value of the speculative margin used by the collidable.
+            </summary>
+            <remarks><see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> tends to be a good default value for discrete or passive mode collidables. 
+            The speculative margin will increase in size proportional to velocity magnitude, so having an unlimited maximum won't cost extra if the body isn't moving fast.
+            <para>Smaller values can be useful for improving performance in chaotic situations where missing a collision is acceptable. When using <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/>, a speculative margin larger than the velocity magnitude will result in the sweep test being skipped, so lowering the maximum margin can help avoid ghost collisions.</para>
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="minimumSpeculativeMargin">Lower bound on the value of the speculative margin used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/>.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="minimumSpeculativeMargin">Lower bound on the value of the speculative margin used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description. Uses 0 for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> .
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Upper bound on the value of the speculative margin used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Constructs a new collidable description. Uses 0 for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> and <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> for the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/> .
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="continuity">Continuous collision detection settings for the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/>. Will use a <see cref="F:BepuPhysics.Collidables.CollidableDescription.MinimumSpeculativeMargin"/> of 0 and a <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/> of <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/>.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <remarks><see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/> and <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> are equivalent in behavior when the <see cref="F:BepuPhysics.Collidables.CollidableDescription.MaximumSpeculativeMargin"/>  is <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/> since they both result in the same (unbounded) expansion of body bounding boxes in response to velocity.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.#ctor(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/>. Will use a minimum speculative margin of 0 and the given maximumSpeculativeMargin.
+            </summary>
+            <param name="shape">Shape used by the collidable.</param>
+            <param name="maximumSpeculativeMargin">Maximum speculative margin to be used with the discrete continuity configuration.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableDescription.op_Implicit(BepuPhysics.Collidables.TypedIndex)~BepuPhysics.Collidables.CollidableDescription">
+            <summary>
+            Constructs a new collidable description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/>. Will use a minimum speculative margin of 0 and a maximum of <see cref="F:BepuUtilities.Numerics.Number.MaxValue"/>.
+            </summary>
+            <param name="shapeIndex">Shape index to use for the collidable.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableMobility">
+            <summary>
+            Represents how a collidable can interact and move.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Dynamic">
+            <summary>
+            Marks a collidable as owned by a dynamic body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Kinematic">
+            <summary>
+            Marks a collidable as owned by a kinematic body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableMobility.Static">
+            <summary>
+            Marks the collidable as an independent immobile collidable.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CollidableReference">
+            <summary>
+            Uses a bitpacked representation to refer to a body or static collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CollidableReference.Packed">
+            <summary>
+            Bitpacked representation of the collidable reference.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.Mobility">
+            <summary>
+            Gets the mobility state of the owner of this collidable.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.BodyHandle">
+            <summary>
+            Gets the body handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.StaticHandle">
+            <summary>
+            Gets the static handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.CollidableReference.RawHandleValue">
+            <summary>
+            Gets the integer value of the handle of the owner of the collidable referred to by this instance.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.Collidables.CollidableMobility,System.Int32)">
+            <summary>
+            Creates a collidable reference.
+            </summary>
+            <param name="mobility">Mobility type of the owner of the collidable.</param>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.Collidables.CollidableMobility,BepuPhysics.BodyHandle)">
+            <summary>
+            Creates a collidable reference for a body.
+            </summary>
+            <param name="mobility">Mobility type of the owner of the collidable.</param>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CollidableReference.#ctor(BepuPhysics.StaticHandle)">
+            <summary>
+            Creates a collidable reference for a static.
+            </summary>
+            <param name="handle">Handle of the owner of the collidable.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CompoundChild">
+            <summary>
+            Shape and pose of a child within a compound shape.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.LocalOrientation">
+            <summary>
+            Local orientation of the child in the compound.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.LocalPosition">
+            <summary>
+            Local position of the child in the compound.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundChild.ShapeIndex">
+            <summary>
+            Index of the shape within whatever shape collection holds the compound's child shape data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundChild.AsPose(BepuPhysics.Collidables.CompoundChild@)">
+            <summary>
+            Reintreprets the 32 bytes of a compound child as a pose.
+            </summary>
+            <param name="child">Child to reinterpret.</param>
+            <returns>Reference to the child as a pose.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Compound">
+            <summary>
+            Minimalist compound shape containing a list of child shapes. Does not make use of any internal acceleration structure; should be used only with small groups of shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Compound.Children">
+            <summary>
+            Buffer of children within this compound.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild})">
+            <summary>
+            Creates a compound shape with no acceleration structure.
+            </summary>
+            <param name="children">Set of children in the compound.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ValidateChildIndex(BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Checks if a shape index.
+            </summary>
+            <param name="shapeIndex">Shape index to analyze.</param>
+            <param name="shapeBatches">Shape collection into which the index indexes.</param>
+            <returns>True if the index is valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ValidateChildIndices(System.Span{BepuPhysics.Collidables.CompoundChild},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Checks if a set of children shape indices are all valid.
+            </summary>
+            <param name="children">Children to examine.</param>
+            <param name="shapeBatches">Shape collection into which the children index.</param>
+            <returns>True if all child indices are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.Add(BepuPhysics.Collidables.CompoundChild,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Adds a child to the compound.
+            </summary>
+            <param name="child">Child to add to the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.RemoveAt(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a child from the compound by index. The last child is pulled to fill the gap left by the removed child.
+            </summary>
+            <param name="childIndex">Index of the child to remove from the compound.</param>
+            <param name="pool">Pool to use to resize the compound's children buffer if necessary.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Compound.ComputeInertia(System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Compound.Id">
+            <summary>
+            Type id of list based compound shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.CompoundBuilder">
+            <summary>
+            Reusable convenience type for incrementally building compound shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundBuilder.Child.Weight">
+            <summary>
+            Weight associated with this child. Acts as the child's mass when interpreted as a dynamic compound.
+            When interpreted as kinematic with recentering, it is used as a local pose weight to compute the center of rotation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.CompoundBuilder.Child.LocalInverseInertia">
+            <summary>
+            Inverse inertia tensor of the child in its local space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,System.Int32)">
+            <summary>
+            Creates a compound builder.
+            </summary>
+            <param name="pool">Buffer pool to allocate memory from when necessary.</param>
+            <param name="shapes">Shapes collection to access when constructing the compound children.</param>
+            <param name="initialBuilderCapacity">Number of children the compound builder can hold without resizing.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Add(BepuPhysics.Collidables.TypedIndex,BepuPhysics.RigidPose@,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator.
+            </summary>
+            <param name="shape">Index of the shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass. Otherwise, it is used for recentering.</param>
+            <param name="localInverseInertia">Inverse inertia tensor of the shape being added in its local space. This is assumed to already be scaled as desired by the weight.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.AddForKinematic(BepuPhysics.Collidables.TypedIndex,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, assuming it has infinite inertia.
+            </summary>
+            <param name="shape">Index of the shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape used for computing the center of rotation.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Add``1(``0@,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, creating a new shape in the shapes set. The mass used to compute the inertia tensor will be based on the given weight.
+            </summary>
+            <typeparam name="TShape">Type of the shape to add to the accumulator and the shapes set.</typeparam>
+            <param name="shape">Shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass and scales the inertia tensor. 
+            Otherwise, it is used for recentering.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.AddForKinematic``1(``0@,BepuPhysics.RigidPose@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Adds a new shape to the accumulator, creating a new shape in the shapes set. Inertia is assumed to be infinite.
+            </summary>
+            <typeparam name="TShape">Type of the shape to add to the accumulator and the shapes set.</typeparam>
+            <param name="shape">Shape to add.</param>
+            <param name="localPose">Pose of the shape in the compound's local space.</param>
+            <param name="weight">Weight of the shape. If the compound is interpreted as a dynamic, this will be used as the mass. Otherwise, it is used for recentering.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.GetOffsetInertiaContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Gets the contribution to an inertia tensor of a point mass at the given offset from the center of mass.
+            </summary>
+            <param name="offset">Offset from the center of mass.</param>
+            <param name="mass">Mass of the point.</param>
+            <param name="contribution">Contribution to the inertia tensor.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildDynamicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuPhysics.BodyInertia@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a dynamic compound.
+            Computes a center of mass and recenters child shapes relative to it. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="inertia">Combined inertia of the compound.</param>
+            <param name="center">Computed center of rotation based on the poses and weights of accumulated children.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildDynamicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuPhysics.BodyInertia@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a dynamic compound. Does not recenter the children. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="inertia">Combined inertia of the compound.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertiaForChild(BepuPhysics.RigidPose@,BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the uninverted inertia contribution of a child.
+            </summary>
+            <param name="pose">Pose of the child.</param>
+            <param name="inverseLocalInertia">Inverse inertia tensor of the child in its local space.</param>
+            <param name="mass">Mass of the child.</param>
+            <returns>Inertia contribution of the child to a compound given its relative pose.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertiaForChild(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the uninverted inertia contribution of a child.
+            </summary>
+            <param name="position">Position of the child.</param>
+            <param name="orientation">Orientation of the child.</param>
+            <param name="inverseLocalInertia">Inverse inertia tensor of the child in its local space.</param>
+            <param name="mass">Mass of the child.</param>
+            <returns>Inertia contribution of the child to a compound given its relative pose.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Does not recenter the children.
+            </summary>
+            <param name="children">Children and their associated poses.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the inverse inertia for a set of compound children based on their poses and the provided inverse inertias. Does not recenter the children.
+            </summary>
+            <param name="childPoses">Poses of the compound's children.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <param name="inverseMass">Inverse of the sum of all child masses.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="childPoses">Poses of the children in the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <param name="inverseMass">Inverse of the sum of all child masses.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeCenterOfMass(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes the center of mass of a compound.
+            </summary>
+            <param name="childPoses">Poses of the children in the compound.</param>
+            <param name="childMasses">Masses of the children in the compound.</param>
+            <returns>The compound's center of mass.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Recenters the children onto the computed center of mass.
+            </summary>
+            <param name="children">Children and their associated poses. Center of mass will be subtracted from the child position.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <param name="centerOfMass">Computed center of mass that was subtracted from the child positions.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInverseInertia(System.Span{BepuPhysics.RigidPose},System.Span{BepuUtilities.Symmetric3x3},System.Span{BepuUtilities.Numerics.Number},BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia for a set of compound children based on their poses and the provided inverse inertias. Recenters the children onto the computed center of mass.
+            </summary>
+            <param name="childPoses">Poses of the compound's children. Center of mass will be subtracted from the child position.</param>
+            <param name="inverseLocalInertias">Inverse inertias of the children, each in the child's local space. Assumed to have already been premultiplied by the mass of the child.</param>
+            <param name="childMasses">Masses of each child in the compound.</param>
+            <param name="centerOfMass">Computed center of mass that was subtracted from the child positions.</param>
+            <returns><see cref="T:BepuPhysics.BodyInertia"/> of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Computes the inertia of a compound. Does not recenter the child poses.
+            </summary>
+            <param name="children">Children of the compound.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.ComputeInertia(System.Span{BepuPhysics.Collidables.CompoundChild},System.Span{BepuUtilities.Numerics.Number},BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a compound. Recenters the child poses around the calculated center of mass.
+            </summary>
+            <param name="children">Children of the compound. Child local positions will have the calculated center of mass subtracted from them.</param>
+            <param name="shapes">Shapes collection containing the data for the compound child shapes.</param>
+            <param name="childMasses">Masses of the children.</param>
+            <param name="centerOfMass">Calculated center of mass of the compound. Subtracted from all the compound child poses.</param>
+            <returns>Inertia of the compound.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildKinematicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a kinematic compound.
+            Computes a center of mass and recenters child shapes relative to it. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+            <param name="center">Computed center of rotation based on the poses and weights of accumulated children.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.BuildKinematicCompound(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.CompoundChild}@)">
+            <summary>
+            Builds a buffer of compound children from the accumulated set for a kinematic compound. Does not recenter children. Does not reset the accumulator.
+            </summary>
+            <param name="children">List of children created from the accumulated set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Reset">
+            <summary>
+            Empties out the accumulated children.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.CompoundBuilder.Dispose">
+            <summary>
+            Returns internal resources to the pool, rendering the builder unusable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullBoundingPlanes.Normal">
+            <summary>
+            Normal of the bounding plane.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullBoundingPlanes.Offset">
+            <summary>
+            Offset from the origin to a point on the plane along the normal. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.Points">
+            <summary>
+            Bundled points of the convex hull.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.BoundingPlanes">
+            <summary>
+            Bundled bounding planes associated with the convex hull's faces.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.FaceVertexIndices">
+            <summary>
+            Combined set of vertices used by each face. Use FaceToVertexIndicesStart to index into this for a particular face. Indices stored in counterclockwise winding in right handed space, clockwise in left handed space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.FaceToVertexIndicesStart">
+            <summary>
+            Start indices of faces in the FaceVertexIndices.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHull.#ctor(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Creates a convex hull from a point set.
+            </summary>
+            <param name="points">Points to compute the convex hull of.</param>
+            <param name="pool">Pool in which to allocate the convex hull and any temporary resources needed to compute the hull.</param>
+            <param name="center">Computed center of the convex hull before the hull was recentered.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.ConvexHull.Id">
+            <summary>
+            Type id of convex hull shapes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullWide.EstimateEpsilonScale(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Provides an estimate of the scale of a shape. 
+            </summary>
+            <param name="terminatedLanes">Mask of lanes which are inactive.</param>
+            <param name="epsilonScale">Approximate scale of the shape for use in epsilons.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.HullFace">
+            <summary>
+            Stores references to the points composing one of a convex hull's faces.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.HullFace.VertexCount">
+            <summary>
+            Gets the number of vertices in the face.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.HullFace.Item(System.Int32)">
+            <summary>
+            Gets the index of the vertex associated with the given face vertex index in the source point set.
+            </summary>
+            <param name="index">Index into the face's vertex list.</param>
+            <returns>Index of the vertex associated with the given face vertex index in the source point set.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.HullData">
+            <summary>
+            Raw data representing a convex hull.
+            </summary>
+            <remarks>This is not yet transformed into a runtime format. It requires additional processing to be used in a ConvexHull shape; see ConvexHullHelper.ProcessHull.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.OriginalVertexMapping">
+            <summary>
+            Mapping of points on the convex hull back to the original point set.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.FaceVertexIndices">
+            <summary>
+            List of indices composing the faces of the hull. Individual faces indexed by the FaceIndices.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.HullData.FaceStartIndices">
+            <summary>
+            Starting index in the FaceVertexIndices for each face.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ConvexHullHelper">
+            <summary>
+            Helper methods to create and process convex hulls from point clouds.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ConvexHullHelper.EdgeFaceIndices">
+            <summary>
+            Tracks the faces associated with a detected surface edge. 
+            During hull calculation, surface edges that have only one face associated with them should have an outstanding entry in the edges to visit set.
+            Surface edges can never validly have more than two faces associated with them. Two means that an edge is 'complete', or should be.
+            Detecting a third edge implies an error condition. By tracking *which* faces were associated with an edge, we can attempt to fix the error.
+            This type of error tends to occur when there is a numerical disagreement about what vertices are coplanar with a face.
+            One iteration could find what it thinks is a complete face, and a later iteration ends up finding more vertices *including* the ones already contained in the previous face.
+            That's a recipe for excessive edge faces, but it's also a direct indicator that we should merge the involved faces for being close enough to coplanar that the error happened in the first place.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.ComputeHull(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.HullData@)">
+            <summary>
+            Computes the convex hull of a set of points.
+            </summary>
+            <param name="points">Point set to compute the convex hull of.</param>
+            <param name="pool">Buffer pool to pull memory from when creating the hull.</param>
+            <param name="hullData">Convex hull of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuPhysics.Collidables.HullData,BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Processes hull data into a runtime usable convex hull shape. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Point array into which the hull data indexes.</param>
+            <param name="hullData">Raw input data to process.</param>
+            <param name="pool">Pool used to allocate resources for the hullShape.</param>
+            <param name="hullShape">Convex hull shape created from the input data.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.HullData@,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a convex hull shape out of an input point set. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Points to use to create the hull.</param>
+            <param name="pool">Buffer pool used for temporary allocations and the output data structures.</param>
+            <param name="hullData">Intermediate hull data that got processed into the convex hull.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+            <param name="convexHull">Convex hull shape of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateShape(System.Span{BepuUtilities.Numerics.Vector3},BepuUtilities.Memory.BufferPool,BepuUtilities.Numerics.Vector3@,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a convex hull shape out of an input point set. Recenters the convex hull's points around its center of mass.
+            </summary>
+            <param name="points">Points to use to create the hull.</param>
+            <param name="pool">Buffer pool used for temporary allocations and the output data structures.</param>
+            <param name="center">Computed center of mass of the convex hull before its points were recentered onto the origin.</param>
+            <param name="convexHull">Convex hull shape of the input point set.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.Buffer{BepuUtilities.Vector3Wide},BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.HullBoundingPlanes})">
+            <summary>
+            Creates a transformed copy of a convex hull.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="targetPoints">Transformed points in the copy target hull.</param>
+            <param name="targetBoundingPlanes">Transformed bounding planes in the copy target hull.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedShallowCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a transformed copy of a convex hull. FaceVertexIndices and FaceToVertexIndicesStart buffers from the source are reused in the copy target.
+            Note that disposing two convex hulls with the same buffers will cause errors; disposal must be handled carefully to avoid double freeing the shared buffers.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="pool">Pool from which to allocate the new hull's points and bounding planes buffers.</param>
+            <param name="target">Target convex hull to copy into. FaceVertexIndices and FaceToVertexIndicesStart buffers are reused from the source.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ConvexHullHelper.CreateTransformedCopy(BepuPhysics.Collidables.ConvexHull@,BepuUtilities.Matrix3x3@,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.ConvexHull@)">
+            <summary>
+            Creates a transformed copy of a convex hull. Unique FaceVertexIndices and FaceToVertexIndicesStart buffers are allocated for the copy target.
+            </summary>
+            <param name="source">Source convex hull to copy.</param>
+            <param name="transform">Transform to apply to the hull points.</param>
+            <param name="pool">Pool from which to allocate the new hull's buffers.</param>
+            <param name="target">Target convex hull to copy into.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Cylinder">
+            <summary>
+            Collision shape representing a cylinder.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.Radius">
+            <summary>
+            Radius of the cylinder.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.HalfLength">
+            <summary>
+            Half length of the cylinder along its local Y axis.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Cylinder.Length">
+            <summary>
+            Gets or sets the length of the cylinder along its local Y axis.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Cylinder.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a cylinder shape.
+            </summary>
+            <param name="radius">Radius of the cylinder.</param>
+            <param name="length">Length of the cylinder along its local Y axis.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Cylinder.Id">
+            <summary>
+            Type id of cylinder shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IShape">
+            <summary>
+            Defines a type usable as a shape by collidables.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShape.TypeId">
+            <summary>
+            Unique type id for this shape type.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShape.CreateShapeBatch(BepuUtilities.Memory.BufferPool,System.Int32,BepuPhysics.Collidables.Shapes)">
+            <summary>
+            Creates a shape batch for this type of shape.
+            </summary>
+            <param name="pool">Buffer pool used to create the batch.</param>
+            <param name="initialCapacity">Initial capacity to allocate within the batch.</param>
+            <param name="shapeBatches">The set of shapes to contain this batch.</param>
+            <returns>Shape batch for the shape type.</returns>
+            <remarks>This is typically used internally to initialize new shape collections in response to shapes being added. It is not likely to be useful outside of the engine.
+            Ideally, this would be implemented as a static abstract, but those aren't available yet.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IConvexShape">
+            <summary>
+            Defines functions available on all convex shapes. Convex shapes have no hollowed out regions; any line passing through a convex shape will never enter and exit more than once.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a shape given an orientation.
+            </summary>
+            <param name="orientation">Orientation of the shape to use when computing the bounding box.</param>
+            <param name="min">Minimum corner of the bounding box.</param>
+            <param name="max">Maximum corner of the bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeAngularExpansionData(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes information about how the bounding box should be expanded in response to angular velocity.
+            </summary>
+            <param name="maximumRadius"></param>
+            <param name="maximumAngularExpansion"></param>
+            <remarks>This is typically used in the engine for predicting bounding boxes at the beginning of the frame.
+            Velocities are used to expand the bounding box so that likely future collisions will be detected.
+            Linear velocity expands the bounding box in a direct and simple way, but angular expansion requires more information about the shape. 
+            Imagine a long and thin capsule versus a sphere: high angular velocity may require significant expansion on the capsule, but spheres are rotationally invariant.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.ComputeInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia for a body given a mass.
+            </summary>
+            <param name="mass">Mass to use to compute the body's inertia.</param>
+            <returns>Inertia for the body.</returns>
+            <remarks>Note that the <see cref="T:BepuPhysics.BodyInertia"/> returned by this stores the inverse mass and inverse inertia tensor. 
+            This is because the most high frequency use of body inertia most naturally uses the inverse.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShape.RayTest(BepuPhysics.RigidPose@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="origin">Origin of the ray to test against the shape relative to the shape.</param>
+            <param name="direction">Direction of the ray to test against the shape.</param>
+            <param name="t">Distance along the ray direction to the hit point, if any, in units of the ray direction's length. In other words, hitLocation = origin + direction * t.</param>
+            <param name="normal">Normal of the impact surface, if any.</param>
+            <returns>True if the ray intersected the shape, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ICompoundShape">
+            <summary>
+            Defines a compound shape type that has children of potentially different types.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.Shapes,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a compound shape.
+            </summary>
+            <param name="orientation">Orientation of the compound.</param>
+            <param name="shapeBatches">Shape batches to look up child shape information in.</param>
+            <param name="min">Minimum of the compound's bounding box.</param>
+            <param name="max">Maximum of the compound's bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.AddChildBoundsToBatcher(BepuPhysics.BoundingBoxBatcher@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,System.Int32)">
+            <summary>
+            Submits child shapes to a bounding box batcher for vectorized bounds calculation.
+            </summary>
+            <remarks>This is used internally for bounding box calculation, but it is unlikely to be useful externally.</remarks>
+            <param name="batcher">Batcher to accumulate children in.</param>
+            <param name="pose">Pose of the compound.</param>
+            <param name="velocity">Velocity of the compound used to expand child bounds.</param>
+            <param name="bodyIndex">Index of the body in the active body set; used to accumulate child bounds results.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="ray">Ray to test against the shape.</param>
+            <param name="maximumT">Maximum distance along the ray, in units of the ray direction's length, that the ray will test.</param>
+            <param name="shapeBatches">Shape batches to look up child shapes in if necessary.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,BepuPhysics.Collidables.Shapes,``0@)">
+            <summary>
+            Tests multiple rays against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="rays">Rays to test against the shape.</param>
+            <param name="shapeBatches">Shape batches to look up child shapes in if necessary.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ICompoundShape.ChildCount">
+            <summary>
+            Gets the number of children in the compound shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.GetChild(System.Int32)">
+            <summary>
+            Gets a child from the compound by index.
+            </summary>
+            <param name="compoundChildIndex">Index of the child to look up.</param>
+            <returns>Reference to the requested compound child.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ICompoundShape.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns all resources used by the shape instance to the given pool.
+            </summary>
+            <param name="pool">Pool to return shape resources to.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IHomogeneousCompoundShape`2">
+            <summary>
+            Defines a compound shape type that has children of only one type.
+            </summary>
+            <typeparam name="TChildShape">Type of the child shapes.</typeparam>
+            <typeparam name="TChildShapeWide">Type of the child shapes, formatted in AOSOA layout.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.ComputeBounds(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the bounding box of a compound shape.
+            </summary>
+            <param name="orientation">Orientation of the compound.</param>
+            <param name="min">Minimum of the compound's bounding box.</param>
+            <param name="max">Maximum of the compound's bounding box.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,``0@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="ray">Ray to test against the shape.</param>
+            <param name="maximumT">Maximum distance along the ray, in units of the ray direction's length, that the ray will test.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,``0@)">
+            <summary>
+            Tests multiple rays against the shape.
+            </summary>
+            <param name="pose">Pose of the shape during the ray test.</param>
+            <param name="rays">Rays to test against the shape.</param>
+            <param name="hitHandler">Callbacks called when the ray interacts with a test candidate.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.ChildCount">
+            <summary>
+            Gets the number of children in the compound shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetLocalChild(System.Int32,`0@)">
+            <summary>
+            Gets a child shape as it appears in the compound's local space.
+            </summary>
+            <param name="childIndex">Index of the child in the compound parent.</param>
+            <param name="childData">Data representing the child.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetPosedLocalChild(System.Int32,`0@,BepuPhysics.RigidPose@)">
+            <summary>
+            Gets a child shape from the compound and compounds a pose for it in the local space of the compound parent.
+            Useful for processes which require a child shape (like a triangle in a mesh) to have their center of mass at zero in the child's own local space.
+            </summary>
+            <param name="childIndex">Index of the child.</param>
+            <param name="childData">Shape of the child.</param>
+            <param name="childPose">Pose in the compound's local space that brings the child shape as described to the proper location in the parent compound's local space.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.GetLocalChild(System.Int32,`1@)">
+            <summary>
+            Gets a child shape as it appears in the compound's local space.
+            </summary>
+            <param name="childIndex">Index of the child in the compound parent.</param>
+            <param name="childData">Reference to an AOSOA slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IHomogeneousCompoundShape`2.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns all resources used by the shape instance to the given pool.
+            </summary>
+            <param name="pool">Pool to return shape resources to.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IShapeWide`1">
+            <summary>
+            Defines a widely vectorized bundle representation of a shape.
+            </summary>
+            <typeparam name="TShape">Scalar type of the shape.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.AllowOffsetMemoryAccess">
+            <summary>
+            Gets whether this type supports accessing its memory by lane offsets. If false, WriteSlot must be used instead of WriteFirst.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.InternalAllocationSize">
+            <summary>
+            Gets the number of bytes required for allocations within the wide shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.Initialize(BepuUtilities.Memory.Buffer{System.Byte}@)">
+            <summary>
+            For types with a nonzero internal allocation size, provides memory to the shape for internal allocations.
+            Memory should be assumed to be stack allocated.
+            </summary>
+            <param name="memory">Memory to use for internal allocations in the wide shape.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.WriteFirst(`0@)">
+            <summary>
+            Places the specified AOS-formatted shape into the first lane of the wide 'this' reference.
+            </summary>
+            <remarks>Note that we are effectively using the TShapeWide as a stride.
+            The base address is offset by the user of this function, so the implementation only ever considers the first slot.</remarks>
+            <param name="source">AOS-formatted shape to gather from.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.WriteSlot(System.Int32,`0@)">
+            <summary>
+            Places the specified AOS-formatted shape into the selected slot of the wide 'this' reference.
+            </summary>
+            <param name="index">Index of the slot to put the data into.</param>
+            <param name="source">Source of the data to insert.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.Broadcast(`0@)">
+            <summary>
+            Broadcasts a scalar shape into a bundle containing the same shape in every lane.
+            </summary>
+            <param name="shape">Scalar shape to broadcast.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.GetBounds(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the bounds of all shapes in the bundle.
+            </summary>
+            <param name="orientations">Orientations of the shapes in the bundle.</param>
+            <param name="countInBundle">Number of lanes filled in the bundle.</param>
+            <param name="maximumRadius">Computed maximum radius of the shapes in the bundle.</param>
+            <param name="maximumAngularExpansion">Computed maximum bounds expansion that can be caused by angular motion.</param>
+            <param name="min">Minimum bounds of the shapes.</param>
+            <param name="max">Maximum bounds of the shapes.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.IShapeWide`1.MinimumWideRayCount">
+            <summary>
+            Gets the lower bound on the number of rays to execute in a wide fashion. Ray bundles with fewer rays will fall back to the single ray code path.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IShapeWide`1.RayTest(BepuPhysics.RigidPoseWide@,BepuPhysics.Collidables.RayWide@,BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Tests a ray against the shape.
+            </summary>
+            <param name="poses">Poses of the shape bundle during the ray test.</param>
+            <param name="rayWide">Ray to test against the shape bundle.</param>
+            <param name="intersected">Mask representing hit state in each lane. -1 means the ray in that lane hit, 0 means a miss.</param>
+            <param name="t">Distance along the ray direction to the hit point, if any, in units of the ray direction's length. In other words, hitLocation = origin + direction * t.</param>
+            <param name="normal">Normal of the impact surface, if any.</param>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Mesh">
+            <summary>
+            Shape designed to contain a whole bunch of triangles. Triangle collisions and ray tests are one-sided; only tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates will generate contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Tree">
+            <summary>
+            Acceleration structure of the mesh.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Triangles">
+            <summary>
+            Buffer of triangles composing the mesh. Triangles will only collide with tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.Mesh.Scale">
+            <summary>
+            Gets or sets the scale of the mesh.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.FillSubtreesForTriangles(System.Span{BepuPhysics.Collidables.Triangle},System.Span{BepuPhysics.Trees.NodeChild})">
+            <summary>
+            Fills a buffer of subtrees according to a buffer of triangles.
+            </summary>
+            <remarks>The term "subtree" is used because the binned builder does not care whether the input came from leaf nodes or a refinement process's internal nodes.</remarks>
+            <param name="triangles">Triangles to build subtrees from.</param>
+            <param name="subtrees">Subtrees created for the triangles.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.CreateWithoutTreeBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a mesh shape instance, but leaves the Tree in an unbuilt state. The tree must be built before the mesh can be used.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created mesh shape.</returns>
+            <remarks>In some cases, the default binned build may not be the ideal builder. This function does everything needed to set up a tree without the expense of figuring out the details of the acceleration structure.
+            The user can then run whatever build/refinement process is appropriate.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.CreateWithSweepBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a mesh shape instance and builds an acceleration structure using a sweep builder.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <returns>Created mesh shape.</returns>
+            <remarks>The sweep builder is significantly slower than the binned builder, but can sometimes create higher quality trees.
+            <para>Note that the binned builder can be tuned to create higher quality trees. That is usually a better choice than trying to use the sweep builder; this is here primarily for legacy reasons.</para></remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.#ctor(BepuUtilities.Memory.Buffer{BepuPhysics.Collidables.Triangle},BepuUtilities.Numerics.Vector3,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Creates a mesh shape.
+            </summary>
+            <param name="triangles">Triangles to use in the mesh.</param>
+            <param name="scale">Scale to apply to all vertices at runtime.
+            Note that the scale is not baked into the triangles or acceleration structure; the same set of triangles and acceleration structure can be used across multiple Mesh instances with different scales.</param>
+            <param name="pool">Pool used to allocate acceleration structures.</param>
+            <param name="dispatcher">Dispatcher to use to multithread the execution of the mesh build process. If null, the build will be single threaded.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.#ctor(System.Span{System.Byte},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Loads a mesh from data stored in a byte buffer previously stored by the Serialize function.
+            </summary>
+            <param name="data">Data to load the mesh from.</param>
+            <param name="pool">Pool to create the mesh with.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.GetSerializedByteCount">
+            <summary>
+            Gets the number of bytes it would take to store the given mesh in a byte buffer.
+            </summary>
+            <returns>Number of bytes it would take to store the mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Serialize(System.Span{System.Byte})">
+            <summary>
+            Writes a mesh's data to a byte buffer.
+            </summary>
+            <param name="data">Byte buffer to store the mesh in.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,``0@)">
+            <summary>
+            Casts a ray against the mesh. Executes a callback for every test candidate and every hit.
+            </summary>
+            <typeparam name="TRayHitHandler">Type of the callback to execute for every test candidate and hit.</typeparam>
+            <param name="pose">Pose of the mesh during the ray test.</param>
+            <param name="ray">Ray to test against the mesh.</param>
+            <param name="maximumT">Maximum length of the ray in units of the ray direction length.</param>
+            <param name="hitHandler">Callback to execute for every hit.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.RayTest``1(BepuPhysics.RigidPose@,BepuPhysics.Trees.RaySource@,``0@)">
+            <summary>
+            Casts a bunch of rays against the mesh at the same time, executing a callback for every test candidate and every hit.
+            </summary>
+            <typeparam name="TRayHitHandler">Type of the callback to execute for every ray test candidate and every hit.</typeparam>
+            <param name="pose">Pose of the mesh during the ray test.</param>
+            <param name="rays">Set of rays to cast against the mesh.</param>
+            <param name="hitHandler">Callbacks to execute.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Recenter(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Subtracts the newCenter from all points in the mesh hull.
+            </summary>
+            <param name="newCenter">New center that all points will be made relative to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedInertia(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of the mesh around its volumetric center and recenters the points of the mesh around it.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <param name="center">Center of the closed mesh.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of the mesh.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedCenterOfMass(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the volume and center of mass of the mesh. Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <param name="volume">Volume of the closed mesh.</param>
+            <param name="center">Center of mass of the closed mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeClosedCenterOfMass">
+            <summary>
+            Computes the center of mass of the mesh.
+            Assumes the mesh is closed and should be treated as solid.
+            </summary>
+            <returns>Center of mass of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenInertia(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of the mesh around its volumetric center and recenters the points of the mesh around it.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <param name="center">Center of the open mesh.</param>
+            <returns>Inertia tensor of the closed mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenInertia(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of the mesh.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <param name="mass">Mass to scale the inertia tensor with.</param>
+            <returns>Inertia of the open mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.ComputeOpenCenterOfMass">
+            <summary>
+            Computes the center of mass of the mesh.
+            Assumes the mesh is open and should be treated as a triangle soup.
+            </summary>
+            <returns>Center of mass of the open mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Mesh.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Returns the mesh's resources to a buffer pool.
+            </summary>
+            <param name="bufferPool">Pool to return the mesh's resources to.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Mesh.Id">
+            <summary>
+            Type id of mesh shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.ITriangleSource">
+            <summary>
+            Defines a type capable of providing a sequence of triangles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ITriangleSource.GetNextTriangle(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Gets the next triangle in the sequence, if any.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <returns>True if there was another triangle, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.MeshInertiaHelper">
+            <summary>
+            Provides helpers for computing the inertia of objects with triangular surfaces.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTetrahedronVolume(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Computes the signed volume of a tetrahedron where the fourth vertex is at the origin.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <param name="a">First vertex of the tetrahedron.</param>
+            <param name="b">Second vertex of the tetrahedron.</param>
+            <param name="c">Third vertex of the tetrahedron.</param>
+            <returns>Volume of the tetrahedron.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTetrahedronContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution of a tetrahedron with vertices at a, b, c, and (0,0,0) assuming a density of 1.
+            </summary>
+            <param name="a">First vertex of the tetrahedron.</param>
+            <param name="b">Second vertex of the tetrahedron.</param>
+            <param name="c">Third vertex of the tetrahedron.</param>
+            <param name="volume">Volume of the tetrahedron.</param>
+            <param name="inertiaTensor">Inertia tensor of this tetrahedron assuming a density of 1.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the inertia of a closed mesh.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of a closed mesh.
+            Triangles visible from outside the shape are assumed to have clockwise winding in right handed coordinates or counterclockwise winding in left handed coordinates.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeClosedCenterOfMass``1(``0@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the center of mass of a closed mesh.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="volume">Volume of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution from a single triangle.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <param name="mass">Mass of the triangle.</param>
+            <param name="inertiaTensor">Inertia tensor of the triangle.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleArea(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Computes the area of a triangle.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <returns>Area of the triangle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeTriangleContribution(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Integrates the inertia contribution from a single triangle assuming a density of 1.
+            </summary>
+            <param name="a">First vertex in the triangle.</param>
+            <param name="b">Second vertex in the triangle.</param>
+            <param name="c">Third vertex in the triangle.</param>
+            <param name="area">Area of the triangle.</param>
+            <param name="inertiaTensor">Inertia tensor of the triangle assuming that the density is 1.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the inertia of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenInertia``1(``0@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes the inertia of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <param name="mass">Mass of the mesh to scale the inertia tensor with.</param>
+            <param name="inertia">Inertia tensor of the mesh.</param>
+            <param name="center">Center of mass of the mesh.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.ComputeOpenCenterOfMass``1(``0@)">
+            <summary>
+            Computes the center of mass of an open mesh, treating it as a triangle soup.
+            </summary>
+            <typeparam name="TTriangleSource">Type of the triangle source.</typeparam>
+            <param name="triangleSource">Source from which to retrieve a sequence of triangles.</param>
+            <returns>Center of mass of the mesh.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.MeshInertiaHelper.GetInertiaOffset(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes an offset for an inertia tensor based on an offset frame of reference.
+            </summary>
+            <param name="mass">Mass associated with the inertia tensor being moved.</param>
+            <param name="offset">Offset from the current inertia frame of reference to the new frame of reference.</param>
+            <param name="inertiaOffset">Modification to add to the inertia tensor to move it into the new reference frame.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.Capacity">
+            <summary>
+            Gets the number of shapes that the batch can currently hold without resizing.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.TypeId">
+            <summary>
+            Gets the type id of the shape type in this batch.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.Compound">
+            <summary>
+            Gets whether this shape batch's contained type potentially contains children that require other shape batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch.ShapeDataSize">
+            <summary>
+            Gets the size of the shape type stored in this batch in bytes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.GetShapeData(System.Int32,System.Void*@,System.Int32@)">
+            <summary>
+            Gets a raw untyped pointer to a shape's data.
+            </summary>
+            <param name="shapeIndex">Index of the shape to look up.</param>
+            <param name="shapePointer">Pointer to the indexed shape data.</param>
+            <param name="shapeSize">Size of the shape data in bytes.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Clear">
+            <summary>
+            Frees all shape slots without returning any resources to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of the type batch if necessary to hold the target capacity.
+            </summary>
+            <param name="shapeCapacity">Target capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Resize(System.Int32)">
+            <summary>
+            Changes the size of the type batch if the target capacity is different than the current capacity. Note that shrinking allocations is conservative; resizing will
+            never allow an existing shape to point to unallocated memory.
+            </summary>
+            <param name="shapeCapacity">Target capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.Dispose">
+            <summary>
+            Returns all backing resources to the pool, leaving the batch in an unusable state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.ShapeBatch.ResizeIdPool(System.Int32)">
+            <summary>
+            Shrinks or expands the allocation of the batch's id pool. Note that shrinking allocations is conservative; resizing will never allow any pending ids to be lost.
+            </summary>
+            <param name="targetIdCapacity">Number of slots to allocate space for in the id pool.</param>
+        </member>
+        <member name="P:BepuPhysics.Collidables.ShapeBatch`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the shape associated with an index.
+            </summary>
+            <param name="shapeIndex">Index of the shape reference to retrieve.</param>
+            <returns>Reference to the shape at the given index.</returns>
+        </member>
+        <member name="T:BepuPhysics.Collidables.IConvexShapeBatch">
+            <summary>
+            Defines a shape batch containing convex objects that support simple inertia calculations.
+            </summary>
+            <remarks>This interface gives compounds a way to compute inertia despite not having direct typed access to the child shapes.
+            It's a layer of overhead that can usually be avoided, but it's sometimes convenient to be able to just enumerate child inertias.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Collidables.IConvexShapeBatch.ComputeInertia(System.Int32,BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes the inertia of a shape.
+            </summary>
+            <param name="shapeIndex">Index of the shape to compute the inertia of.</param>
+            <param name="mass">Mass to use to compute the inertia.</param>
+            <returns>Inertia of the shape.</returns>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.UpdateBounds(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box for a single shape.
+            </summary>
+            <param name="pose">Pose to calculate the bounding box of.</param>
+            <param name="shapeIndex">Index of the shape.</param>
+            <param name="bounds">Bounding box of the specified shape with the specified pose.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.UpdateBounds(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box for a single shape.
+            </summary>
+            <param name="position">Position of the shape.</param>
+            <param name="orientation">Orientation of the shape.</param>
+            <param name="shapeIndex">Index of the shape.</param>
+            <param name="bounds">Bounding box of the specified shape with the specified pose.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.RecursivelyRemoveAndDispose(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a shape and any existing children from the shapes collection and returns their resources to the given pool.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+            <param name="pool">Pool to return all shape resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.RemoveAndDispose(BepuPhysics.Collidables.TypedIndex,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Removes a shape from the shapes collection and returns its resources to the given pool. Does not remove or dispose any children.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+            <param name="pool">Pool to return all shape resources to.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Remove(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Removes a shape without removing its children or disposing any resources.
+            </summary>
+            <param name="shapeIndex">Index of the shape to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Clear">
+            <summary>
+            Clears all shapes from existing batches. Does not release any memory.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.EnsureBatchCapacities(System.Int32)">
+            <summary>
+            Ensures a minimum capacity for all existing shape batches.
+            </summary>
+            <param name="shapeCapacity">Capacity to ensure for all existing shape batches.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.ResizeBatches(System.Int32)">
+            <summary>
+            Resizes all existing batches for a target capacity. Note that this is conservative; it will never orphan an existing shape.
+            </summary>
+            <param name="shapeCapacity">Capacity to target for all existing shape batches.</param>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Shapes.Dispose">
+            <summary>
+            Releases all memory from existing batches. Leaves shapes set in an unusable state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Sphere.Radius">
+            <summary>
+            Radius of the sphere.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Sphere.#ctor(BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a sphere shape.
+            </summary>
+            <param name="radius">Radius of the sphere.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Sphere.Id">
+            <summary>
+            Type id of sphere shapes.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.Triangle">
+            <summary>
+            Collision shape representing an individual triangle. Triangle collisions and ray tests are one-sided; only tests which see the triangle as wound clockwise in right handed coordinates or counterclockwise in left handed coordinates will generate contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.A">
+            <summary>
+            First vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.B">
+            <summary>
+            Second vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.C">
+            <summary>
+            Third vertex of the triangle in local space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Collidables.Triangle.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a triangle shape.
+            </summary>
+            <param name="a">First vertex of the triangle in local space.</param>
+            <param name="b">Second vertex of the triangle in local space.</param>
+            <param name="c">Third vertex of the triangle in local space.</param>
+        </member>
+        <member name="F:BepuPhysics.Collidables.Triangle.Id">
+            <summary>
+            Type id of triangle shapes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TriangleWide.BackfaceNormalDotRejectionThreshold">
+            <summary>
+            Minimum dot product between the detected local normal and the face normal of a triangle necessary to create contacts.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TriangleWide.DegenerateTriangleEpsilon">
+            <summary>
+            Epsilon to apply to testing triangles for degeneracy (which will be scaled by a pair-determined epsilon scale). Degenerate triangles do not have well defined normals and should not contribute 
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Collidables.TypedIndex">
+            <summary>
+            Represents an index with an associated type packed into a single integer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Collidables.TypedIndex.Packed">
+            <summary>
+            Bit packed representation of the typed index.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Type">
+            <summary>
+            Gets the type index of the object.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Index">
+            <summary>
+            Gets the index of the object.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Collidables.TypedIndex.Exists">
+            <summary>
+            Gets whether this index actually refers to anything. The Type and Index should only be used if this is true.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BoundsContinuation.BodyIndex">
+            <summary>
+            Gets the index of the body associated with this continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.BoundsContinuation.CompoundChild">
+            <summary>
+            Gets whether this continuation is associated with a compound's child.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.BoundsContinuation.CreateContinuation(System.Int32)">
+            <summary>
+            Creates a bounding box calculation continuation for a given noncompound body.
+            </summary>
+            <param name="bodyIndex">Index of the body to set the bounding box of.</param>
+        </member>
+        <member name="M:BepuPhysics.BoundsContinuation.CreateCompoundChildContinuation(System.Int32)">
+            <summary>
+            Creates a bounding box calculation continuation for a given compound body.
+            </summary>
+            <param name="compoundBodyIndex">Index of the compound body to set the bounding box of.</param>
+        </member>
+        <member name="F:BepuPhysics.BoundingBoxBatcher.CollidablesPerFlush">
+            <summary>
+            The number of bodies to accumulate per type before executing an AABB update. The more bodies per batch, the less virtual overhead and execution divergence.
+            However, this should be kept low enough such that the data that has to be gathered by the bounding box update is still usually in L1.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.BroadPhase">
+            <summary>
+            Manages scene acceleration structures for collision detection and queries.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveLeaves">
+            <summary>
+            Collidable references contained within the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree"/>. Note that values at or beyond the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree"/>.LeafCount are not defined.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.StaticLeaves">
+            <summary>
+            Collidable references contained within the <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree"/>. Note that values at or beyond <see cref="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree"/>.LeafCount are not defined.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.BroadPhase.Pool">
+            <summary>
+            Pool used by the broad phase.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.ActiveTree">
+            <summary>
+            Tree containing wakeful bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.BroadPhase.StaticTree">
+            <summary>
+            Tree containing sleeping bodies and statics.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetActiveBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets pointers to the leaf's bounds stored in the broad phase's active tree.
+            </summary>
+            <param name="index">Index of the active collidable to examine.</param>
+            <param name="minPointer">Pointer to the minimum bounds in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetStaticBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets pointers to the leaf's bounds stored in the broad phase's static tree.
+            </summary>
+            <param name="index">Index of the static to examine.</param>
+            <param name="minPointer">Pointer to the minimum bounds in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.UpdateActiveBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given active leaf index, refitting the tree to match.
+            </summary>
+            <param name="broadPhaseIndex">Index of the leaf to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.UpdateStaticBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given active leaf index, refitting the tree to match.
+            </summary>
+            <param name="broadPhaseIndex">Index of the leaf to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Clear">
+            <summary>
+            Clears out the broad phase's structures without releasing any resources.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.EnsureCapacity(System.Int32,System.Int32)">
+            <summary>
+            Ensures that the broad phase structures can hold at least the given number of leaves.
+            </summary>
+            <param name="activeCapacity">Number of leaves to allocate space for in the active tree.</param>
+            <param name="staticCapacity">Number of leaves to allocate space for in the static tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Resize(System.Int32,System.Int32)">
+            <summary>
+            Resizes the broad phase structures to hold the given number of leaves. Note that this is conservative; it will never orphan any existing leaves.
+            </summary>
+            <param name="activeCapacity">Number of leaves to allocate space for in the active tree.</param>
+            <param name="staticCapacity">Number of leaves to allocate space for in the static tree.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Dispose">
+            <summary>
+            Releases memory used by the broad phase. Leaves the broad phase unusable.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.RayCast``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@,System.Int32)">
+            <summary>
+            Finds any intersections between a ray and leaf bounding boxes.
+            </summary>
+            <typeparam name="TRayTester">Type of the callback to execute on ray-leaf bounding box intersections.</typeparam>
+            <param name="origin">Origin of the ray to cast.</param>
+            <param name="direction">Direction of the ray to cast.</param>
+            <param name="maximumT">Maximum length of the ray traversal in units of the direction's length.</param>
+            <param name="rayTester">Callback to execute on ray-leaf bounding box intersections.</param>
+            <param name="id">User specified id of the ray.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Sweep``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@)">
+            <summary>
+            Finds any intersections between a swept bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TSweepTester">Type of the callback to execute on sweep-leaf bounding box intersections.</typeparam>
+            <param name="min">Minimum bounds of the box to sweep.</param>
+            <param name="max">Maximum bounds of the box to sweep.</param>
+            <param name="direction">Direction along which to sweep the bounding box.</param>
+            <param name="maximumT">Maximum length of the sweep in units of the direction's length.</param>
+            <param name="sweepTester">Callback to execute on sweep-leaf bounding box intersections.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.Sweep``1(BepuUtilities.BoundingBox@,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@)">
+            <summary>
+            Finds any intersections between a swept bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TSweepTester">Type of the callback to execute on sweep-leaf bounding box intersections.</typeparam>
+            <param name="boundingBox">Bounding box to sweep.</param>
+            <param name="direction">Direction along which to sweep the bounding box.</param>
+            <param name="maximumT">Maximum length of the sweep in units of the direction's length.</param>
+            <param name="sweepTester">Callback to execute on sweep-leaf bounding box intersections.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetOverlaps``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,``0@)">
+            <summary>
+            Finds any overlaps between a bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TOverlapEnumerator">Type of the enumerator to call for overlaps.</typeparam>
+            <param name="min">Minimum bounds of the query box.</param>
+            <param name="max">Maximum bounds of the query box.</param>
+            <param name="overlapEnumerator">Enumerator to call for overlaps.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhase.GetOverlaps``1(BepuUtilities.BoundingBox@,``0@)">
+            <summary>
+            Finds any overlaps between a bounding box and leaf bounding boxes.
+            </summary>
+            <typeparam name="TOverlapEnumerator">Type of the enumerator to call for overlaps.</typeparam>
+            <param name="boundingBox">Query box bounds.</param>
+            <param name="overlapEnumerator">Enumerator to call for overlaps.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.IBroadPhaseSweepTester">
+            <summary>
+            Defines a type that can act as a callback for broad phase sweep tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionBatcher`1.Dt">
+            <summary>
+            Timestep duration used by pairs which rely on velocity to compute local bounding boxes for pruning.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.Flush">
+            <summary>
+            Forces any remaining partial batches to execute and disposes the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessConvexResult(BepuPhysics.CollisionDetection.ConvexContactManifold@,BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Reports the result of a convex collision test to the callbacks and, if necessary, to any continuations for postprocessing.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="manifold">Contacts detected for the pair.</param>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessEmptyResult(BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Reports the zero result of a convex collision test to the callbacks and, if necessary, to any continuations for postprocessing.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionBatcher`1.ProcessUntestedSubpairConvexResult(BepuPhysics.CollisionDetection.PairContinuation@)">
+            <summary>
+            Submits a subpair whose testing was blocked by user callback as complete to any relevant continuations.
+            </summary>
+            <remarks>Unless you're building custom compound collision pairs or adding new contact processing continuations, you can safely ignore this.</remarks>
+            <param name="continuation">Continuation describing the pair and what to do with it.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ICollisionTestContinuation">
+            <summary>
+            Defines a type which includes information necessary to apply some form of post processing to a collision test result.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.Create(System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Creates a collision test continuation with the given number of slots for subpairs.
+            </summary>
+            <param name="slots">Number of subpair slots to include in the continuation.</param>
+            <param name="pool">Pool to take resources from.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.OnChildCompleted``1(BepuPhysics.CollisionDetection.PairContinuation@,BepuPhysics.CollisionDetection.ConvexContactManifold@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Handles what to do next when the child pair has finished execution and the resulting manifold is available.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="report">Continuation instance being considered.</param>
+            <param name="manifold">Contact manifold for the child pair.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.OnUntestedChildCompleted``1(BepuPhysics.CollisionDetection.PairContinuation@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Handles what to do next when the child pair was rejected for testing, and no manifold exists.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="report">Continuation instance being considered.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionTestContinuation.TryFlush``1(System.Int32,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Checks if the parent pair is complete and should be flushed.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used in the batcher.</typeparam>
+            <param name="pairId">Id of the pair to attempt to flush.</param>
+            <param name="batcher">Collision batcher processing the pair.</param>
+            <returns>True if the pair was done and got flushed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionContinuationType">
+            <summary>
+            Describes the flow control to apply to a convex-convex pair report.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.Direct">
+            <summary>
+            Marks a pair as requiring no further processing before being reported to the user supplied continuations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.NonconvexReduction">
+            <summary>
+            Marks a pair as part of a set of a higher (potentially multi-manifold) pair, potentially requiring contact reduction.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.MeshReduction">
+            <summary>
+            Marks a pair as a part of a set of mesh-convex collisions, potentially requiring mesh boundary smoothing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionContinuationType.CompoundMeshReduction">
+            <summary>
+            Marks a pair as a part of a set of mesh-convex collisions spawned by a mesh-compound pair, potentially requiring mesh boundary smoothing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ChildIndexBits">
+            <summary>
+            Covers bits [0, 20) in the packed representation. Refers to the child pair index in a subtask generating collision task that generated this continuation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ContinuationIndexBits">
+            <summary>
+            Covers bits [20, 30) in the packed representation. Refers to the index of a subpair in a continuation processor.
+            Maximum number should be equal to the sum of the batch sizes subtask generating collision tasks, which as of this writing is 384, but we'll include a little buffer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairContinuation.ContinuationTypeBits">
+            <summary>
+            Covers bits [30, 32) in the packed representation. Refers to which continuation processor should be used for this subpair.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ICollisionCallbacks">
+            <summary>
+            Callbacks invoked by a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.OnPairCompleted``1(System.Int32,``0@)">
+            <summary>
+            Called when a pair submitted to a collision batcher has finished collision detection.
+            </summary>
+            <typeparam name="TManifold">Type of the contact manifold generated by collision detection.</typeparam>
+            <param name="pairId">Id of the pair that completed.</param>
+            <param name="manifold">Contact manifold generated by collision testing.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.OnChildPairCompleted(System.Int32,System.Int32,System.Int32,BepuPhysics.CollisionDetection.ConvexContactManifold@)">
+            <summary>
+            Provides control over subtask generated results before they are reported to the parent task.
+            </summary>
+            <param name="pairId">Id of the parent pair that spawned this child pair.</param>
+            <param name="childA">Index of the child belonging to collidable A in the subpair under consideration.</param>
+            <param name="childB">Index of the child belonging to collidable B in the subpair under consideration.</param>
+            <param name="manifold">Manifold of the child pair to configure.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ICollisionCallbacks.AllowCollisionTesting(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Checks whether further collision testing should be performed for a given subtask.
+            </summary>
+            <param name="pairId">Id of the parent pair.</param>
+            <param name="childA">Index of the child belonging to collidable A in the subpair under consideration.</param>
+            <param name="childB">Index of the child belonging to collidable B in the subpair under consideration.</param>
+            <returns>True if testing should proceed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTask">
+            <summary>
+            Parent type of tasks which handle collision tests between batches of shapes of a particular type.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.BatchSize">
+            <summary>
+            Gets the number of tasks to batch together before executing this task.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.ShapeTypeIndexA">
+            <summary>
+            Gets the first shape type index associated with the task. Shape pairs provided to the task for execution should be in the order defined by these type two indices.
+            If a collision task isn't a top level shape pair task, this should be -1.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.ShapeTypeIndexB">
+            <summary>
+            Gets the second shape type index associated with the task. Shape pairs provided to the task for execution should be in the order defined by these type two indices.
+            If a collision task isn't a top level shape pair task, this should be -1.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.SubtaskGenerator">
+            <summary>
+            Gets whether the task is capable of generating subtasks. Note that subtask generators cannot generate subtasks that are themselves subtask generators.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTask.PairType">
+            <summary>
+            Gets the pair type that the ExecuteBatch call requires.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTask.ExecuteBatch``1(BepuPhysics.CollisionDetection.UntypedList@,BepuPhysics.CollisionDetection.CollisionBatcher{``0}@)">
+            <summary>
+            Executes the task on the given input.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks used to handle results of collision tasks.</typeparam>
+            <param name="batcher">Batcher responsible for the invocation.</param>
+            <param name="batch">Batch of pairs to test.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskPairType">
+            <summary>
+            Describes the data requirements for a collision pair type in a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.StandardPair">
+            <summary>
+            General pair for two shapes with full pose and flip mask, but no bounds related data.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.FliplessPair">
+            <summary>
+            Pair specialized for convex pairs between two shapes of the same type.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.SpherePair">
+            <summary>
+            Pair specialized for two spheres, requiring no flip mask or orientations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.SphereIncludingPair">
+            <summary>
+            Pair specialized for convex pairs that involve one sphere which requires no orientation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskPairType.BoundsTestedPair">
+            <summary>
+            Pair that requires computing local bounding boxes, and so requires extra information like velocity.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskReference">
+            <summary>
+            Metadata about a collision task.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.TaskIndex">
+            <summary>
+            Index of the task in the registry.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.BatchSize">
+            <summary>
+            Number of pairs to accumulate in a batch before dispatching tests.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.ExpectedFirstTypeId">
+            <summary>
+            The type id that is expected to come first in the collision pair.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTaskReference.PairType">
+            <summary>
+            Data requirements for the collision pair type in a <see cref="T:BepuPhysics.CollisionDetection.CollisionBatcher`1"/>.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTaskRegistry">
+            <summary>
+            Registry of collision tasks used to handle various shape pair types.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTaskRegistry.Item(System.Int32)">
+            <summary>
+            Gets the collision task associated with a task index.
+            </summary>
+            <param name="taskIndex">Task index to look up.</param>
+            <returns>Task associated with the task index.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.#ctor(System.Int32)">
+            <summary>
+            Creates a new collision task registry.
+            </summary>
+            <param name="initialShapeCount">Initial number of shape types to allocate space for in the registry.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.Register(BepuPhysics.CollisionDetection.CollisionTask)">
+            <summary>
+            Registers a collision task.
+            </summary>
+            <param name="task">Task to register.</param>
+            <returns>Index of the task in the registry.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.GetTaskReference(System.Int32,System.Int32)">
+            <summary>
+            Gets metadata about the task associated with a shape type pair.
+            </summary>
+            <param name="topLevelTypeA">Type index of the first shape.</param>
+            <param name="topLevelTypeB">Type index of the second shape.</param>
+            <returns>Reference to the metadata for the task.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.CollisionTaskRegistry.GetTaskReference``2">
+            <summary>
+            Gets metadata about the task associated with a shape type pair.
+            </summary>
+            <typeparam name="TShapeA">Type of the first shape.</typeparam>
+            <typeparam name="TShapeB">Type of the second shape.</typeparam>
+            <returns>Reference to the metadata for the task.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTasks.IPairTester`3.BatchSize">
+            <summary>
+            Gets the nubmer of pairs which would ideally be gathered together before executing a wide test.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTasks.ICollisionPair`1">
+            <summary>
+            Defines a type that holds scalar data for the collision batcher.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CollisionTasks.ICollisionPair`1.PairType">
+            <summary>
+            Gets the enumeration type associated with this pair type.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTasks.CollisionPair.FlipMask">
+            <summary>
+            Stores whether the types involved in pair require that the resulting contact manifold be flipped to be consistent with the user-requested pair order.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.CollisionTasks.SphereIncludingPair.FlipMask">
+            <summary>
+            Stores whether the types involved in pair require that the resulting contact manifold be flipped to be consistent with the user-requested pair order.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.CollisionTasks.BoundsTestedPair">
+            <summary>
+            Pair of objects awaiting collision processing that involves velocities for bounds calculation.
+            </summary>
+            <typeparam name="TA">Type of the first shape in the pair.</typeparam>
+            <typeparam name="TB">Type of the second shape in the pair.</typeparam>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConstraintRemover">
+            <summary>
+            Accumulates constraints to remove from multiple threads, and efficiently removes them all as a batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.CreateFlushJobs(System.Boolean)">
+            <summary>
+            Processes enqueued constraint removals and prepares removal jobs.
+            </summary>
+            <param name="deterministic">True if the constraint remover should maintain determinism at an added cost, false otherwise.</param>
+            <returns>The number of removal jobs created. To complete the jobs, execute RemoveConstraintsFromTypeBatch for every index from 0 to the returned job count.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.ReturnConstraintHandles">
+            <summary>
+            Returns the handles associated with all removed constraints to the solver's handle pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConstraintRemover.MarkAffectedConstraintsAsRemovedFromSolver">
+            <summary>
+            For uses of the ConstraintRemover that fully remove a constraint from the simulation (rather than simply moving it somewhere else),
+            the handle->constraint mapping must be updated. This has to wait until after the multithreaded operations actually complete to avoid corrupting parallel operations.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ContactConstraintAccessor">
+            <summary>
+            Provides indirection for reading from and updating constraints in the narrow phase.
+            </summary>
+            <remarks>This, like many other similar constructions in the engine, could conceptually be replaced by static function pointers and a few supplementary data fields.
+            We probably will do exactly that at some point.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactData``1(BepuPhysics.ConstraintHandle,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintHandle">Handle of the contact constraint to extract.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactData``1(BepuPhysics.ConstraintLocation@,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintLocation">Location of the constraint in the solver.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactPrestepAndImpulses``1(BepuPhysics.ConstraintHandle,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintHandle">Handle of the contact constraint to extract.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ContactConstraintAccessor.ExtractContactPrestepAndImpulses``1(BepuPhysics.ConstraintLocation@,BepuPhysics.Solver,``0@)">
+            <summary>
+            Extracts references to data from a contact constraint of the accessor's type.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor to handle the extracted references.</typeparam>
+            <param name="constraintLocation">Location of the constraint in the solver.</param>
+            <param name="solver">Solver in which the constraint lives.</param>
+            <param name="extractor">Extractor to handle the extracted references.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NonconvexContact">
+            <summary>
+            Information about a single contact in a nonconvex collidable pair.
+            Nonconvex pairs can have different surface bases at each contact point, since the contact surface is not guaranteed to be a plane.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Offset">
+            <summary>
+            Offset from the position of collidable A to the contact position. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Depth">
+            <summary>
+            Penetration depth between the two collidables at this contact. Negative values represent separation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.Normal">
+            <summary>
+            Surface basis of the contact. If transformed into a rotation matrix, X and Z represent tangent directions and Y represents the contact normal. Points from collidable B to collidable A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContact.FeatureId">
+            <summary>
+            Id of the features involved in the collision that generated this contact. If a contact has the same feature id as in a previous frame, it is an indication that the
+            same parts of the shape contributed to its creation. This is useful for carrying information from frame to frame.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConvexContact">
+            <summary>
+            Information about a single contact in a convex collidable pair. Convex collidable pairs share one surface basis across the manifold, since the contact surface is guaranteed to be a plane.
+            </summary>    
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.Offset">
+            <summary>
+            Offset from the position of collidable A to the contact position. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.Depth">
+            <summary>
+            Penetration depth between the two collidables at this contact. Negative values represent separation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContact.FeatureId">
+            <summary>
+            Id of the features involved in the collision that generated this contact. If a contact has the same feature id as in a previous frame, it is an indication that the
+            same parts of the shape contributed to its creation. This is useful for carrying information from frame to frame.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.IContactManifold`1.Count">
+            <summary>
+            Gets the number of contacts in the manifold.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.IContactManifold`1.Convex">
+            <summary>
+            Gets whether the contact manifold was created by a pair of convex objects or not. True if convex, false if nonconvex.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetDepth(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetNormal(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's normal. Points from collidable B to collidable A. For convex manifolds that share a normal, all contact indices will simply return a reference to the manifold-wide normal.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's normal (or the manifold-wide normal in a convex manifold).</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetOffset(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.IContactManifold`1.GetFeatureId(`0@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NonconvexContactManifold">
+            <summary>
+            Contains the data associated with a nonconvex contact manifold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContactManifold.OffsetB">
+            <summary>
+            Offset from collidable A to collidable B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexContactManifold.MaximumContactCount">
+            <summary>
+            The maximum number of contacts that can exist within a nonconvex manifold.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetDepth(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetNormal(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's normal. Points from collidable B to collidable A.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's normal.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetOffset(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NonconvexContactManifold.GetFeatureId(BepuPhysics.CollisionDetection.NonconvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConvexContactManifold">
+            <summary>
+            Contains the data associated with a convex contact manifold.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContactManifold.OffsetB">
+            <summary>
+            Offset from collidable A to collidable B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConvexContactManifold.Normal">
+            <summary>
+            Surface normal shared by all contacts. Points from collidable B to collidable A.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetFeatureId(System.Int32)">
+            <summary>
+            Retrieves the feature id associated with a requested contact.
+            </summary>
+            <param name="contactIndex">Index of the contact to grab the feature id of.</param>
+            <returns>Feature id of the requested contact.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetContact(System.Int32,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@,System.Int32@)">
+            <summary>
+            Retrieves a copy of a contact's data.
+            </summary>
+            <param name="contactIndex">Index of the contact to copy data from.</param>
+            <param name="offset">Offset from the first collidable's position to the contact position.</param>
+            <param name="normal">Normal of the contact surface at the requested contact. Points from collidable B to collidable A.</param>
+            <param name="depth">Penetration depth at the requested contact.</param>
+            <param name="featureId">Feature id of the requested contact.
+            Feature ids represent which parts of the collidables formed the contact and can be used to track unique contacts across frames.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetDepth(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's depth.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's depth.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetNormal(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact manifold's normal. Points from collidable B to collidable A. Convex manifolds share a single normal across all contacts.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to the contact manifold's normal.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetOffset(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's offset.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's offset.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ConvexContactManifold.GetFeatureId(BepuPhysics.CollisionDetection.ConvexContactManifold@,System.Int32)">
+            <summary>
+            Pulls a reference to a contact's feature id.
+            </summary>
+            <param name="manifold">Manifold to pull a reference from.</param>
+            <param name="contactIndex">Contact to pull data from.</param>
+            <returns>Reference to a contact's feature id.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Index">
+            <summary>
+            Gets the index of the continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Type">
+            <summary>
+            Gets the type index of the continuation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.CCDContinuationIndex.Exists">
+            <summary>
+            Gets whether this index actually refers to anything. The Type and Index should only be used if this is true.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.DepthRefiner`6">
+            <summary>
+            Incrementally refines a sample direction to approach a local minimum depth between two convex bodies.
+            </summary>
+            <remarks>
+            The DepthRefiner implements a Tootbird search: an incremental algorithm that takes steps towards the Tootbird.
+            The Tootbird is the origin projected on the support plane of the best(lowest depth) support direction observed so far.
+            This uses a simplex that updates with rules similar to a simplified version of GJK.The Tootbird is definitionally not inside the minkowski sum.</remarks>
+            <typeparam name="TShapeA">Type of the first shape.</typeparam>
+            <typeparam name="TShapeWideA">SIMD type of the first shape.</typeparam>
+            <typeparam name="TSupportFinderA">Type providing support sampling for the first shape.</typeparam>
+            <typeparam name="TShapeB">Type of the second shape.</typeparam>
+            <typeparam name="TShapeWideB">SIMD type of the second shape.</typeparam>
+            <typeparam name="TSupportFinderB">Type providing support sampling for the second shape.</typeparam>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.PairMaterialProperties">
+            <summary>
+            Material properties governing the interaction between colliding bodies. Used by the narrow phase to create constraints of the appropriate configuration.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.FrictionCoefficient">
+            <summary>
+            Coefficient of friction to apply for the constraint. Maximum friction force will be equal to the normal force times the friction coefficient.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.MaximumRecoveryVelocity">
+            <summary>
+            Maximum relative velocity along the contact normal at which the collision constraint will recover from penetration. Clamps the velocity goal created from the spring settings.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairMaterialProperties.SpringSettings">
+            <summary>
+            Defines the constraint's penetration recovery spring properties.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairMaterialProperties.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Constructs a pair's material properties.
+            </summary>
+            <param name="frictionCoefficient">Coefficient of friction to apply for the constraint. Maximum friction force will be equal to the normal force times the friction coefficient.</param>
+            <param name="maximumRecoveryVelocity">Maximum relative velocity along the contact normal at which the collision constraint will recover from penetration. Clamps the velocity goal created from the spring settings. </param>
+            <param name="springSettings">Defines the constraint's penetration recovery spring properties.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks">
+            <summary>
+            Defines handlers for narrow phase events.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Performs any required initialization logic after the Simulation instance has been constructed.
+            </summary>
+            <param name="simulation">Simulation that owns these callbacks.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.AllowContactGeneration(System.Int32,BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableReference,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Chooses whether to allow contact generation to proceed for two overlapping collidables.
+            </summary>
+            <param name="workerIndex">Index of the worker that identified the overlap.</param>
+            <param name="a">Reference to the first collidable in the pair.</param>
+            <param name="b">Reference to the second collidable in the pair.</param>
+            <param name="speculativeMargin">Reference to the speculative margin used by the pair.
+            The value was already initialized by the narrowphase by examining the speculative margins of the involved collidables, but it can be modified.</param>
+            <returns>True if collision detection should proceed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.ConfigureContactManifold``1(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,``0@,BepuPhysics.CollisionDetection.PairMaterialProperties@)">
+            <summary>
+            Provides a notification that a manifold has been created for a pair. Offers an opportunity to change the manifold's details. 
+            </summary>
+            <param name="workerIndex">Index of the worker thread that created this manifold.</param>
+            <param name="pair">Pair of collidables that the manifold was detected between.</param>
+            <param name="manifold">Set of contacts detected between the collidables.</param>
+            <param name="pairMaterial">Material properties of the manifold.</param>
+            <returns>True if a constraint should be created for the manifold, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.AllowContactGeneration(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,System.Int32,System.Int32)">
+            <summary>
+            Chooses whether to allow contact generation to proceed for the children of two overlapping collidables in a compound-including pair.
+            </summary>
+            <param name="workerIndex">Index of the worker thread processing this pair.</param>
+            <param name="pair">Parent pair of the two child collidables.</param>
+            <param name="childIndexA">Index of the child of collidable A in the pair. If collidable A is not compound, then this is always 0.</param>
+            <param name="childIndexB">Index of the child of collidable B in the pair. If collidable B is not compound, then this is always 0.</param>
+            <returns>True if collision detection should proceed, false otherwise.</returns>
+            <remarks>This is called for each sub-overlap in a collidable pair involving compound collidables. If neither collidable in a pair is compound, this will not be called.
+            For compound-including pairs, if the earlier call to AllowContactGeneration returns false for owning pair, this will not be called. Note that it is possible
+            for this function to be called twice for the same subpair if the pair has continuous collision detection enabled; 
+            the CCD sweep test that runs before the contact generation test also asks before performing child pair tests.</remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.ConfigureContactManifold(System.Int32,BepuPhysics.CollisionDetection.CollidablePair,System.Int32,System.Int32,BepuPhysics.CollisionDetection.ConvexContactManifold@)">
+            <summary>
+            Provides a notification that a manifold has been created between the children of two collidables in a compound-including pair.
+            Offers an opportunity to change the manifold's details. 
+            </summary>
+            <param name="workerIndex">Index of the worker thread that created this manifold.</param>
+            <param name="pair">Pair of collidables that the manifold was detected between.</param>
+            <param name="childIndexA">Index of the child of collidable A in the pair. If collidable A is not compound, then this is always 0.</param>
+            <param name="childIndexB">Index of the child of collidable B in the pair. If collidable B is not compound, then this is always 0.</param>
+            <param name="manifold">Set of contacts detected between the collidables.</param>
+            <returns>True if this manifold should be considered for the parent pair's contact manifold generation, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.INarrowPhaseCallbacks.Dispose">
+            <summary>
+            Releases any resources held by the callbacks. Called by the owning narrow phase when it is being disposed.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.ISupportFinder`2.HasMargin">
+            <summary>
+            Gets whether the support finder is sampling a shape with a spherical margin that should be applied after a solution is found for the core shape.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ISupportFinder`2.GetMargin(`1@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Margin associated with the shape according to this support finder.
+            </summary>
+            <param name="shape">Shape to find the margin of.</param>
+            <param name="margin">Margin of the shape.</param>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.FaceCollisionFlag">
+            <summary>
+            Flag used to mark a contact as being generated by the face of a triangle in its feature id.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.MinimumDotForFaceCollision">
+            <summary>
+            Minimum dot product between a triangle face and the contact normal for a collision to be considered a triangle face contact.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.Blocked">
+            <summary>
+            True if the manifold associated with this triangle has been blocked due to its detected infringement on another triangle, false otherwise.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.ForceDeletionOnBlock">
+            <summary>
+            True if the triangle did not act as a blocker for any other manifold and so can be removed if it is blocked, false otherwise.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.MeshReduction.TestTriangle.CorrectedNormal">
+            <summary>
+            Normal of a triangle detected as being infringed by the manifold associated with this triangle in mesh space.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryGetContactConstraintAccessor(System.Int32,BepuPhysics.CollisionDetection.ContactConstraintAccessor@)">
+            <summary>
+            Looks up the contact constraint accessor for the given constraint type id if it exists.
+            </summary>
+            <param name="constraintTypeId">Constraint type id to look up a constraint accessor for.</param>
+            <param name="accessor">Accessor for the given type id.</param>
+            <returns>True if the constraint type id refers to a registered accessor, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryExtractSolverContactData``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Tries to extract contact prestep, impulse, and body reference data from the given handle. If it's not a contact constraint, returns false.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor used to collect contact data from the solver.</typeparam>
+            <param name="constraintHandle">Constraint to try to extract data from.</param>
+            <param name="extractor">Extractor used to collect contact data from the solver.</param>
+            <returns>True if the constraint was a contact type, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.TryExtractSolverContactPrestepAndImpulses``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Tries to extract prestep and impulse contact data from the given handle. If it's not a contact constraint, returns false.
+            </summary>
+            <typeparam name="TExtractor">Type of the extractor used to collect contact data from the solver.</typeparam>
+            <param name="constraintHandle">Constraint to try to extract data from.</param>
+            <param name="extractor">Extractor used to collect contact data from the solver.</param>
+            <returns>True if the constraint was a contact type, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.IsContactConstraintType(System.Int32)">
+            <summary>
+            Gets whether a constraint type id maps to a contact constraint.
+            </summary>
+            <param name="constraintTypeId">Id of the constraint to check.</param>
+            <returns>True if the type id refers to a contact constraint. False otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase.SortCollidableReferencesForPair(BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableReference,BepuPhysics.Collidables.CollidableMobility@,BepuPhysics.Collidables.CollidableMobility@,BepuPhysics.Collidables.CollidableReference@,BepuPhysics.Collidables.CollidableReference@)">
+            <summary>
+            Sorts references to guarantee that two collidables in the same pair will always be in the same order.
+            </summary>
+            <param name="a">First collidable reference to sort.</param>
+            <param name="b">First collidable reference to sort.</param>
+            <param name="aMobility">Mobility extracted from collidable A.</param>
+            <param name="bMobility">Mobility extracted from collidable B.</param>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.NarrowPhase`1">
+            <summary>
+            Turns broad phase overlaps into contact manifolds and uses them to manage constraints in the solver.
+            </summary>
+            <typeparam name="TCallbacks">Type of the callbacks to use.</typeparam>
+            <summary>
+            When notified of a new constraint, immediately adds it to the solver.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NarrowPhase`1.ConstraintGeneratorType.Discrete">
+            <summary>
+            Pair which will directly produce constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NarrowPhase`1.ConstraintGeneratorType.Continuous">
+            <summary>
+            Pair which samples a swept location for contacts and needs to be rewound to compute proper speculative depths in a post process.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase`1.PendingConstraintAddCache.FlushSequentially(BepuPhysics.Simulation,BepuPhysics.CollisionDetection.PairCache)">
+            <summary>
+            Flushes pending constraints into the simulation without any form of synchronization. Adds occur in the order of manifold generation.
+            If the contact manifold generation is deterministic, then the result of this add will be deterministic.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.NarrowPhase`1.PendingConstraintAddCache.FlushWithSpeculativeBatches(BepuPhysics.Simulation,BepuPhysics.CollisionDetection.PairCache@)">
+            <summary>
+            Flushes pending constraints into the simulation without any form of synchronization. Adds occur in the order of manifold generation.
+            If the contact manifold generation is deterministic, then the result of this add will be deterministic.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.TwoBodyHandles">
+            <summary>
+            Associated with a pair of two collidables that each are controlled by bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.AwakenerPhaseOne">
+            <summary>
+            Phase one job in the awakener. JobIndex used to identify sub-job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.SortContactConstraintType">
+            <summary>
+            Sorts the constraints of a single type across all workers. Used by deterministic preflushes to schedule adds.
+            Accesses no buffer pools; memory is allocated and returned on main thread.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.SpeculativeConstraintBatchSearch">
+            <summary>
+            Identifies a first guess at the constraint batch to which every new constraint should be added to. 
+            Accesses no buffer pools; memory is allocated and returned on main thread.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.DeterministicConstraintAdd">
+            <summary>
+            Adds constraints to the solver and constraint graph in an order determined by the previous sorts and with the help of the speculatively computed batch targets. Locally sequential.
+            Accesses main thread buffer pool when type batches are created or resized.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.NondeterministicConstraintAdd">
+            <summary>
+            Adds constraints to the solver and constraint graph in an order determined by the collision detection phase. If the collision detection phase is nondeterministic due to threading, then 
+            this will result in nondeterministic adds to the solver.
+            Accesses main thread buffer pool when type batches are created or resized.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.AwakenerPhaseTwo">
+            <summary>
+            Phase two job in the awakener. JobIndex used to identify sub-job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJobType.CheckFreshness">
+            <summary>
+            Check the freshness bytes in a region to remove stale pairs.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.Start">
+            <summary>
+            Start region of a CheckFreshness or SpeculativeConstraintBatchSearch job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.End">
+            <summary>
+            End region of a CheckFreshness or SpeculativeConstraintBatchSearch job.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.TypeIndex">
+            <summary>
+            Narrow phase constraint type index targeted by a SpeculativeConstraintBatchSearch or SortContactConstraintType.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.WorkerIndex">
+            <summary>
+            Index of the worker in which a range of constraints starts. 
+            Used by SpeculativeConstraintBatchSearch.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.WorkerCount">
+            <summary>
+            Number of worker threads containing constraints to read in the SortContactConstraintType and NondeterministicConstraintAdd tasks.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PreflushJob.JobIndex">
+            <summary>
+            Index of the job. Used by AwakenerPhaseOne and AwakenerPhaseTwo tasks.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexReductionChild.OffsetA">
+            <summary>
+            Offset from the origin of the first shape's parent to the child's location in world space. If there is no parent, this is the zero vector.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.NonconvexReductionChild.OffsetB">
+            <summary>
+            Offset from the origin of the second shape's parent to the child's location in world space. If there is no parent, this is the zero vector.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.PairCacheChangeIndex">
+            <summary>
+            Refers to a change in a <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCacheChangeIndex.WorkerIndex">
+            <summary>
+            Index of the <see cref="T:BepuPhysics.CollisionDetection.WorkerPendingPairChanges"/> storing the pending change, if any. If -1, then this pair cache change refers to a change directly to the mapping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCacheChangeIndex.Index">
+            <summary>
+            Index of the change in the cache. For pending changes, refers to the index within the pending cache; for a direct mapping changes, refers to the pair index.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.PairCacheChangeIndex.IsPending">
+            <summary>
+            Gets whether this change is in the <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.ConstraintCache">
+            <summary>
+            Stores information about a contact constraint from the previous timestep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.ConstraintHandle">
+            <summary>
+            Handle of the contact constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId0">
+            <summary>
+            Feature id of the first contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId1">
+            <summary>
+            Feature id of the second contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId2">
+            <summary>
+            Feature id of the third contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.ConstraintCache.FeatureId3">
+            <summary>
+            Feature id of the fourth contact in the constraint associated with this cache.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCache.PairFreshness">
+            <summary>
+            Per-pair 'freshness' flags set when a pair is added or updated by the narrow phase execution. Only initialized for the duration of the narrowphase's execution.
+            </summary>
+            <remarks>
+            This stores one byte per pair. While it could be compressed to 1 bit, that requires manually ensuring thread safety. By using bytes, we rely on the 
+            atomic setting behavior for data types no larger than the native pointer size. Further, smaller sizes actually pay a higher price in terms of increased false sharing.
+            Choice of data type is a balancing act between the memory bandwidth of the post analysis and the frequency of false sharing.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairCache.PrepareFlushJobs(BepuUtilities.Collections.QuickList{BepuPhysics.CollisionDetection.NarrowPhaseFlushJob}@)">
+            <summary>
+            Flush all deferred changes from the last narrow phase execution.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.PairCache.CompleteConstraintAdd``1(BepuPhysics.CollisionDetection.NarrowPhase,BepuPhysics.Solver,``0@,BepuPhysics.CollisionDetection.PairCacheChangeIndex,BepuPhysics.ConstraintHandle,BepuPhysics.CollisionDetection.CollidablePair@)">
+            <summary>
+            Completes the addition of a constraint by filling in the narrowphase's pointer to the constraint and by distributing accumulated impulses.
+            </summary>
+            <typeparam name="TContactImpulses">Count-specialized type containing cached accumulated impulses.</typeparam>
+            <param name="narrowPhase">Narrow phase that triggered the constraint add.</param>
+            <param name="solver">Solver containing the constraint to set the impulses of.</param>
+            <param name="impulses">Warm starting impulses to apply to the contact constraint.</param>
+            <param name="pairCacheChangeIndex">Index of the change associated with this constraint in the <see cref="T:BepuPhysics.CollisionDetection.PairCache"/>.</param>
+            <param name="constraintHandle">Constraint handle associated with the constraint cache being updated.</param>
+            <param name="pair">Collidable pair associated with the new constraint.</param>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.PairCache.ConstraintHandleToPair">
+            <summary>
+            Mapping from constraint handle back to collision detection pair cache locations.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1">
+            <summary>
+            Helps test the broad phase's active and static trees with a custom leaf tester.
+            </summary>
+            <typeparam name="TRayTester">Type used to test rays against leaves.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.#ctor(BepuUtilities.Memory.BufferPool,BepuPhysics.CollisionDetection.BroadPhase,`0,System.Int32)">
+            <summary>
+            Constructs a ray batcher for the broad phase and initializes its backing resources.
+            </summary>
+            <param name="pool">Pool to pull resources from.</param>
+            <param name="broadPhase">Broad phase to be tested.</param>
+            <param name="rayTester">Ray tester used to test leaves found by the broad phase tree traversals.</param>
+            <param name="batcherRayCapacity">Maximum number of rays to execute in each traversal.
+            This should typically be chosen as the highest value which avoids spilling data out of L2 cache.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher to test against the broad phase trees.
+            If the underlying ray batcher hits its maximum capacity, all the accumulated rays will be tested against the broad phase trees and the accumulator will be reset.
+            </summary>
+            <param name="origin">Origin of the ray to test against the tree.</param>
+            <param name="direction">Direction of the ray to test against the tree.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Leaf tests will have access to the id.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Flush">
+            <summary>
+            Tests any accumulated rays against the broad phase trees and then resets the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.BroadPhaseRayBatcher`1.Dispose">
+            <summary>
+            Disposes the underlying batcher resources.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.SimulationRayBatcher`1">
+            <summary>
+            Tests batches of rays against the simulation.
+            </summary>
+            <typeparam name="TRayHitHandler">Type used to handle hits against objects in the simulation.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.SimulationRayBatcher`1.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher to test against the simulation.
+            If the underlying ray batcher hits its maximum capacity, all the accumulated rays will be tested against the simulation and the accumulator will be reset.
+            </summary>
+            <param name="origin">Origin of the ray to test against the simulation.</param>
+            <param name="direction">Direction of the ray to test against the simulation.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Callbacks will have access to the id.</param>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.SimulationRayBatcher`1.Flush">
+            <summary>
+            Tests any accumulated rays against the broad phase trees and then resets the batcher.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.ISweepFilter.AllowTest(System.Int32,System.Int32)">
+            <summary>
+            Checks whether a swept test should be performed for children of swept shapes.
+            </summary>
+            <param name="childA">Index of the child belonging to collidable A.</param>
+            <param name="childB">Index of the child belonging to collidable B.</param>
+            <returns>True if testing should proceed, false otherwise.</returns>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.SweepTask.ShapeTypeIndexA">
+            <summary>
+            Gets the first shape type index associated with the task.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.CollisionDetection.SweepTask.ShapeTypeIndexB">
+            <summary>
+            Gets the second shape type index associated with the task.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.CollisionDetection.UntypedList.Allocate(System.Int32,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates an element in the list, initializing the backing buffer if needed.
+            </summary>
+            <param name="elementSizeInBytes">Number of bytes per element.</param>
+            <param name="minimumElementCount">Minimum size of the backing buffer to create if this is a new allocation.</param>
+            <param name="pool">Pool to pull allocations from.</param>
+            <returns>Index of the element in bytes within the list's buffer.</returns>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.WideRayTester">
+            <summary>
+            Helper class for creating runtime specialized vectorized ray intersection tests with shapes that support broadcasting.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.CollisionDetection.WorkerPendingPairChanges">
+            <summary>
+            Contains the pending pair cache changes created by a single worker during the last execution of narrow phase pair processing.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.WorkerPendingPairChanges.PendingAdds">
+            <summary>
+            The set of pair-pointer associations created by this worker that should be added to the pair mapping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.CollisionDetection.WorkerPendingPairChanges.PendingRemoves">
+            <summary>
+            The set of pairs to remove from the pair cache generated by the worker.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintBatch">
+            <summary>
+            Contains a set of type batches whose constraints share no body references.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.GetTypeBatch(System.Int32)">
+            <summary>
+            Gets a type batch in the batch matching the given type id.
+            Requires that there exists at least one constraint in the type batch.
+            </summary>
+            <param name="typeId">Id of the TypeBatch's type to retrieve.</param>
+            <returns>TypeBatch instance associated with the given type.</returns>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.GetTypeBatchPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the type batch in the batch matching the given type id.
+            Requires that there exists at least one constraint in the type batch.
+            </summary>
+            <param name="typeId">Id of the TypeBatch's type to retrieve.</param>
+            <returns>TypeBatch instance associated with the given type.</returns>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.EnsureTypeBatchCapacities(BepuPhysics.Solver)">
+            <summary>
+            Ensures that all type batches within this constraint batch meet or exceed the size requirements of the per-type capacities defined by the solver.
+            </summary>
+            <param name="solver">Solver to pull minimum capacities from.</param>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.ResizeTypeBatchCapacities(BepuPhysics.Solver)">
+            <summary>
+            Applies the solver-defined minimum capacities to existing type batches.
+            </summary>
+            <param name="solver">Solver to pull minimum capacities from.</param>
+        </member>
+        <member name="M:BepuPhysics.ConstraintBatch.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Releases all memory used by the batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintLocation">
+            <summary>
+            Location in memory where a constraint is stored.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.SetIndex">
+            <summary>
+            Index of the constraint set that owns the constraint. If zero, the constraint is attached to bodies that are awake.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.BatchIndex">
+            <summary>
+            Index of the constraint batch the constraint belongs to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.TypeId">
+            <summary>
+            Type id of the constraint. Used to look up the type batch index in a constraint batch's type id to type batch index table.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintLocation.IndexInTypeBatch">
+            <summary>
+            Index of the constraint in a type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintReference">
+            <summary>
+            Reference to a constraint's memory location in the solver.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintReference.TypeBatch">
+            <summary>
+            Gets a reference to the type batch holding the constraint.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintReference.IndexInTypeBatch">
+            <summary>
+            Index in the type batch where the constraint is allocated.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ConstraintReference.#ctor(BepuPhysics.Constraints.TypeBatch*,System.Int32)">
+            <summary>
+            Creates a new constraint reference from a constraint memory location.
+            </summary>
+            <param name="typeBatchPointer">Pointer to the type batch where the constraint lives.</param>
+            <param name="indexInTypeBatch">Index in the type batch where the constraint is allocated.</param>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.BundleCount">
+            <summary>
+            Gets the total number of bundles across all types and batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.ConstraintCount">
+            <summary>
+            Gets the total number of bundles across all types and batches.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.ConstraintSet.Allocated">
+            <summary>
+            Gets whether this constraint set is allocated. 
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularAxisGearMotor">
+            <summary>
+            Constrains body B's angular velocity around an axis anchored to body A to equal body A's velocity around that axis with a scaling factor applied.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.LocalAxisA">
+            <summary>
+            Axis of rotation in body A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.VelocityScale">
+            <summary>
+            <para>Scale to apply to body A's velocity around the axis to get body B's target velocity.</para>
+            <para>In other words, a VelocityScale of 2 means that body A could have a velocity of 3 while body B has a velocity of 6.</para>
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisGearMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularAxisMotor">
+            <summary>
+            Constrains the relative angular velocity of two bodies around a local axis attached to body A to a target velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.LocalAxisA">
+            <summary>
+            Axis of rotation in body A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.TargetVelocity">
+            <summary>
+            Target relative angular velocity around the axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularAxisMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularHinge">
+            <summary>
+            Angular component of a hinge. Constrains the angular degrees of freedom of two bodies such that they can only rotate relative to each other around the hinge's axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.LocalHingeAxisA">
+            <summary>
+            Hinge axis in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularMotor">
+            <summary>
+            Constrains the relative angular velocity between two bodies to a target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularMotor.TargetVelocityLocalA">
+            <summary>
+            Target relative angular velocity between A and B, stored in A's local space. Target world space angular velocity of B is AngularVelocityA + TargetVelocityLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularServo">
+            <summary>
+            Constrains two bodies to have a target relative rotation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.TargetRelativeRotationLocalA">
+            <summary>
+            The target relative rotation from body A to body B in body A's local space. The constraint tries to maintain OrientationB = TargetRelativeRotationLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AngularSwivelHinge">
+            <summary>
+            Constrains two bodies with the angular component of a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.LocalSwivelAxisA">
+            <summary>
+            Swivel axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AngularSwivelHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AreaConstraint">
+            <summary>
+            Constrains the area of a triangle connecting the centers of three bodies to match a goal area. 
+            Scaled volume computed from ||ab x ac||.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AreaConstraint.TargetScaledArea">
+            <summary>
+            2 times the target area of the triangle. Computed from ||ab x ac||.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.AreaConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.AreaConstraint.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Creates a new area constraint, initializing the target area using a set of initial positions.
+            </summary>
+            <param name="a">Initial position of the first body.</param>
+            <param name="b">Initial position of the second body.</param>
+            <param name="c">Initial position of the third body.</param>
+            <param name="springSettings">Spring settings to apply to the volume constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AreaConstraintTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of area constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocket">
+            <summary>
+            Constrains a point on one body to a point on another body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.LocalOffsetA">
+            <summary>
+            Offset from the center of body A to its attachment in A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.LocalOffsetB">
+            <summary>
+            Offset from the center of body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocket.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketMotor">
+            <summary>
+            Controls the relative linear velocity from the center of body A to an attachment point on body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.LocalOffsetB">
+            <summary>
+            Offset from body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.TargetVelocityLocalA">
+            <summary>
+            Target relative linear velocity between A and B, stored in A's local space. Target world space linear velocity of B is LinearVelocityA + TargetVelocityLocalA * OrientationA.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketMotorTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket motor constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketServo">
+            <summary>
+            Constrains a point on one body to a point on another body.
+            Provides speed and force configuration that the BallSocket joint does not.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.LocalOffsetA">
+            <summary>
+            Offset from the center of body A to its attachment in A's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.LocalOffsetB">
+            <summary>
+            Offset from the center of body B to its attachment in B's local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.BallSocketServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketServoTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket servo constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BallSocketShared">
+            <summary>
+            Provides shared functionality for constraints with jacobians similar to the BallSocket.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceConstraint">
+            <summary>
+            Constrains the center of two bodies to be separated by a goal distance.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceConstraint.TargetDistance">
+            <summary>
+            Target distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceLimit">
+            <summary>
+            Constrains the center of two bodies to be separated by a distance within a range.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.MinimumDistance">
+            <summary>
+            Minimum distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.MaximumDistance">
+            <summary>
+            Maximum distance between the body centers.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.CenterDistanceLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.CenterDistanceLimitTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsFiniteNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite number- neither infinite nor NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is neither infinite nor NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsPositiveNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value greater than zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number greater than zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNonnegativeNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value greater than or equal to zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number greater than or equal to zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNegativeNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value less than zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number less than zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ConstraintChecker.IsNonpositiveNumber(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks if a value is a finite value less than or equal to zero and not NaN.
+            </summary>
+            <param name="value">Value to check.</param>
+            <returns>True if the value is a finite number less than or equal to zero and not NaN, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact1OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 1-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4OneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact1TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 1-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4TypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact2NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 2-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact3NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 3-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4NonconvexTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact nonconvex two body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of 4-contact nonconvex one body manifold constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor">
+            <summary>
+            Callbacks for direct references to the solver's contact constraint data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.ConvexOneBody``2(BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a convex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandle">Body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.ConvexTwoBody``2(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a convex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandleA">First body handle referenced by the constraint.</param>
+            <param name="bodyHandleB">Second body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.NonconvexOneBody``2(BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandle">Body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactDataExtractor.NonconvexTwoBody``2(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="bodyHandleA">First body handle referenced by the constraint.</param>
+            <param name="bodyHandleB">Second body handle referenced by the constraint.</param>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor">
+            <summary>
+            Callbacks for direct references to the solver's contact constraint data. Includes only prestep and impulse data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.ConvexOneBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a convex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.ConvexTwoBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a convex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.NonconvexOneBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex one body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.ISolverContactPrestepAndImpulsesExtractor.NonconvexTwoBody``2(``0@,``1@)">
+            <summary>
+            Provides a reference to a nonconvex two body contact constraint. Constraint data is in the first lane of the direct reference (slot 0 of vectors).
+            </summary>
+            <typeparam name="TPrestep">Type of the prestep data returned.</typeparam>
+            <typeparam name="TAccumulatedImpulses">Type of the accumulated impulses data returned.</typeparam>
+            <param name="prestep">Prestep data associated with the constraint.</param>
+            <param name="impulses">Accumulated impulses associated with the constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TangentFriction">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TangentFriction.ApplyImpulse(BepuPhysics.Constraints.Contact.TangentFriction.Jacobians@,BepuPhysics.BodyInertiaWide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Vector2Wide@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TangentFrictionOneBody">
+            <summary>
+            Handles the tangent friction implementation for one body contact constraints.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TangentFrictionOneBody.ApplyImpulse(BepuPhysics.Constraints.Contact.TangentFrictionOneBody.Jacobians@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Vector2Wide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TwistFriction">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TwistFriction.ApplyImpulse(BepuUtilities.Vector3Wide@,BepuPhysics.BodyInertiaWide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Contact.TwistFrictionOneBody">
+            <summary>
+            Handles the tangent friction implementation.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Contact.TwistFrictionOneBody.ApplyImpulse(BepuUtilities.Vector3Wide@,BepuPhysics.BodyInertiaWide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceLimit">
+            <summary>
+            Constrains points on two bodies to be separated by a distance within a range.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.MinimumDistance">
+            <summary>
+            Minimum distance permitted between the point on A and the point on B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.MaximumDistance">
+            <summary>
+            Maximum distance permitted between the point on A and the point on B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.DistanceLimit.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings@)">
+            <summary>
+            Creates a distance limit description.
+            </summary>
+            <param name="localOffsetA">Local offset from the center of body A to its attachment point.</param>
+            <param name="localOffsetB">Local offset from the center of body B to its attachment point.</param>
+            <param name="minimumDistance">Minimum distance permitted between the point on A and the point on B.</param>
+            <param name="maximumDistance">Maximum distance permitted between the point on A and the point on B.</param>
+            <param name="springSettings">Spring frequency and damping parameters.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceLimitTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceServo">
+            <summary>
+            Constrains points on two bodies to be separated by a goal distance.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.TargetDistance">
+            <summary>
+            Distance that the constraint will try to reach between the attachment points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.DistanceServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.DistanceServo.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuPhysics.Constraints.SpringSettings@,BepuPhysics.Constraints.ServoSettings@)">
+            <summary>
+            Creates a distance servo description.
+            </summary>
+            <param name="localOffsetA">Local offset from the center of body A to its attachment point.</param>
+            <param name="localOffsetB">Local offset from the center of body B to its attachment point.</param>
+            <param name="targetDistance">Distance that the constraint will try to reach between the attachment points.</param>
+            <param name="springSettings">Spring frequency and damping parameters.</param>
+            <param name="servoSettings">Servo control parameters.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DistanceServoTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of distance servos.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.FourBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IFourBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a four body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IFourBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.FourBodyTypeProcessor`11">
+            <summary>
+            Shared implementation across all four body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Hinge">
+            <summary>
+            Constrains two bodies with a hinge. Equivalent to a BallSocket constraint and an AngularHinge constraint solved together.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalHingeAxisA">
+            <summary>
+            Hinge axis in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Hinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBatchIntegrationMode">
+            <summary>
+            Marks a type as determining the integration mode for a solver batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldAlwaysIntegrate">
+            <summary>
+            The batch was determined to have only constraints with integration responsibilities, so there's no need to check.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldNeverIntegrate">
+            <summary>
+            The batch was determined to have no constraints with integration responsibilities, so there's no need to check.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.BatchShouldConditionallyIntegrate">
+            <summary>
+            The batch was determined to have some constraints with integration responsibilities.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBatchPoseIntegrationAllowed">
+            <summary>
+            Marks a type as determining whether pose integration should be performed on bodies within the constraint batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AllowPoseIntegration">
+            <summary>
+            Marks a batch as integrating poses for any bodies with integration responsibility within the constraint batch.
+            Constraints which need to be updated in response to pose integration will also have their UpdateForNewPose function called.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.DisallowPoseIntegration">
+            <summary>
+            Marks a batch as not integrating poses for any bodies within the constraint batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IBodyAccessFilter">
+            <summary>
+            Constrains which body properties should be accessed in a body during constraint data gathering/scattering.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherPosition">
+            <summary>
+            Gets whether position is loaded by the constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherOrientation">
+            <summary>
+            Gets whether orientation is loaded by the constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherMass">
+            <summary>
+            Gets whether body mass is loaded by this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.GatherInertiaTensor">
+            <summary>
+            Gets whether body inertia tensor is loaded by this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.AccessLinearVelocity">
+            <summary>
+            Gets whether to load or store body linear velocity in this constraint.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IBodyAccessFilter.AccessAngularVelocity">
+            <summary>
+            Gets whether to load or store body linear velocity in this constraint.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AccessAll">
+            <summary>
+            Marks all body properties as necessary for gather/scatter.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.AccessNoInertia">
+            <summary>
+            Used for kinematic integration; the inertias are known ahead of time and there's no reason to gather them.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IConstraintDescription`1">
+            <summary>
+            Marks a type as a description of a constraint associated with a particular batch.
+            </summary>
+            <remarks>
+            Note that one batch may have multiple description types associated with it, each one potentially offering a different subset of properties or translation logic.
+            </remarks>
+            <typeparam name="TDescription">Type of the description object.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.ApplyDescription(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32)">
+            <summary>
+            Changes the batch-held memory at a given location to match the given description.
+            </summary>
+            <param name="batch">Batch to modify.</param>
+            <param name="bundleIndex">Index of the target constraint's bundle.</param>
+            <param name="innerIndex">Index of the target constraint within its bundle.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.BuildDescription(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,`0@)">
+            <summary>
+            Creates a description from the batch-held memory at a given location.
+            </summary>
+            <param name="batch">Batch to read.</param>
+            <param name="bundleIndex">Index of the source constraint's bundle.</param>
+            <param name="innerIndex">Index of the source constraint within its bundle.</param>
+            <param name="description">Description of the constraint.</param>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IConstraintDescription`1.ConstraintTypeId">
+            <summary>
+            Gets the type id of the constraint that this is a description of.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IConstraintDescription`1.TypeProcessorType">
+            <summary>
+            Gets the type of the type batch which contains described constraints.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.IConstraintDescription`1.CreateTypeProcessor">
+            <summary>
+            Creates a type processor for this constraint type.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IOneBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a one body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ITwoBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a two body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IThreeBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a three body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IFourBodyConstraintDescription`1">
+            <summary>
+            Marks a type as a four body constraint description.
+            </summary>
+            <typeparam name="TDescription">Type of the description.</typeparam>
+            <remarks>This and the other body-count aware interfaces exist to give the compiler a way to report errors when using Solver.Add with different body counts.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Constraints.Inequality2Body1DOF.ApplyImpulse(BepuPhysics.Constraints.Projection2Body1DOF@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuPhysics.BodyVelocityWide@,BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Transforms an impulse from constraint space to world space, uses it to modify the cached world space velocities of the bodies.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisLimit">
+            <summary>
+            Constrains points on two bodies to a range of offsets from each other along a direction anchored to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.LocalAxis">
+            <summary>
+            Direction of the motorized axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.MinimumOffset">
+            <summary>
+            Minimum offset along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.MaximumOffset">
+            <summary>
+            Maximum offset along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisMotor">
+            <summary>
+            Constrains points on two bodies to move relative to each other along a direction.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.LocalAxis">
+            <summary>
+            Direction of the motorized axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.TargetVelocity">
+            <summary>
+            Target relative velocity along the world axis between A and B's anchor points.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.LinearAxisServo">
+            <summary>
+            Constrains points on two bodies to be on a plane defined in the local space of one of the bodies.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.LocalPlaneNormal">
+            <summary>
+            Direction of the plane normal in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.TargetOffset">
+            <summary>
+            Target offset from A's plane anchor to B's anchor along the plane normal.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.LinearAxisServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.MotorSettings">
+            <summary>
+            Defines some of the shared behavior across motor constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.MotorSettings.MaximumForce">
+            <summary>
+            Maximum amount of force the motor can apply in one unit of time.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.MotorSettings.Damping">
+            <summary>
+            Mass-scaled damping constant. If you want to simulate a viscous damping coefficient of D with an object of mass M, set this damping value to D / M.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.MotorSettings.Softness">
+            <summary>
+            Gets or sets how soft the constraint is. Values range from 0 to infinity. Softness is inverse damping; 0 is perfectly rigid, 1 is very soft, Number.MaxValue is effectively nonexistent.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.MotorSettings.Validate(BepuPhysics.Constraints.MotorSettings@)">
+            <summary>
+            Checks if a settings instance has valid nonnegative values.
+            </summary>
+            <param name="settings">Instance to examine.</param>
+            <returns>True if the settings are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.MotorSettings.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Defines settings for a motor constraint.
+            </summary>
+            <param name="maximumForce">Maximum amount of force the motor can apply in one unit of time.</param>
+            <param name="softness">Gets or sets how soft the constraint is. Values range from 0 to infinity. Softness is inverse damping; 0 is perfectly rigid, 1 is very soft, Number.MaxValue is effectively nonexistent.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyAngularMotor">
+            <summary>
+            Constrains the angular velocity of one body to the target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularMotor.TargetVelocity">
+            <summary>
+            Target angular velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyAngularServo">
+            <summary>
+            Constrains a single body to a target orientation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.TargetOrientation">
+            <summary>
+            Target orientation of the constraint.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyAngularServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyLinearMotor">
+            <summary>
+            Constrains a point on a body to have a target linear velocity.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.LocalOffset">
+            <summary>
+            Offset to the attachment point in the local space of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.TargetVelocity">
+            <summary>
+            Target velocity of the attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyLinearServo">
+            <summary>
+            Constrains a point on a body to a target location.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.LocalOffset">
+            <summary>
+            Offset to the attachment point in the local space of the body.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.Target">
+            <summary>
+            Target position.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.OneBodyLinearServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IOneBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IOneBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.OneBodyTypeProcessor`5">
+            <summary>
+            Shared implementation across all one body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.PointOnLineServo">
+            <summary>
+            Constrains a point on body B to be on a line attached to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.LocalDirection">
+            <summary>
+            Direction of the line in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.PointOnLineServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.ServoSettings.Default">
+            <summary>
+            Gets settings representing a servo with unlimited force, speed, and no base speed.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.ServoSettings.Validate(BepuPhysics.Constraints.ServoSettings@)">
+            <summary>
+            Checks servo settings to ensure valid values.
+            </summary>
+            <param name="settings">Settings to check.</param>
+            <returns>True if the settings contain valid values, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettingsWide.ComputeSpringiness(BepuPhysics.Constraints.SpringSettingsWide@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes springiness values for a set of constraints.
+            </summary>
+            <param name="settings">Spring settings associated with the constraints.</param>
+            <param name="dt">Duration of the time step.</param>
+            <param name="positionErrorToVelocity">The multiplier applied to error to get bias velocity.</param>
+            <param name="effectiveMassCFMScale">Scaling factor to apply to the effective mass to get the softened effective mass.</param>
+            <param name="softnessImpulseScale">Scaling factor to apply to the accumulated impulse during the solve to soften the target velocity.</param>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SpringSettings.AngularFrequency">
+            <summary>
+            Target number of undamped oscillations per unit of time, scaled by 2 * PI.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SpringSettings.TwiceDampingRatio">
+            <summary>
+            Twice the ratio of the spring's actual damping to its critical damping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SpringSettings.Frequency">
+            <summary>
+            Gets or sets the target number of undamped oscillations per unit of time.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SpringSettings.DampingRatio">
+            <summary>
+            Gets or sets the ratio of the spring's actual damping to its critical damping. 0 is undamped, 1 is critically damped, and higher values are overdamped.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettings.Validate(BepuPhysics.Constraints.SpringSettings@)">
+            <summary>
+            Checks if a spring settings instance contains valid values.
+            </summary>
+            <param name="springSettings">Settings to check.</param>
+            <returns>True if the spring settings are valid, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.SpringSettings.#ctor(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new spring settings instance.
+            </summary>
+            <param name="frequency">Target number of undamped oscillations per unit of time.</param>
+            <param name="dampingRatio">Ratio of the spring's actual damping to its critical damping. 0 is undamped, 1 is critically damped, and higher values are overdamped.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.SwingLimit">
+            <summary>
+            Restricts axes attached to two bodies to fall within a maximum swing angle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.AxisLocalA">
+            <summary>
+            Axis attached to body A in its local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.AxisLocalB">
+            <summary>
+            Axis attached to body B in its local space.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.MinimumDot">
+            <summary>
+            Minimum dot product between the world space A and B axes that the constraint attempts to maintain.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwingLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.SwingLimit.MaximumSwingAngle">
+            <summary>
+            Gets or sets the maximum swing angle that the constraint allows between world axis A and B. Based on the MinimumDot field.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.SwivelHinge">
+            <summary>
+            Constrains two bodies with a swivel hinge that allows rotation around two axes, like a laptop monitor hinge that allows flipping the screen. Equivalent to a BallSocket constraint and an AngularSwivelHinge constraint solved together.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalOffsetA">
+            <summary>
+            Local offset from the center of body A to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalSwivelAxisA">
+            <summary>
+            Swivel axis in the local space of body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalOffsetB">
+            <summary>
+            Local offset from the center of body B to its attachment point.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.LocalHingeAxisB">
+            <summary>
+            Hinge axis in the local space of body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.SwivelHinge.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ThreeBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.IThreeBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a three body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.IThreeBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ThreeBodyTypeProcessor`9">
+            <summary>
+            Shared implementation across all three body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistLimit">
+            <summary>
+            Constrains two bodies' rotations around attached twist axes to a range of permitted twist angles.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.LocalBasisA">
+            <summary>
+            Local space basis attached to body A against which to measure body B's transformed axis. Expressed as a 3x3 rotation matrix, the X axis corresponds with 0 degrees, 
+            the Y axis corresponds to 90 degrees, and the Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.LocalBasisB">
+            <summary>
+            Local space basis attached to body B that will be measured against body A's basis.
+            Expressed as a 3x3 rotation matrix, the transformed X axis will be measured against A's X and Y axes. The Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.MinimumAngle">
+            <summary>
+            Minimum angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.MaximumAngle">
+            <summary>
+            Maximum angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistLimit.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistMotor">
+            <summary>
+            Constrains the twist velocity between two bodies to a target.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.LocalAxisA">
+            <summary>
+            Local twist axis attached to body A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.LocalAxisB">
+            <summary>
+            Local twist axis attached to body B.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.TargetVelocity">
+            <summary>
+            Goal relative twist velocity around the body axes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistMotor.Settings">
+            <summary>
+            Motor control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwistServo">
+            <summary>
+            Constrains two bodies to maintain a target twist angle around body-attached axes.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.LocalBasisA">
+            <summary>
+            Local space basis attached to body A against which to measure body B's transformed axis. Expressed as a 3x3 rotation matrix, the X axis corresponds with 0 degrees, 
+            the Y axis corresponds to 90 degrees, and the -Z axis is the twist axis. When viewed along the twist axis, positive change in angle causes counterclockwise rotation in right handed coordinates.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.LocalBasisB">
+            <summary>
+            Local space basis attached to body B that will be measured against body A's basis.
+            Expressed as a 3x3 rotation matrix, the transformed X axis will be measured against A's X and Y axes. The Z axis is the twist axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.TargetAngle">
+            <summary>
+            Target angle between B's axis to measure and A's measurement axis. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.TwistServo.ServoSettings">
+            <summary>
+            Servo control parameters.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwoBodyReferences">
+            <summary>
+            A constraint's body references. Stored separately from the iteration data since it is accessed by both the prestep and solve.
+            Two address streams isn't much of a problem for prefetching.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ITwoBodyConstraintFunctions`2">
+            <summary>
+            Prestep, warm start and solve iteration functions for a two body constraint type.
+            </summary>
+            <typeparam name="TPrestepData">Type of the prestep data used by the constraint.</typeparam>
+            <typeparam name="TAccumulatedImpulse">Type of the accumulated impulses used by the constraint.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Constraints.ITwoBodyConstraintFunctions`2.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this constraint type requires incremental updates for each substep taken beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TwoBodyTypeProcessor`7">
+            <summary>
+            Shared implementation across all two body constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeBatch">
+            <summary>
+            Stores the raw AOSOA formatted data associated with constraints in a type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeProcessor">
+            <summary>
+            Superclass of constraint type batch processors. Responsible for interpreting raw type batches for the purposes of bookkeeping and solving.
+            </summary>
+            <remarks>
+            <para>This class holds no actual state of its own. A solver creates a unique type processor for each registered constraint type, and all instances are held in untyped memory.
+            Splitting the functionality from the data allows for far fewer GC-tracked instances and allows the raw data layout to be shared more easily.</para>
+            <para>For example, sleeping simulation islands store type batches, but they are created and used differently- and for convenience, they are stored on a per-island basis.
+            Using the same system but with reference type TypeBatches, tens of thousands of inactive islands would imply tens of thousands of GC-tracked objects.</para>
+            That's not acceptable, so here we are. 
+            <para>Conceptually, you can think of the solver's array of TypeProcessors like C function pointers.</para>
+            </remarks>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.BodiesPerConstraint">
+            <summary>
+            Gets the number of bodies associated with each constraint in this type processor.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.ConstrainedDegreesOfFreedom">
+            <summary>
+            Gets the number of degrees of freedom that each constraint in this type processor constrains. Equal to the number of entries in the accumulated impulses.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.AllocateInTypeBatch(BepuPhysics.Constraints.TypeBatch@,BepuPhysics.ConstraintHandle,System.Span{System.Int32},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates a slot in the batch, assuming the batch is not a fallback batch.
+            </summary>
+            <param name="typeBatch">Type batch to allocate in.</param>
+            <param name="handle">Handle of the constraint to allocate. Establishes a link from the allocated constraint to its handle.</param>
+            <param name="encodedBodyIndices">List of body indices (not handles!) with count equal to the type batch's expected number of involved bodies.</param>
+            <param name="pool">Allocation provider to use if the type batch has to be resized.</param>
+            <returns>Index of the slot in the batch.</returns>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.AllocateInTypeBatchForFallback(BepuPhysics.Constraints.TypeBatch@,BepuPhysics.ConstraintHandle,System.Span{System.Int32},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Allocates a slot in the batch, assuming the batch is a fallback batch.
+            </summary>
+            <param name="typeBatch">Type batch to allocate in.</param>
+            <param name="handle">Handle of the constraint to allocate. Establishes a link from the allocated constraint to its handle.</param>
+            <param name="encodedBodyIndices">List of body indices (not handles!) with count equal to the type batch's expected number of involved bodies.</param>
+            <param name="pool">Allocation provider to use if the type batch has to be resized.</param>
+            <returns>Index of the slot in the batch.</returns>
+        </member>
+        <member name="T:BepuPhysics.Constraints.TypeProcessor.ActiveKinematicFlaggedBodyHandleCollector">
+            <summary>
+            Collects body references from active constraints and converts them into properly flagged constraint kinematic body handles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32)">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32,System.Span{BepuPhysics.BodyHandle},System.Span{System.Int32})">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+            <param name="dynamicBodyHandles">Set of body handles in the constraint referring to dynamic bodies.</param>
+            <param name="encodedBodyIndices">Set of encoded body indices to use in the new constraint allocation.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor.UpdateForBodyMemoryMove(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Updates a type batch's body index references for the movement of a body in memory.
+            </summary>
+            <param name="typeBatch">Type batch containing a constraint that references the body.</param>
+            <param name="indexInTypeBatch">Index of the constraint in the type batch.</param>
+            <param name="bodyIndexInConstraint">Index within the constraint of the body.</param>
+            <param name="newBodyLocation">New index of the body in the bodies active set.</param>
+            <returns>True if the body being moved was kinematic according to the constraint's reference.</returns>
+        </member>
+        <member name="P:BepuPhysics.Constraints.TypeProcessor.RequiresIncrementalSubstepUpdates">
+            <summary>
+            Gets whether this type requires incremental updates for each substep in a frame beyond the first.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.ISortKeyGenerator`1">
+            <summary>
+            Defines a function that creates a sort key from body references in a type batch. Used by constraint layout optimization.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.Move(`0@,`1@,`2@,BepuPhysics.ConstraintHandle,System.Int32,`0@,`1@,`2@,BepuPhysics.ConstraintHandle@,System.Int32,System.Int32,BepuUtilities.Memory.Buffer{BepuPhysics.ConstraintLocation}@)">
+            <summary>
+            Overwrites all the data in the target constraint slot with source data.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.Remove(BepuPhysics.Constraints.TypeBatch@,System.Int32,BepuUtilities.Memory.Buffer{BepuPhysics.ConstraintLocation}@,System.Boolean)">
+            <summary>
+            Removes a constraint from the batch.
+            </summary>
+            <param name="typeBatch">Type batch to remove a constraint from.</param>
+            <param name="index">Index of the constraint to remove.</param>
+            <param name="handlesToConstraints">The handle to constraint mapping used by the solver that could be modified by a swap on removal.</param>
+            <param name="isFallback">True if the type batch being removed from belongs to the fallback batch, false otherwise.</param>
+        </member>
+        <member name="M:BepuPhysics.Constraints.TypeProcessor`3.TransferConstraint(BepuPhysics.Constraints.TypeBatch@,System.Int32,System.Int32,BepuPhysics.Solver,BepuPhysics.Bodies,System.Int32,System.Span{BepuPhysics.BodyHandle},System.Span{System.Int32})">
+            <summary>
+            Moves a constraint from one ConstraintBatch's TypeBatch to another ConstraintBatch's TypeBatch of the same type.
+            </summary>
+            <param name="sourceTypeBatch">Source type batch to transfer the constraint out of.</param>
+            <param name="sourceBatchIndex">Index of the batch that owns the type batch that is the source of the constraint transfer.</param>
+            <param name="indexInTypeBatch">Index of the constraint to move in the current type batch.</param>
+            <param name="solver">Solver that owns the batches.</param>
+            <param name="bodies">Bodies set that owns all the constraint's bodies.</param>
+            <param name="targetBatchIndex">Index of the ConstraintBatch in the solver to copy the constraint into.</param>
+            <param name="dynamicBodyHandles">Set of body handles in the constraint referring to dynamic bodies.</param>
+            <param name="encodedBodyIndices">Set of encoded body indices to use in the new constraint allocation.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.VolumeConstraint">
+            <summary>
+            Constrains the volume of a tetrahedron connecting the centers of four bodies to match a goal volume. 
+            Scaled volume computed from (ab x ac) * ad; the volume may be negative depending on the winding of the tetrahedron.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.VolumeConstraint.TargetScaledVolume">
+            <summary>
+            6 times the target volume of the tetrahedra. Computed from (ab x ac) * ad; this may be negative depending on the winding of the tetrahedron.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.VolumeConstraint.SpringSettings">
+            <summary>
+            Spring frequency and damping parameters.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Constraints.VolumeConstraint.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Constraints.SpringSettings)">
+            <summary>
+            Creates a new volume constraint, initializing the target volume using a set of initial positions.
+            </summary>
+            <param name="a">Initial position of the first body.</param>
+            <param name="b">Initial position of the second body.</param>
+            <param name="c">Initial position of the third body.</param>
+            <param name="d">Initial position of the fourth body.</param>
+            <param name="springSettings">Spring settings to apply to the volume constraint.</param>
+        </member>
+        <member name="T:BepuPhysics.Constraints.VolumeConstraintTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of volume constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.Weld">
+            <summary>
+            Constrains two bodies to maintain a relative position and orientation. All six degrees of freedom are solved simultaneously.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.LocalOffset">
+            <summary>
+            Offset from body A to body B in the local space of A.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.LocalOrientation">
+            <summary>
+            Target orientation of body B in body A's local space. 
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Constraints.Weld.SpringSettings">
+            <summary>
+            Springiness of the position and orientation constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Constraints.WeldTypeProcessor">
+            <summary>
+            Handles the solve iterations of a bunch of ball socket constraints.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.DefaultTimestepper">
+            <summary>
+            Updates the simulation in the order of: sleeper -> predict body bounding boxes -> collision detection -> substepping solve -> data structure optimization.
+            Each substep of the solve simulates and integrates a sub-timestep of length dt/substepCount.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.Slept">
+            <summary>
+            Fires after the sleeper completes and before bodies are integrated.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.BeforeCollisionDetection">
+            <summary>
+            Fires after bodies have their bounding boxes updated for the frame's predicted motion and before collision detection.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.CollisionsDetected">
+            <summary>
+            Fires after all collisions have been identified, but before the substep loop begins.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.DefaultTimestepper.ConstraintsSolved">
+            <summary>
+            Fires after the solver executes and before the final integration step.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.DefaultTypes">
+            <summary>
+            Helper class to register the default types within a simulation instance.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.RegisterDefaults(BepuPhysics.Solver,BepuPhysics.CollisionDetection.NarrowPhase)">
+            <summary>
+            Registers the set of constraints that are packaged in the engine.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.CreateDefaultCollisionTaskRegistry">
+            <summary>
+            Creates a task registry containing the default collision pair types.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.DefaultTypes.CreateDefaultSweepTaskRegistry">
+            <summary>
+            Creates a task registry containing the default sweep task types.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.BodyHandle">
+            <summary>
+            Unique identifier of a body belonging to a simulation's Bodies collection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.BodyHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the body. 
+            This value will not (and must not) change during the body's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.StaticHandle">
+            <summary>
+            Unique identifier of a static belonging to a simulation's Statics collection.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the body. 
+            This value will not (and must not) change during the body's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ConstraintHandle">
+            <summary>
+            Unique identifier of a constraint belonging to a simulation's Solver.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.ConstraintHandle.Value">
+            <summary>
+            Index in the handle-to-memory mapping table used to look up the current memory location of the constraint. 
+            This value will not (and must not) change during the constraint's lifespan, but the memory that the table points to could change.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintBodyHandleCollector">
+            <summary>
+            Collects body handles associated with an active constraint as integers.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintDynamicBodyHandleCollector">
+            <summary>
+            Collects body handles associated with an active constraint as integers.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.ActiveConstraintBodyIndexCollector">
+            <summary>
+            Collects body indices associated with an active constraint. Encoded metadata is stripped.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.PassthroughReferenceCollector">
+            <summary>
+            Directly reports references as provided by whatever is being enumerated.
+            For example, when used directly with the TypeProcessor's EnumerateConnectedRawBodyReferences, if the constraint is active, this will report encoded body indices. If the constraint is sleeping, this will report body handles.
+            If used with an enumerator that does filtering, the filtered results will be reported unmodified.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Helpers">
+            <summary>
+            Shared miscellaneous helper functions.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.HashDiagnosticType">
+            <summary>
+            Hardcoded hash types used by invasive hash diagnostics.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.InvasiveHashDiagnostics">
+            <summary>
+            Helper diagnostics class for monitoring internal state determinism across runs.
+            Typically used by inserting tests into engine internals.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.InvasiveHashDiagnostics.HashTypeCount">
+            <summary>
+            This is meant as an internal diagnostic utility, so hardcoding some things is totally fine.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.IslandAwakener">
+            <summary>
+            Provides functionality for efficiently waking up sleeping bodies.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenBody(BepuPhysics.BodyHandle)">
+            <summary>
+            Wakes up a body if it is sleeping. All bodies that can be found by traversing the constraint graph from the body will also be awakened.
+            If the body is already awake, this does nothing.
+            </summary>
+            <param name="bodyHandle">Handle of the body to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenConstraint(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Wakes up any sleeping bodies associated with a constraint. All bodies that can be found by traversing the constraint graph from the constraint referenced bodies will also be awakened.
+            If all bodies associated with the constraint are already awake, this does nothing.
+            </summary>
+            <param name="constraintHandle">Handle of the constraint to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenSet(System.Int32)">
+            <summary>
+            Wakes up all bodies and constraints within a set. Doesn't do anything if the set is awake (index zero).
+            </summary>
+            <param name="setIndex">Index of the set to awaken.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandAwakener.AwakenSets(BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Awakens a list of set indices.
+            </summary>
+            <param name="setIndices">List of set indices to wake up.</param>
+            <param name="threadDispatcher">Thread dispatcher to use when waking the bodies. Pass null to run on a single thread.</param>
+        </member>
+        <member name="T:BepuPhysics.IslandScaffold">
+            <summary>
+            Represents the constraint batch structure and all references in an island. Holds everything necessary to create and gather a full island.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TestedFractionPerFrame">
+            <summary>
+            Gets or sets the multiplier applied to the active body count used to calculate the number of sleep traversals in a given timestep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TargetSleptFraction">
+            <summary>
+            Gets or sets the fraction of the active set to target as the number of bodies slept in a given frame.
+            This is only a goal; the actual number of slept bodies may be more or less.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IslandSleeper.TargetTraversedFraction">
+            <summary>
+            Gets or sets the fraction of the active set to target as the number of bodies traversed for sleeping in a given frame.
+            This is only a goal; the actual number of traversed bodies may be more or less.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.CollectIsland``1(BepuUtilities.Memory.BufferPool,System.Int32,``0@,BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.Collections.QuickList{BepuPhysics.ConstraintHandle}@)">
+            <summary>
+            Traverses the active constraint graph collecting bodies that match a predicate. If any body visited during the traversal fails to match the predicate, the traversal terminates.
+            </summary>
+            <typeparam name="TTraversalPredicate">Type of the predicate to test each body index with.</typeparam>
+            <param name="pool">Pool to allocate temporary collections from.</param>
+            <param name="startingActiveBodyIndex">Index of the active body to start the traversal at.</param>
+            <param name="predicate">Predicate to test each traversed body with. If any body results in the predicate returning false, the traversal stops and the function returns false.</param>
+            <param name="bodyIndices">List to fill with body indices traversed during island collection. Bodies failing the predicate will not be included.</param>
+            <param name="constraintHandles">List to fill with constraint handles traversed during island collection.</param>
+            <returns>True if the simulation graph was traversed without ever finding a body that made the predicate return false. False if any body failed the predicate.
+            The bodyIndices and constraintHandles lists will contain all traversed predicate-passing bodies and constraints.</returns>
+        </member>
+        <member name="F:BepuPhysics.IslandSleeper.GatheringJob.IsBodyJob">
+            <summary>
+            If true, this job relates to a subset of body indices. If false, this job relates to a subset of constraint handles.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.Sleep(BepuUtilities.Collections.QuickList{System.Int32}@,BepuUtilities.IThreadDispatcher,System.Boolean)">
+            <summary>
+            Forcefully sleeps a list of bodies and all bodies that can be reached by traversing the constraint graph from those bodies.
+            </summary>
+            <param name="bodyIndices">List of body indices to sleep.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for the sleep attempt, if any. If null, sleep is performed on the calling thread.</param>
+            <param name="deterministic">True if the sleep should produce deterministic results at higher cost, false otherwise.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.Sleep(System.Int32)">
+            <summary>
+            Forces a body and all bodies that can be found by traversing the constraint graph from that body to go to sleep.
+            </summary>
+            <param name="bodyIndex">Index of the body to sleep in the active set.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.EnsureSetsCapacity(System.Int32)">
+            <summary>
+            Ensures that the Bodies, Solver, and NarrowPhase can hold at least the given number of sets (BodySets for the Bodies collection, ConstraintSets for the Solver, PairSubcaches for the NarrowPhase.PairCache).
+            </summary>
+            <param name="setsCapacity">Number of sets to guarantee space for.</param>
+        </member>
+        <member name="M:BepuPhysics.IslandSleeper.ResizeSetsCapacity(System.Int32)">
+            <summary>
+            Ensures that the Bodies and Solver can hold the given number of sets. 
+            If the existing allocation is smaller than the requested sets capacity, the allocation will be enlarged.
+            If the existing allocation is larger than both the existing potentially allocated set range and the requested sets capacity, the allocation will be shrunk.
+            Shrinks will never cause an existing set to be lost.
+            </summary>
+            <param name="setsCapacity">Target number of sets to allocate space for.</param>
+        </member>
+        <member name="T:BepuPhysics.TimestepperStageHandler">
+            <summary>
+            Delegate used by ITimesteppers for their stage callbacks.
+            </summary>
+            <param name="dt">Time step duration.</param>
+            <param name="threadDispatcher">Thread dispatcher used for this timestep.</param>
+        </member>
+        <member name="T:BepuPhysics.ITimestepper">
+            <summary>
+            Defines a type capable of updating the simulation state for a given elapsed time.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.ITimestepper.BeforeCollisionDetection">
+            <summary>
+            Callbacks to execute immediately before collision detection executes.
+            </summary>
+        </member>
+        <member name="E:BepuPhysics.ITimestepper.CollisionsDetected">
+            <summary>
+            Callbacks to execute after collision detection completes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ITimestepper.Timestep(BepuPhysics.Simulation,BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Performs one timestep of the given length.
+            </summary>
+            <param name="simulation">Simulation to be stepped forward in time.</param>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="T:BepuPhysics.LocalSpinWait">
+            <summary>
+            Behaves like a framework SpinWait, but never voluntarily relinquishes the timeslice to off-core threads.
+            </summary>
+            <remarks><para>There are two big reasons for using this over the regular framework SpinWait:</para>
+            <para>1) The framework spinwait relies on spins for quite a while before resorting to any form of timeslice surrender.
+            Empirically, this is not ideal for the solver- if the sync condition isn't met within several nanoseconds, it will tend to be some microseconds away.
+            This spinwait is much more aggressive about moving to yields.</para>
+            <para>2) After a number of yields, the framework SpinWait will resort to calling Sleep.
+            This widens the potential set of schedulable threads to those not native to the current core. If we permit that transition, it is likely to evict cached solver data.
+            (For very large simulations, the use of Sleep(0) isn't that concerning- every iteration can be large enough to evict all of cache- 
+            but there still isn't much benefit to using it over yields in context.)</para>
+            <para>SpinWait will also fall back to Sleep(1) by default which obliterates performance, but that behavior can be disabled.</para>
+            <para>Note that this isn't an indication that the framework SpinWait should be changed, but rather that the solver's requirements are extremely specific and don't match
+            a general purpose solution very well.</para></remarks>
+        </member>
+        <member name="T:BepuPhysics.AngularIntegrationMode">
+            <summary>
+            Defines how a pose integrator should handle angular velocity integration.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.Nonconserving">
+            <summary>
+            Angular velocity is directly integrated and does not change as the body pose changes. Does not conserve angular momentum.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.ConserveMomentum">
+            <summary>
+            Approximately conserves angular momentum by updating the angular velocity according to the change in orientation. Does a decent job for gyroscopes, but angular velocities will tend to drift towards a minimal inertia axis.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.AngularIntegrationMode.ConserveMomentumWithGyroscopicTorque">
+            <summary>
+            Approximately conserves angular momentum by including an implicit gyroscopic torque. Best option for Dzhanibekov effect simulation, but applies a damping effect that can make gyroscopes less useful.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.IPoseIntegratorCallbacks">
+            <summary>
+            Defines a type that handles callbacks for body pose integration.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.AngularIntegrationMode">
+            <summary>
+            Gets how the pose integrator should handle angular velocity integration.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.AllowSubstepsForUnconstrainedBodies">
+            <summary>
+            Gets whether the integrator should use only one step for unconstrained bodies when using a substepping solver.
+            If true, unconstrained bodies use a single step of length equal to the dt provided to <see cref="M:BepuPhysics.Simulation.Timestep(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)"/>. 
+            If false, unconstrained bodies will be integrated with the same number of substeps as the constrained bodies in the solver.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocityForKinematics">
+            <summary>
+            Gets whether the velocity integration callback should be called for kinematic bodies.
+            If true, <see cref="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)"/> will be called for bundles including kinematic bodies.
+            If false, kinematic bodies will just continue using whatever velocity they have set.
+            Most use cases should set this to false.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.Initialize(BepuPhysics.Simulation)">
+            <summary>
+            Performs any required initialization logic after the Simulation instance has been constructed.
+            </summary>
+            <param name="simulation">Simulation that owns these callbacks.</param>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.PrepareForIntegration(BepuUtilities.Numerics.Number)">
+            <summary>
+            Callback invoked ahead of dispatches that may call into <see cref="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)"/>.
+            It may be called more than once with different values over a frame. For example, when performing bounding box prediction, velocity is integrated with a full frame time step duration.
+            During substepped solves, integration is split into substepCount steps, each with fullFrameDuration / substepCount duration.
+            The final integration pass for unconstrained bodies may be either fullFrameDuration or fullFrameDuration / substepCount, depending on the value of AllowSubstepsForUnconstrainedBodies. 
+            </summary>
+            <param name="dt">Current integration time step duration.</param>
+            <remarks>This is typically used for precomputing anything expensive that will be used across velocity integration.</remarks>
+        </member>
+        <member name="M:BepuPhysics.IPoseIntegratorCallbacks.IntegrateVelocity(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide,BepuPhysics.BodyInertiaWide,BepuUtilities.Numerics.Vector{System.Int32},System.Int32,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuPhysics.BodyVelocityWide@)">
+            <summary>
+            Callback for a bundle of bodies being integrated.
+            </summary>
+            <param name="bodyIndices">Indices of the bodies being integrated in this bundle.</param>
+            <param name="position">Current body positions.</param>
+            <param name="orientation">Current body orientations.</param>
+            <param name="localInertia">Body's current local inertia.</param>
+            <param name="integrationMask">Mask indicating which lanes are active in the bundle. Active lanes will contain 0xFFFFFFFF, inactive lanes will contain 0.</param>
+            <param name="workerIndex">Index of the worker thread processing this bundle.</param>
+            <param name="dt">Durations to integrate the velocity over. Can vary over lanes.</param>
+            <param name="velocity">Velocity of bodies in the bundle. Any changes to lanes which are not active by the integrationMask will be discarded.</param>
+        </member>
+        <member name="T:BepuPhysics.PoseIntegration">
+            <summary>
+            Provides helper functions for integrating body poses.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegration.FallbackIfInertiaIncompatible(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Uses the previous angular velocity if attempting to conserve angular momentum introduced infinities or NaNs. Happens when attempting to conserve momentum with a kinematic or partially inertia locked body.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.PoseIntegrator`1">
+            <summary>
+            Handles body integration work that isn't bundled into the solver's execution. Predicts bounding boxes, integrates velocity and poses for unconstrained bodies, and does final post-substepping pose integration for constrained bodies.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegrator`1.IntegrateKinematicVelocities(BepuUtilities.Memory.Buffer{System.Int32},System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Integrates the velocities of kinematic bodies as a prepass to the first substep during solving.
+            Kinematics have to be integrated ahead of time since they don't block constraint batch membership; the same kinematic could appear in the batch multiple times.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.PoseIntegrator`1.IntegrateKinematicPosesAndVelocities(BepuUtilities.Memory.Buffer{System.Int32},System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Integrates the poses *then* velocities of kinematic bodies as a prepass to the second or later substeps during solving.
+            Kinematics have to be integrated ahead of time since they don't block constraint batch membership; the same kinematic could appear in the batch multiple times.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.SequentialFallbackBatch">
+            <summary>
+            Contains constraints that could not belong to any lower constraint batch due to their involved bodies. All of the contained constraints will be solved using a fallback solver that
+            trades rigidity for parallelism.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.SequentialFallbackBatch.BodyCount">
+            <summary>
+            Gets the number of bodies in the fallback batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SequentialFallbackBatch.RemoveOneBodyReferenceFromDynamicsSet(System.Int32,BepuUtilities.Collections.QuickList{System.Int32}@)">
+            <summary>
+            Removes a constraint from a body in the fallback batch.
+            </summary>
+            <param name="bodyReference">Body associated with a constraint in the fallback batch.</param>
+            <param name="allocationIdsToFree">Allocations that should be freed once execution is back in a safe context.</param>
+            <returns>True if the body was dynamic and no longer has any constraints associated with it in the fallback batch, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.SequentialFallbackBatch.TryRemoveDynamicBodyFromTracking(System.Int32,BepuUtilities.Collections.QuickList{System.Int32}@)">
+            <summary>
+            Removes a body from the fallback batch's dynamic body constraint counts if it is present.
+            </summary>
+            <param name="bodyReference">Reference to the body to remove from the fallback batch.</param>
+            <param name="allocationIdsToFree">Allocations that should be freed once execution is back in a safe context.</param>
+            <returns>True if the body was present in the fallback batch and was removed, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.Simulation">
+            <summary>
+            Orchestrates the bookkeeping and execution of a full dynamic simulation.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Profiler">
+            <summary>
+            Gets the simulation profiler. Note that the SimulationProfiler implementation only exists when the library is compiled with the PROFILE compilation symbol; if not defined, returned times are undefined.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.BufferPool">
+            <summary>
+            Gets the main memory pool used to fill persistent structures and main thread ephemeral resources across the engine.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Timestepper">
+            <summary>
+            Gets the timestepper used to update the simulation state.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Simulation.Deterministic">
+            <summary>
+            Gets or sets whether to use a deterministic time step when using multithreading. When set to true, additional time is spent sorting constraint additions and transfers.
+            Note that this can only affect determinism locally- different processor architectures may implement instructions differently.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Create``2(BepuUtilities.Memory.BufferPool,``0,``1,BepuPhysics.SolveDescription,BepuPhysics.ITimestepper,System.Nullable{BepuPhysics.SimulationAllocationSizes})">
+            <summary>
+            Constructs a simulation supporting dynamic movement and constraints with the specified narrow phase callbacks.
+            </summary>
+            <param name="bufferPool">Buffer pool used to fill persistent structures and main thread ephemeral resources across the engine.</param>
+            <param name="narrowPhaseCallbacks">Callbacks to use in the narrow phase.</param>
+            <param name="poseIntegratorCallbacks">Callbacks to use in the pose integrator.</param>
+            <param name="timestepper">Timestepper that defines how the simulation state should be updated. If null, <see cref="T:BepuPhysics.DefaultTimestepper"/> is used.</param>
+            <param name="solveDescription">Describes how the solver should execute, including the number of substeps and the number of velocity iterations per substep.</param>
+            <param name="initialAllocationSizes">Allocation sizes to initialize the simulation with. If left null, default values are chosen.</param>
+            <returns>New simulation.</returns>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sleep(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Executes the sleep stage, moving candidate
+            </summary>
+            <param name="threadDispatcher">Thread dispatcher to use for the sleeper execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.PredictBoundingBoxes(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Predicts the bounding boxes of active bodies by speculatively integrating velocity. Does not actually modify body velocities. Updates deactivation candidacy.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.CollisionDetection(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Updates the broad phase structure for the current body bounding boxes, finds potentially colliding pairs, and then executes the narrow phase for all such pairs. Generates contact constraints for the solver.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Solve(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Updates the broad phase structure for the current body bounding boxes, finds potentially colliding pairs, and then executes the narrow phase for all such pairs. Generates contact constraints for the solver.
+            </summary>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.IncrementallyOptimizeDataStructures(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Incrementally improves body and constraint storage for better performance.
+            </summary>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Timestep(BepuUtilities.Numerics.Number,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Performs one timestep of the given length.
+            </summary>
+            <remarks>
+            Be wary of variable timesteps. They can harm stability. Whenever possible, keep the timestep the same across multiple frames unless you have a specific reason not to.
+            </remarks>
+            <param name="dt">Duration of the time step.</param>
+            <param name="threadDispatcher">Thread dispatcher to use for execution, if any.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Clear">
+            <summary>
+            Clears the simulation of every object, only returning memory to the pool that would be returned by sequential removes. 
+            Other persistent allocations, like those in the Bodies set, will remain.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.EnsureCapacity(BepuPhysics.SimulationAllocationSizes)">
+            <summary>
+            Increases the allocation size of any buffers too small to hold the allocation target.
+            </summary>
+            <remarks>
+            <para>
+            The final size of the allocated buffers are constrained by the allocator. It is not guaranteed to be exactly equal to the target, but it is guaranteed to be at least as large.
+            </para>
+            <para>
+            This is primarily a convenience function. Everything it does internally can be done externally.
+            For example, if only type batches need to be resized, the solver's own functions can be used directly.
+            </para>
+            </remarks>
+            <param name="allocationTarget">Allocation sizes to guarantee sufficient size for.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Resize(BepuPhysics.SimulationAllocationSizes)">
+            <summary>
+            Increases the allocation size of any buffers too small to hold the allocation target, and decreases the allocation size of any buffers that are unnecessarily large.
+            </summary>
+            <remarks>
+            <para>
+            The final size of the allocated buffers are constrained by the allocator. It is not guaranteed to be exactly equal to the target, but it is guaranteed to be at least as large.
+            </para>
+            <para>
+            This is primarily a convenience function. Everything it does internally can be done externally.
+            For example, if only type batches need to be resized, the solver's own functions can be used directly.
+            </para>
+            </remarks>
+            <param name="allocationTarget">Allocation sizes to guarantee sufficient size for.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Dispose">
+            <summary>
+            Clears the simulation of every object and returns all pooled memory to the buffer pool. Leaves the simulation in an unusable state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Simulation.RayCast``1(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,``0@,System.Int32)">
+            <summary>
+            Intersects a ray against the simulation.
+            </summary>
+            <typeparam name="THitHandler">Type of the callbacks to execute on ray-object intersections.</typeparam>
+            <param name="origin">Origin of the ray to cast.</param>
+            <param name="direction">Direction of the ray to cast.</param>
+            <param name="maximumT">Maximum length of the ray traversal in units of the direction's length.</param>
+            <param name="hitHandler">callbacks to execute on ray-object intersections.</param>
+            <param name="id">User specified id of the ray.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sweep``2(``0,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Memory.BufferPool,``1@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Sweeps a shape against the simulation.
+            </summary>
+            <typeparam name="TShape">Type of the shape to sweep.</typeparam>
+            <typeparam name="TSweepHitHandler">Type of the callbacks executed when a sweep impacts an object in the scene.</typeparam>
+            <param name="shape">Shape to sweep.</param>
+            <param name="pose">Starting pose of the sweep.</param>
+            <param name="velocity">Velocity of the swept shape.</param>
+            <param name="maximumT">Maximum length of the sweep in units of time used to integrate the velocity.</param>
+            <param name="pool">Pool to allocate any temporary resources in during execution.</param>
+            <param name="hitHandler">Callbacks executed when a sweep impacts an object in the scene.</param>
+            <remarks>Simulation objects are treated as stationary during the sweep.</remarks>
+            <param name="minimumProgression">Minimum amount of progress in terms of t parameter that any iterative sweep tests should make for each sample.</param>
+            <param name="convergenceThreshold">Threshold in terms of t parameter under which iterative sweep tests are permitted to exit in collision.</param>
+            <param name="maximumIterationCount">Maximum number of iterations to use in iterative sweep tests.</param>
+        </member>
+        <member name="M:BepuPhysics.Simulation.Sweep``2(``0@,BepuPhysics.RigidPose@,BepuPhysics.BodyVelocity@,BepuUtilities.Numerics.Number,BepuUtilities.Memory.BufferPool,``1@)">
+            <summary>
+            Sweeps a shape against the simulation.
+            </summary>
+            <typeparam name="TShape">Type of the shape to sweep.</typeparam>
+            <typeparam name="TSweepHitHandler">Type of the callbacks executed when a sweep impacts an object in the scene.</typeparam>
+            <param name="shape">Shape to sweep.</param>
+            <param name="pose">Starting pose of the sweep.</param>
+            <param name="velocity">Velocity of the swept shape.</param>
+            <param name="maximumT">Maximum length of the sweep in units of time used to integrate the velocity.</param>
+            <param name="pool">Pool to allocate any temporary resources in during execution.</param>
+            <param name="hitHandler">Callbacks executed when a sweep impacts an object in the scene.</param>
+            <remarks>Simulation objects are treated as stationary during the sweep.</remarks>
+        </member>
+        <member name="T:BepuPhysics.SimulationAllocationSizes">
+            <summary>
+            The common set of allocation sizes for a simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Bodies">
+            <summary>
+            The number of bodies to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Statics">
+            <summary>
+            The number of statics to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Islands">
+            <summary>
+            The number of inactive islands to allocate space for.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ShapesPerType">
+            <summary>
+            Minimum number of shapes to allocate space for in each shape type batch.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.Constraints">
+            <summary>
+            The number of constraints to allocate bookkeeping space for. This does not affect actual type batch allocation sizes, only the solver-level constraint handle storage.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ConstraintsPerTypeBatch">
+            <summary>
+            The minimum number of constraints to allocate space for in each individual type batch.
+            New type batches will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            The number of constraints can vary greatly across types- there are usually far more contacts than ragdoll constraints.
+            Per type estimates can be assigned within the Solver.TypeBatchAllocation if necessary. This value acts as a lower bound for all types.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SimulationAllocationSizes.ConstraintCountPerBodyEstimate">
+            <summary>
+            The minimum number of constraints to allocate space for in each body's constraint list.
+            New bodies will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SimulationAllocationSizes.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a description of simulation allocations.
+            </summary>
+            <param name="bodies">The number of bodies to allocate space for.</param>
+            <param name="statics">The number of statics to allocate space for.</param>
+            <param name="islands">The number of inactive islands to allocate space for.</param>
+            <param name="shapesPerType">Minimum number of shapes to allocate space for in each shape type batch.</param>
+            <param name="constraints">The number of constraints to allocate bookkeeping space for. This does not affect actual type batch allocation sizes, only the solver-level constraint handle storage.</param>
+            <param name="constraintsPerTypeBatch">The minimum number of constraints to allocate space for in each individual type batch.
+            New type batches will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.
+            The number of constraints can vary greatly across types- there are usually far more contacts than ragdoll constraints.
+            Per type estimates can be assigned within the Solver.TypeBatchAllocation if necessary. This value acts as a lower bound for all types.</param>
+            <param name="constraintCountPerBodyEstimate">The minimum number of constraints to allocate space for in each body's constraint list.
+            New bodies will be given enough memory for this number of constraints, and any compaction will not reduce the allocations below it.</param>
+        </member>
+        <member name="T:BepuPhysics.SimulationProfiler">
+            <summary>
+            Stores profiling information for the previous simulation execution.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.SimulationProfiler.Item(System.Object)">
+            <summary>
+            Gets the time it took to complete the last execution of the given stage. If no stage matching the given object ran, returns -1.
+            </summary>
+            <param name="stage">Stage to look up the time for.</param>
+            <returns>Time it took to complete the last execution of the given stage.</returns>
+        </member>
+        <member name="M:BepuPhysics.IShapeRayHitHandler.AllowTest(System.Int32)">
+            <summary>
+            Checks whether the child of a collidable should be tested against a ray. Only called by shape types that can have more than one child.
+            </summary>
+            <param name="childIndex">Index of the candidate in the parent collidable.</param>
+            <returns>True if the child should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IShapeRayHitHandler.OnRayHit(BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,System.Int32)">
+            <summary>
+            Called when a ray impact has been found.
+            </summary>
+            <param name="ray">Information about the ray associated with this hit.</param>
+            <param name="maximumT">Maximum distance along the ray that the traversal is allowed to go in units of ray direction length. Can be set to limit future tests.</param>
+            <param name="t">Distance along the ray to the impact in units of ray direction length. In other words, hitLocation = ray.Origin + ray.Direction * t.</param>
+            <param name="normal">Surface normal at the hit location.</param>
+            <param name="childIndex">Index of the hit child. For convex shapes or other types that don't have multiple children, this is always zero.</param>
+        </member>
+        <member name="T:BepuPhysics.IRayHitHandler">
+            <summary>
+            Defines a type capable of filtering ray test candidates and handling ray hit results.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Checks whether a collidable identified by the acceleration structure should be tested against a ray.
+            </summary>
+            <param name="collidable">Candidate collidable for ray testing.</param>
+            <returns>True if the collidable should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Checks whether the child of a collidable should be tested against a ray. Only called by shape types that can have more than one child.
+            </summary>
+            <param name="collidable">Parent of the candidate.</param>
+            <param name="childIndex">Index of the candidate in the parent collidable.</param>
+            <returns>True if the child should be tested by the ray, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.IRayHitHandler.OnRayHit(BepuPhysics.Trees.RayData@,BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Called when a ray impact has been found.
+            </summary>
+            <param name="ray">Information about the ray associated with this hit.</param>
+            <param name="maximumT">Maximum distance along the ray that the traversal is allowed to go in units of ray direction length. Can be set to limit future tests.</param>
+            <param name="t">Distance along the ray to the impact in units of ray direction length. In other words, hitLocation = ray.Origin + ray.Direction * t.</param>
+            <param name="normal">Surface normal at the hit location.</param>
+            <param name="collidable">Collidable hit by the ray.</param>
+            <param name="childIndex">Index of the hit child. For convex shapes or other types that don't have multiple children, this is always zero.</param>
+        </member>
+        <member name="T:BepuPhysics.ISweepHitHandler">
+            <summary>
+            Defines a type capable of filtering sweep candidates and handling sweep results.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Checks whether to run a detailed sweep test against a target collidable.
+            </summary>
+            <param name="collidable">Collidable to check.</param>
+            <returns>True if the sweep test should be attempted, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.AllowTest(BepuPhysics.Collidables.CollidableReference,System.Int32)">
+            <summary>
+            Checks whether to run a detailed sweep test against a target collidable's child.
+            </summary>
+            <param name="collidable">Collidable to check.</param>
+            <param name="child">Index of the child in the collidable to check.</param>
+            <returns>True if the sweep test should be attempted, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.OnHit(BepuUtilities.Numerics.Number@,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Called when a sweep test detects a hit with nonzero T value.
+            </summary>
+            <param name="maximumT">Reference to maximumT passed to the traversal.</param>
+            <param name="t">Time of impact for the sweep test.</param>
+            <param name="hitLocation">Location of the first hit detected by the sweep.</param>
+            <param name="hitNormal">Surface normal at the hit location.</param>
+            <param name="collidable">Collidable hit by the traversal.</param>
+        </member>
+        <member name="M:BepuPhysics.ISweepHitHandler.OnHitAtZeroT(BepuUtilities.Numerics.Number@,BepuPhysics.Collidables.CollidableReference)">
+            <summary>
+            Called when a sweep test detects a hit at T = 0, meaning that no location or normal can be computed.
+            </summary>
+            <param name="maximumT">Reference to maximumT passed to the traversal.</param>
+            <param name="collidable">Collidable hit by the traversal.</param>
+        </member>
+        <member name="T:BepuPhysics.SubstepVelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep.
+            </summary>
+            <param name="substepIndex">Index of the substep to schedule velocity iterations for.</param>
+            <returns>Number of velocity iterations to use for the substep. If nonpositive, <see cref="F:BepuPhysics.SolveDescription.VelocityIterationCount"/> will be used for the substep instead.</returns>
+        </member>
+        <member name="T:BepuPhysics.SolveDescription">
+            <summary>
+            Describes how the solver should schedule substeps and velocity iterations.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.VelocityIterationCount">
+            <summary>
+            Number of velocity iterations to use in the solver if there is no <see cref="F:BepuPhysics.SolveDescription.VelocityIterationScheduler"/> or if it returns a non-positive value for a substep.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.SubstepCount">
+            <summary>
+            Number of substeps to execute each time the solver runs.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.FallbackBatchThreshold">
+            <summary>
+            Number of synchronzed constraint batches to use before using a fallback approach.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.VelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep. If null, or if it returns a non-positive value, the <see cref="F:BepuPhysics.SolveDescription.VelocityIterationCount"/> will be used instead.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold">
+            <summary>
+            Default number of synchronized constraint batches to use before falling back to an alternative solving method.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="velocityIterationCount">Number of velocity iterations per substep.</param>
+            <param name="substepCount">Number of substeps in the solve.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.Int32,BepuPhysics.SubstepVelocityIterationScheduler,System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="substepCount">Number of substeps in the solve.</param>
+            <param name="velocityIterationScheduler"></param>
+            <param name="fallbackVelocityIterationCount">Number of velocity iterations per substep for any substep that is not given a positive number of velocity iterations by the scheduler.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.#ctor(System.ReadOnlySpan{System.Int32},System.Int32,System.Int32)">
+            <summary>
+            Creates a solve description.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+            <param name="fallbackVelocityIterationCount">Number of velocity iterations per substep for any substep that is not given a positive number of velocity iterations by the scheduler.</param>
+            <param name="fallbackBatchThreshold">Number of synchronzed constraint batches to use before using a fallback approach.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.Int32)~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of velocity iterations and a single substep, with a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="velocityIterationCount">Number of velocity iterations per substep.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.ValueTuple{System.Int32,System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="schedule">Number of substeps and iterations per solve.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.ReadOnlySpan{System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(System.Int32[])~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="M:BepuPhysics.SolveDescription.op_Implicit(BepuUtilities.Memory.Buffer{System.Int32})~BepuPhysics.SolveDescription">
+            <summary>
+            Creates a solve description with the given number of substeps and velocity iterations per substep and a fallback threshold of <see cref="F:BepuPhysics.SolveDescription.DefaultFallbackBatchThreshold"/>.
+            </summary>
+            <param name="substepVelocityIterations">Number of velocity iterations to use in each substep. Number of substeps will be determined by the length of the span.</param>
+        </member>
+        <member name="T:BepuPhysics.Solver">
+            <summary>
+            Holds and solves constraints between bodies in a simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.Sets">
+            <summary>
+            Buffer containing all constraint sets. The first slot is dedicated to the active set; subsequent slots may be occupied by the constraints associated with inactive islands.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.ActiveSet">
+            <summary>
+            Gets a reference to the active set of constraints, stored in the first set slot.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.TypeProcessors">
+            <summary>
+            Set of processors applied to batches of constraints of particular types, indexed by the constraint type id.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.HandlePool">
+            <summary>
+            Pool to retrieve constraint handles from when creating new constraints.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.HandleToConstraint">
+            <summary>
+            Mapping from constraint handle (via its internal integer value) to the location of a constraint in memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.FallbackBatchThreshold">
+            <summary>
+            Gets the maximum number of solver batches to allow before resorting to a fallback solver.
+            If a single body is constrained by more than FallbackBatchThreshold constraints, all constraints beyond FallbackBatchThreshold are placed into a fallback batch.
+            The fallback batch uses a different solver that can handle multiple constraints affecting a single body in a single batch, allowing greater parallelism at the cost of convergence speed.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.constrainedKinematicLock">
+            <summary>
+            Lock used to add to the constrained kinematic handles from multiple threads, if necessary.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.ConstrainedKinematicHandles">
+            <summary>
+            Set of body handles associated with constrained kinematic bodies. These will be integrated during substepping.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.SubstepCount">
+            <summary>
+            Gets or sets the number of substeps the solver will simulate per call to Solve.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.VelocityIterationCount">
+            <summary>
+            Gets or sets the number of solver velocity iterations to compute per substep.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.VelocityIterationScheduler">
+            <summary>
+            Callback executed to determine how many velocity iterations should be used for a given substep. If null, or if it returns a non-positive value, the <see cref="P:BepuPhysics.Solver.VelocityIterationCount"/> will be used instead.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Solver.MinimumCapacityPerTypeBatch">
+            <summary>
+            Gets or sets the minimum amount of space, in constraints, initially allocated in any new type batch.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Solver.SubstepEvent">
+            <summary>
+            Delegate type of solver substep begin/end events.
+            </summary>
+            <param name="substepIndex">Index of the substep that the event is about.</param>
+        </member>
+        <member name="E:BepuPhysics.Solver.SubstepStarted">
+            <summary>
+            Event invoked when the solver begins a substep. If the solver is executing on multiple threads, this will be invoked within the multithreaded dispatch on worker thread 0.
+            </summary>
+            <remarks>Take care when attempting to dispatch multithreaded operations from within this event.
+            If using the same <see cref="T:BepuUtilities.IThreadDispatcher"/> instance as the solver, the dispatcher implementation must be reentrant. The demos implementation is not.</remarks>
+        </member>
+        <member name="E:BepuPhysics.Solver.SubstepEnded">
+            <summary>
+            Event invoked when the solver completes a substep. If the solver is executing on multiple threads, this will be invoked within the multithreaded dispatch on worker thread 0.
+            </summary>
+            <remarks>Take care when attempting to dispatch multithreaded operations from within this event.
+            If using the same <see cref="T:BepuUtilities.IThreadDispatcher"/> instance as the solver, the dispatcher implementation must be reentrant. The demos implementation is not.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.SetMinimumCapacityForType(System.Int32,System.Int32)">
+            <summary>
+            Sets the minimum capacity initially allocated to a new type batch of the given type.
+            </summary>
+            <param name="typeId">Id of the constraint type to check the initial capacity of.</param>
+            <param name="minimumInitialCapacityForType">Minimum capacity to use for the type.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetMinimumCapacityForType(System.Int32)">
+            <summary>
+            Gets the minimum initial capacity for a given type.
+            The returned value is the larger of MinimumCapacityPerTypeBatch and the value set by SetMinimumCapacityForType for the given type id.
+            </summary>
+            <param name="typeId">Type id to retrieve the minm</param>
+            <returns>Larger of MinimumCapacityPerTypeBatch and the given type's minimum set by SetMinimumCapacityForType.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResetPerTypeInitialCapacities">
+            <summary>
+            Resets all per-type initial capacities to zero. Leaves the minimum capacity across all constraints unchanged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.CountConstraintsInTypeBatch(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Counts the number of constraints in a particular type batch.
+            </summary>
+            <param name="setIndex">Index of the set containing the type batch.</param>
+            <param name="batchIndex">Index of the batch containing the type batch.</param>
+            <param name="typeBatchIndex">Index of the type batch within the batch.</param>
+            <returns>Number of constraints in the type batch.</returns>
+            <remarks>This handles whether the type batch is in the fallback batch or not. Active fallback batches are not guaranteed to have contiguous constraints, so the <see cref="F:BepuPhysics.Constraints.TypeBatch.ConstraintCount"/> value is an upper bound and there may be gaps.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.CountConstraints">
+            <summary>
+            Gets the total number of constraints across all sets, batches, and types. Requires enumerating
+            all type batches; this can be expensive.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Register``1">
+            <summary>
+            Registers a constraint type with the solver, creating a type processor for the type internally and allowing constraints of that type to be added to the solver.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint to register with the solver.</typeparam>
+            <exception cref="T:System.ArgumentException">Fired when another constraint type of the same id has already been registered.</exception>
+            <remarks><see cref="M:BepuPhysics.DefaultTypes.RegisterDefaults(BepuPhysics.Solver,BepuPhysics.CollisionDetection.NarrowPhase)"/> is called during simuation creation and registers all the built in types. Calling <see cref="M:BepuPhysics.Solver.Register``1"/> manually is only necessary if custom types are used.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.ConstraintExists(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gets whether the given constraint handle refers to a constraint in the solver.
+            </summary>
+            <param name="constraintHandle">Constraint handle to check for existence in the solver.</param>
+            <returns>True if the constraint handle exists in the solver, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetConstraintReference(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gets a direct reference to the constraint associated with a handle.
+            The reference is temporary; any constraint removals that affect the referenced type batch may invalidate the index.
+            </summary>
+            <param name="handle">Handle index of the constraint.</param>
+            <returns>Temporary direct reference to the type batch and index in the type batch associated with the constraint handle.
+            May be invalidated by constraint removals.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.FindCandidateBatch(BepuPhysics.CollisionDetection.CollidablePair)">
+            <summary>
+            Attempts to locate a spot for a new constraint. Does not perform allocation for the constraint. If no batch exists, returns the index just beyond the end of the existing list of batches.
+            </summary>
+            <returns>Index of the batch that the constraint would fit in.</returns>
+            <remarks>This is used by the narrowphase's multithreaded constraint adders to locate a spot for a new constraint without requiring a lock. Only after a candidate is located
+            do those systems attempt an actual claim, limiting the duration of locks and increasing potential parallelism.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescriptionWithoutWaking``1(BepuPhysics.ConstraintReference@,``0@)">
+            <summary>
+            Applies a description to a constraint slot without waking up the associated island.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintReference">Reference of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescriptionWithoutWaking``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Applies a description to a constraint slot without waking up the associated island.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintHandle">Handle of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ApplyDescription``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Applies a description to a constraint slot, waking up the connected bodies if necessary.
+            </summary>
+            <typeparam name="TDescription">Type of the description to apply.</typeparam>
+            <param name="constraintHandle">Handle of the constraint being updated.</param>
+            <param name="description">Description to apply to the slot.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(System.Span{BepuPhysics.BodyHandle},``0@)">
+            <summary>
+            Allocates a constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandles">Body handles used by the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a one-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandle">Body connected to the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a two-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a three-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="bodyHandleC">Third body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.Add``1(BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,BepuPhysics.BodyHandle,``0@)">
+            <summary>
+            Allocates a four-body constraint slot and sets up a constraint with the specified description.
+            </summary>
+            <typeparam name="TDescription">Type of the constraint description to add.</typeparam>
+            <param name="bodyHandleA">First body of the constraint.</param>
+            <param name="bodyHandleB">Second body of the constraint.</param>
+            <param name="bodyHandleC">Third body of the constraint.</param>
+            <param name="bodyHandleD">Fourth body of the constraint.</param>
+            <param name="description">Description of the constraint to add.</param>
+            <returns>Allocated constraint handle.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.RemoveFromBatch(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Removes a constraint from a batch, performing any necessary batch cleanup, but does not return the constraint's handle to the pool.
+            </summary>
+            <param name="batchIndex">Index of the batch to remove from.</param>
+            <param name="typeId">Type id of the constraint to remove.</param>
+            <param name="indexInTypeBatch">Index of the constraint to remove within its type batch.</param>
+        </member>
+        <member name="T:BepuPhysics.Solver.RemoveConstraintReferencesFromBodiesEnumerator">
+            <summary>
+            Enumerates the bodies attached to an active constraint and removes the constraint's handle from all of the connected body constraint reference lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Remove(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Removes the constraint associated with the given handle. Note that this may invalidate any outstanding direct constraint references
+            by reordering the constraints within the TypeBatch subject to removal.
+            </summary>
+            <param name="handle">Handle of the constraint to remove from the solver.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetDescription``1(BepuPhysics.ConstraintReference,``0@)">
+            <summary>
+            Gets the constraint description associated with a constraint reference.
+            </summary>
+            <typeparam name="TConstraintDescription">Type of the constraint description to retrieve.</typeparam>
+            <param name="constraintReference">Reference to the constraint to retrieve.</param>
+            <param name="description">Retrieved description of the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetDescription``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Gets the constraint description associated with a constraint handle.
+            </summary>
+            <typeparam name="TConstraintDescription">Type of the constraint description to retrieve.</typeparam>
+            <param name="handle">Handle of the constraint to retrieve.</param>
+            <param name="description">Retrieved description of the constraint.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.UpdateForBodyMemoryMove(System.Int32,System.Int32)">
+            <summary>
+            Changes the body references of all constraints associated with a body in response to its movement into a new slot.
+            Constraints associated with the body now at its old slot, if any, are left untouched.
+            </summary>
+            <param name="originalBodyIndex">Memory index that the moved body used to inhabit.</param>
+            <param name="newBodyLocation">Memory index that the moved body now inhabits.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleAccumulatedImpulses(BepuPhysics.ConstraintSet@,BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales the accumulated impulses associated with a constraint set by a given scale.
+            </summary>
+            <param name="set">Set to scale.</param>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleActiveAccumulatedImpulses(BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales all accumulated impulses in the active set.
+            </summary>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ScaleAccumulatedImpulses(BepuUtilities.Numerics.Number)">
+            <summary>
+            Scales all accumulated impulses in all constraint sets.
+            </summary>
+            <param name="scale">Scale to apply to accumulated impulses.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateAccumulatedImpulses``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the accumulated impulses associated with a constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to use.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetAccumulatedImpulseMagnitudeSquared(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gathers the squared magnitude of the accumulated impulse for a given constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to look up the accumulated impulses of.</param>
+            <returns>Squared magnitude of the accumulated impulses associated with the given constraint.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.GetAccumulatedImpulseMagnitude(BepuPhysics.ConstraintHandle)">
+            <summary>
+            Gathers the magnitude of the accumulated impulse for a given constraint.
+            </summary>
+            <param name="constraintHandle">Constraint to look up the accumulated impulses of.</param>
+            <returns>Magnitude of the accumulated impulses associated with the given constraint.</returns>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``2(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates body references in the constraint. Reports data according to the TReportType.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator called for each body index in the constraint.</typeparam>
+            <typeparam name="TReportType">Type of information to report to the enumerator.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedRawBodyReferences``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of body references associated with a constraint in order of their references within the constraint.
+            This will report the raw body reference (body index if awake, handle if asleep) and any encoded metadata, like whether the body is kinematic.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedRawBodyReferences``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of body references associated with a constraint in order of their references within the constraint.
+            This will report the raw body reference (body index if awake, handle if asleep) and any encoded metadata, like whether the body is kinematic.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of body references associated with an active constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedBodyReferences``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of body references associated with an active constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedDynamicBodies``1(BepuPhysics.Constraints.TypeBatch@,System.Int32,``0@)">
+            <summary>
+            Enumerates the set of dynamic body references associated with a constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            Kinematic references are skipped.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected dynamic body reference.</typeparam>
+            <param name="typeBatch">Type batch containing the constraint to enumerate.</param>
+            <param name="indexInTypeBatch">Index of the constraint to enumerate in the type batch.</param>
+            <param name="enumerator">Enumerator to call for each connected dynamic body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnumerateConnectedDynamicBodies``1(BepuPhysics.ConstraintHandle,``0@)">
+            <summary>
+            Enumerates the set of dynamic body references associated with a constraint in order of their references within the constraint.
+            This will report the body reference (body index if awake, handle if asleep) without any encoded kinematicity metadata.
+            Kinematic references are skipped.
+            </summary>
+            <typeparam name="TEnumerator">Type of the enumerator to call on each connected dynamic body reference.</typeparam>
+            <param name="constraintHandle">Constraint to enumerate.</param>
+            <param name="enumerator">Enumerator to call for each connected dynamic body reference.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.Clear">
+            <summary>
+            Removes all objects from the solver. This is meant as a fast path to empty a simulation's constraints. It makes no attempt to retain synchronization with other systems
+            which may depend on the existence of constraints, like the per-body constraint lists.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnsureSolverCapacities(System.Int32,System.Int32)">
+            <summary>
+            Adjusts the size of the the solvers non-typebatch data structures. An allocation will grow if the given capacity exceeds the currently allocated capacity.
+            </summary>
+            <param name="bodyHandleCapacity">Size of the span of body handles to allocate space for. Applies to batch referenced handle sets.</param>
+            <param name="constraintHandleCapacity">Number of constraint handles to allocate space for. Applies to the handle->constraint mapping table.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResizeSolverCapacities(System.Int32,System.Int32)">
+            <summary>
+            Adjusts the size of the the solvers non-typebatch data structures. An allocation is allowed to shrink if it fits both all existing entries and the given capacity.
+            An allocation will grow if the given capacity exceeds the currently allocated capacity.
+            </summary>
+            <param name="bodyHandleCapacity">Size of the span of body handles to allocate space for. Applies to batch referenced handle sets.</param>
+            <param name="constraintHandleCapacity">Number of constraint handles to allocate space for. Applies to the handle->constraint mapping table.</param>
+        </member>
+        <member name="M:BepuPhysics.Solver.EnsureTypeBatchCapacities">
+            <summary>
+            Ensures all existing active type batches meet or exceed the current solver-defined minimum capacities. Type batches with capacities smaller than the minimums will be enlarged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.ResizeTypeBatchCapacities">
+            <summary>
+            Applies the current solver-defined minimum capacities to existing type batches. Type batches with capacities larger than the minimums and counts less than the minimums may be shrunk.
+            Type batches with capacities smaller than the minimums will be enlarged.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Solver.Dispose">
+            <summary>
+            Returns all pool-retrieved resources to the pool.
+            </summary>
+            <remarks>
+            The solver cannot be 'rehydrated' for reuse after a disposal. If you want to return bulk data to the pool while leaving the solver in a usable state, consider using Clear instead.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Solver.WorkBlock.StartBundle">
+            <summary>
+            Index of the first bundle in the block.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.WorkBlock.End">
+            <summary>
+            Exlusive end index of the bundle. Index of the last bundle in the block is End - 1.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.SubstepMultithreadingContext.SyncIndex">
+            <summary>
+            Monotonically increasing index of executed stages during a frame.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver.SubstepMultithreadingContext.CompletedWorkBlockCount">
+            <summary>
+            Counter of work completed for the current stage.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Solver`1">
+            <summary>
+            Handles integration-aware substepped solving.
+            </summary>
+            <typeparam name="TIntegrationCallbacks">Type of integration callbacks being used during the substepped solve.</typeparam>
+        </member>
+        <member name="P:BepuPhysics.Solver`1.PoseIntegrator">
+            <summary>
+            Pose integrator used by the simulation.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Solver`1.coarseBatchIntegrationResponsibilities">
+            <summary>
+            Caches a single bool for whether type batches within batches have constraints with any integration responsibilities.
+            Type batches with no integration responsibilities can use a codepath with no integration checks at all.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.StaticDescription">
+            <summary>
+            Describes the properties of a static object. When added to a simulation, static objects can collide but have no velocity and will not move in response to forces.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Pose">
+            <summary>
+            Position and orientation of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Shape">
+            <summary>
+            Shape of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticDescription.Continuity">
+            <summary>
+            Continuous collision detection settings for the static.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Builds a new static description.
+            </summary>
+            <param name="pose">Pose of the static collidable.</param>
+            <param name="shape">Shape of the static.</param>
+            <param name="continuity">Continuous collision detection settings for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuPhysics.RigidPose,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Builds a new static description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> continuity.
+            </summary>
+            <param name="pose">Pose of the static collidable.</param>
+            <param name="shape">Shape of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.ContinuousDetection)">
+            <summary>
+            Builds a new static description.
+            </summary>
+            <param name="position">Position of the static.</param>
+            <param name="orientation">Orientation of the static.</param>
+            <param name="shape">Shape of the static.</param>
+            <param name="continuity">Continuous collision detection settings for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticDescription.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Builds a new static description with <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> continuity.
+            </summary>
+            <param name="position">Position of the static.</param>
+            <param name="orientation">Orientation of the static.</param>
+            <param name="shape">Shape of the static.</param>
+        </member>
+        <member name="T:BepuPhysics.StaticReference">
+            <summary>
+            Convenience structure for directly referring to a static's properties.
+            </summary>
+            <remarks>Note that this type makes no attempt to protect against unsafe modification of static properties.</remarks>
+        </member>
+        <member name="F:BepuPhysics.StaticReference.Handle">
+            <summary>
+            Handle of the static that this reference refers to.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.StaticReference.Statics">
+            <summary>
+            The collection containing the static.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.#ctor(BepuPhysics.StaticHandle,BepuPhysics.Statics)">
+            <summary>
+            Constructs a new static reference.
+            </summary>
+            <param name="handle">Handle of the static to refer to.</param>
+            <param name="statics">Collection containing the static.</param>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Exists">
+            <summary>
+            Gets whether the static reference exists within the static set. True if the handle maps to a valid memory location that agrees that the handle points to it, false otherwise.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Index">
+            <summary>
+            Gets a the static's index in the statics collection.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Static">
+            <summary>
+            Gets a reference to the entirety of the static's memory.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Pose">
+            <summary>
+            Gets a reference to the static's pose.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Continuity">
+            <summary>
+            Gets a reference to the static's collision continuity settings.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.Shape">
+            <summary>
+            Gets the shape used by the static. To set the shape, use <see cref="M:BepuPhysics.StaticReference.SetShape(BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.StaticReference.ApplyDescription(BepuPhysics.StaticDescription@)"/>.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.CollidableReference">
+            <summary>
+            <para>Gets a CollidableReference for this static. CollidableReferences uniquely identify a collidable object in a simulation by including both the dynamic/kinematic/static state of the object and its handle.</para>
+            <para>Despite an unfortunate naming collision, CollidableReferences are distinct from a direct reference to a static's collidable data, which you can get from the Collidable property.</para>
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetDescription(BepuPhysics.StaticDescription@)">
+            <summary>
+            Gets a description of the static.
+            </summary>
+            <param name="description">Description of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetDescription">
+            <summary>
+            Gets a description of the static.
+            </summary>
+            <returns>Description of the static.</returns>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.ApplyDescription(BepuPhysics.StaticDescription@)">
+            <summary>
+            Sets a static's properties according to a description.
+            </summary>
+            <param name="description">Description of the static.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.SetShape(BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a static.
+            </summary>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+        </member>
+        <member name="P:BepuPhysics.StaticReference.BoundingBox">
+            <summary>
+            Gets a copy of the static's bounding box.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.GetBoundsReferencesFromBroadPhase(BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets direct pointers to the static's bounding box minimum and maximum in the broad phase. Outputs null if the static has no shape.
+            </summary>
+            <param name="min">Pointer to the bounding box minimum in the broad phase.</param>
+            <param name="max">Pointer to the bounding box maximum in the broad phase.</param>
+        </member>
+        <member name="M:BepuPhysics.StaticReference.UpdateBounds">
+            <summary>
+            Updates the static's bounds in the broad phase for its current state. Does not include velocity expansion. Does nothing if the static has no shape.
+            </summary>
+            <remarks>Can be useful if you made modifications to the static's state that you want reflected in the broad phase before the next timestep.
+            For example, if you want to perform ray casts against the broad phase after moving objects around directly, their bounds must be updated or else the broad phase bounds will be out of date and the ray will likely miss.</remarks>
+        </member>
+        <member name="T:BepuPhysics.IStaticChangeAwakeningFilter">
+            <summary>
+            Defines a type that determines which bodies should be awoken in the bounding box of a static when the static's state changes.
+            </summary>
+            <remarks>We cannot find bodies depending on a static through constraints, since statics do not maintain constraint lists.
+            When a static is added, removed, has SetShape or has ApplyDescription called on it, 
+            it looks up bodies in its bounding box that could possibly be affected by change and considers waking them up.
+            This filter can be used to ignore some bodies.</remarks>
+        </member>
+        <member name="P:BepuPhysics.IStaticChangeAwakeningFilter.AllowAwakening">
+            <summary>
+            Gets whether to allow awakening for any body. If true, candidates will have the ShouldAwaken function called for them. 
+            If false, ShouldAwaken will not be called, and no bodies will be awoken.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.IStaticChangeAwakeningFilter.ShouldAwaken(BepuPhysics.BodyReference)">
+            <summary>
+            Determines whether a body should be forced awake by the state change of a static.
+            </summary>
+            <param name="body">Sleeping body under consideration for awakening.</param>
+            <returns>True if the body should be forced awake, false otherwise.</returns>
+        </member>
+        <member name="T:BepuPhysics.StaticsShouldntAwakenKinematics">
+            <summary>
+            Default awakening filter that only wakes up dynamic bodies. Kinematic bodies do not respond to any kind of dynamic simulation, so they won't respond to the change in statics.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Static">
+            <summary>
+            Stores data for a static collidable in the simulation. Statics can be posed and collide, but have no velocity and no dynamic behavior.
+            </summary>
+            <remarks>Unlike bodies, statics have a very simple access pattern. Most data is referenced together and there are no extreme high frequency data accesses like there are in the solver.
+            Everything can be conveniently stored within a single location contiguously.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Static.Pose">
+            <summary>
+            Pose of the static collidable.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Static.Continuity">
+            <summary>
+            Continuous collision detection settings for this collidable. Includes the collision detection mode to use and tuning variables associated with those modes.
+            </summary>
+            <remarks>Note that statics cannot move, so there is no difference between <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Discrete"/> and <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Passive"/> for them.
+            Enabling <see cref="F:BepuPhysics.Collidables.ContinuousDetectionMode.Continuous"/> will still require that pairs associated with the static use swept continuous collision detection.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Static.Shape">
+            <summary>
+            Index of the shape used by the static. While this can be changed, any transition from shapeless->shapeful or shapeful->shapeless must be reported to the broad phase. 
+            If you need to perform such a transition, consider using <see cref="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)"/> or Statics.ApplyDescription; those functions update the relevant state.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Static.BroadPhaseIndex">
+            <summary>
+            Index of the collidable in the broad phase. Used to look up the target location for bounding box scatters. Under normal circumstances, this should not be set externally.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Statics">
+            <summary>
+            Collection of allocated statics.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.HandleToIndex">
+            <summary>
+            Remaps a static handle integer value to the actual array index of the static.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.IndexToHandle">
+            <summary>
+            Remaps a static index to its handle.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Statics.StaticsBuffer">
+            <summary>
+            The set of collidables owned by each static. Speculative margins, continuity settings, and shape indices can be changed directly.
+            Shape indices cannot transition between pointing at a shape and pointing at nothing or vice versa without notifying the broad phase of the collidable addition or removal.
+            Consider using <see cref="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)"/> or <see cref="M:BepuPhysics.Statics.ApplyDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)"/> to handle the bookkeeping changes automatically if changing the shape.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Statics.Item(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to the memory backing a static collidable. The <see cref="T:BepuPhysics.StaticReference"/> type is a helper that exposes common operations for statics.
+            </summary>
+            <param name="handle">Handle of the static to retrieve a reference for.</param>
+            <returns>Reference to the memory backing a static collidable.</returns>
+            <remarks>Equivalent to <see cref="M:BepuPhysics.Statics.GetStaticReference(BepuPhysics.StaticHandle)"/>.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDirectReference(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a direct reference to the memory backing a static.
+            </summary>
+            <param name="handle">Handle of the static to get a reference of.</param>
+            <returns>Direct reference to the memory backing a static.</returns>
+            <remarks>This is distinct from the <see cref="P:BepuPhysics.Statics.Item(BepuPhysics.StaticHandle)"/> indexer in that this returns the direct memory reference. <see cref="T:BepuPhysics.StaticReference"/> includes a layer of indirection that can expose more features.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Statics.Item(System.Int32)">
+            <summary>
+            Gets a reference to the raw memory backing a static collidable.
+            </summary>
+            <param name="index">Index of the static to retrieve a memory reference for.</param>
+            <returns>Direct reference to the memory backing a static collidable.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.StaticExists(BepuPhysics.StaticHandle)">
+            <summary>
+            Checks whether a static handle is currently registered with the statics set.
+            </summary>
+            <param name="handle">Handle to check for.</param>
+            <returns>True if the handle exists in the collection, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.RemoveAt``1(System.Int32,``0@)">
+            <summary>
+            Removes a static from the set by index. Any sleeping bodies with bounding boxes overlapping the removed static's bounding box and passing the given filter will be forced awake.
+            </summary>
+            <param name="index">Index of the static to remove.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the removed static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.RemoveAt(System.Int32)">
+            <summary>
+            Removes a static from the set by index. Any sleeping dynamic bodies with bounding boxes overlapping the removed static's bounding box will be forced active.
+            </summary>
+            <param name="index">Index of the static to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.Remove``1(BepuPhysics.StaticHandle,``0@)">
+            <summary>
+            Removes a static from the set. Any sleeping bodies with bounding boxes overlapping the removed static's bounding box and passing the given filter will be forced active.
+            </summary>
+            <param name="handle">Handle of the static to remove.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the removed static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.Remove(BepuPhysics.StaticHandle)">
+            <summary>
+            Removes a static from the set. Any sleeping dynamic bodies with bounding boxes overlapping the removed static's bounding box will be forced active.
+            </summary>
+            <param name="handle">Handle of the static to remove.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.UpdateBounds(BepuPhysics.StaticHandle)">
+            <summary>
+            Updates the bounds held within the broad phase for the static's current state.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Statics.Add``1(BepuPhysics.StaticDescription@,``0@)">
+            <summary>
+            Adds a new static body to the simulation. All sleeping bodies whose bounding boxes overlap the new static and pass the given filter are forced active.
+            </summary>
+            <param name="description">Description of the static to add.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the new static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+            <returns>Handle of the new static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.Add(BepuPhysics.StaticDescription@)">
+            <summary>
+            Adds a new static body to the simulation. All sleeping dynamic bodies whose bounding boxes overlap the new static are forced active.
+            </summary>
+            <param name="description">Description of the static to add.</param>
+            <returns>Handle of the new static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.SetShape``1(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex,``0@)">
+            <summary>
+            Changes the shape of a static and updates its bounds in the broad phase. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            </summary>
+            <param name="handle">Handle of the static to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.SetShape(BepuPhysics.StaticHandle,BepuPhysics.Collidables.TypedIndex)">
+            <summary>
+            Changes the shape of a static and updates its bounds in the broad phase. All sleeping dyanmic bodies with bounding boxes overlapping the old or new static collidable are forced active.
+            </summary>
+            <param name="handle">Handle of the static to change the shape of.</param>
+            <param name="newShape">Index of the new shape to use for the static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.ApplyDescription``1(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@,``0@)">
+            <summary>
+            Applies a new description to an existing static object. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            Updates the bounds of the static in the broad phase.
+            </summary>
+            <param name="handle">Handle of the static to apply the description to.</param>
+            <param name="description">Description to apply to the static.</param>
+            <param name="filter">Filter to apply to sleeping bodies near the static to see if they should be awoken.</param>
+            <typeparam name="TAwakeningFilter">Type of the filter to apply to sleeping bodies.</typeparam>
+        </member>
+        <member name="M:BepuPhysics.Statics.ApplyDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)">
+            <summary>
+            Applies a new description to an existing static object. All sleeping bodies with bounding boxes overlapping the old or new static collidable and pass the given filter are forced active.
+            Updates the bounds of the static in the broad phase.
+            </summary>
+            <param name="handle">Handle of the static to apply the description to.</param>
+            <param name="description">Description to apply to the static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDescription(BepuPhysics.StaticHandle,BepuPhysics.StaticDescription@)">
+            <summary>
+            Gets the current description of the static referred to by a given handle.
+            </summary>
+            <param name="handle">Handle of the static to look up the description of.</param>
+            <param name="description">Gathered description of the handle-referenced static.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetDescription(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets the current description of the static referred to by a given handle.
+            </summary>
+            <param name="handle">Handle of the static to look up the description of.</param>
+            <returns>Gathered description of the handle-referenced static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.GetStaticReference(BepuPhysics.StaticHandle)">
+            <summary>
+            Gets a reference to a static by its handle.
+            </summary>
+            <param name="handle">Handle of the static to grab a reference of.</param>
+            <returns>Reference to the desired static.</returns>
+        </member>
+        <member name="M:BepuPhysics.Statics.Clear">
+            <summary>
+            Clears all bodies from the set without returning any memory to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Statics.Resize(System.Int32)">
+            <summary>
+            Resizes the allocated spans for static data. Note that this is conservative; it will never orphan existing objects.
+            </summary>
+            <param name="capacity">Target static data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.EnsureCapacity(System.Int32)">
+            <summary>
+            Increases the size of buffers if needed to hold the target capacity.
+            </summary>
+            <param name="capacity">Target data capacity.</param>
+        </member>
+        <member name="M:BepuPhysics.Statics.Dispose">
+            <summary>
+            Returns all static resources to the pool used to create them.
+            </summary>
+            <remarks>The object can be reused if it is reinitialized by using EnsureCapacity or Resize.</remarks>
+        </member>
+        <member name="T:BepuPhysics.Trees.Leaf">
+            <summary>
+            Pointer to a leaf's tree location.
+            </summary>
+            <remarks>The identity of a leaf is implicit in its position within the leaf array.</remarks>
+        </member>
+        <member name="P:BepuPhysics.Trees.Leaf.NodeIndex">
+            <summary>
+            Gets the index of the node that the leaf is directly held by.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Trees.Leaf.ChildIndex">
+            <summary>
+            Gets which child within the owning node the leaf is in.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Node">
+            <summary>
+            2-wide tree node.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Metanode">
+            <summary>
+            Metadata associated with a 2-child tree node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Metanode.LocalCostChange">
+            <summary>
+            Cached change in cost of the tree starting at this node since the previous frame.
+            The local cost change is unioned with the refine flags. They're never used simultaneously.
+            This will be overwritten right after use, so don't expect anything meaningful here outside of refinement scheduling's scope.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.TreeRay">
+            <summary>
+            Ray representation designed for quicker intersection against axis aligned bounding boxes.
+            </summary>
+        </member>
+        <member name="P:BepuPhysics.Trees.RaySource.RayCount">
+            <summary>
+            Gets the number of rays in the batch.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RaySource.GetRay(System.Int32,BepuPhysics.Trees.RayData*@,BepuUtilities.Numerics.Number*@)">
+            <summary>
+            Gets pointers to the data for a ray.
+            </summary>
+            <param name="rayIndex">Index of the ray to grab.</param>
+            <param name="ray">Pointer to the ray's origin and direction. Note that changing the ray's origin and direction mid-traversal will not change the path of the traversal, 
+            but it will be visible by any future leafs impacted by this ray.</param>
+            <param name="maximumT">Pointer to the maximum length of the ray in units of the ray's length.
+            Decreasing this value will prevent the traversal from visiting more distant nodes later in the traversal.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RaySource.GetRay(System.Int32)">
+            <summary>
+            Gets a reference to the data for a ray.
+            </summary>
+            <param name="rayIndex">Index of the ray to grab.</param>
+            <returns>Returns a reference to the ray in the ray source.</returns>
+        </member>
+        <member name="T:BepuPhysics.Trees.RayBatcher">
+            <summary>
+            Reusable structure for testing large numbers of rays against trees.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.#ctor(BepuUtilities.Memory.BufferPool,System.Int32,System.Int32)">
+            <summary>
+            Constructs a ray batcher and initializes its backing resources.
+            </summary>
+            <param name="pool">Pool to pull resources from.</param>
+            <param name="rayCapacity">Maximum number of rays to execute in each traversal.
+            This should typically be chosen as the highest value which avoids spilling data out of L2 cache.</param>
+            <param name="treeDepthForPreallocation">Tree depth to preallocate ray stack space for. If a traversal finds nodes deeper than this, a dynamic resize will be triggered.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.Dispose">
+            <summary>
+            Disposes all the resources backing the ray batcher.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.RayBatcher.TreeRayWide">
+            <summary>
+            Ray representation designed for quicker intersection against axis aligned bounding boxes.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.TestRays``1(BepuPhysics.Trees.Tree@,``0@)">
+            <summary>
+            Tests any batched rays against the given tree.
+            </summary>
+            <param name="tree">Tree to test the accumulated rays against.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.Add(BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Adds a ray to the batcher. Returns true if the batcher has reached maximum ray capacity and needs to be reset in order to continue adding rays.
+            </summary>
+            <param name="origin">Origin of the ray to test against the tree.</param>
+            <param name="direction">Direction of the ray to test against the tree.</param>
+            <param name="maximumT">Maximum distance that the ray will travel in units of the ray's length.</param>
+            <param name="id">Identifier value for the ray. Leaf tests will have access to the id.</param>
+            <returns>True if the batcher is full and requires a call to ResetRays before adding any more rays, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.RayBatcher.ResetRays">
+            <summary>
+            Resets the accumulated ray count to zero.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Nodes">
+            <summary>
+            Buffer of nodes in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Metanodes">
+            <summary>
+            Buffer of metanodes in the tree. Metanodes contain metadata that aren't read during most query operations but are useful for bookkeeping.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.Leaves">
+            <summary>
+            Buffer of leaves in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.NodeCount">
+            <summary>
+            Number of nodes in the tree.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.LeafCount">
+            <summary>
+            Number of leaves in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.GetBoundsPointers(System.Int32,BepuUtilities.Numerics.Vector3*@,BepuUtilities.Numerics.Vector3*@)">
+            <summary>
+            Gets bounds pointerse for a leaf in the tree.
+            </summary>
+            <param name="leafIndex">Index of the leaf in the tree.</param>
+            <param name="minPointer">Pointer to the minimum bounds vector in the tree.</param>
+            <param name="maxPointer">Pointer to the maximum bounds vector in the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.UpdateBounds(System.Int32,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Applies updated bounds to the given leaf index in the tree, refitting the tree to match.
+            </summary>
+            <param name="leafIndex">Index of the leaf in the tree to update.</param>
+            <param name="min">New minimum bounds for the leaf.</param>
+            <param name="max">New maximum bounds for the leaf.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.#ctor(BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Constructs an empty tree.
+            </summary>
+            <param name="pool">Buffer pool to use to allocate resources in the tree.</param>
+            <param name="initialLeafCapacity">Initial number of leaves to allocate room for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.#ctor(System.Span{System.Byte},BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Loads a tree from a byte buffer created by the Serialize function.
+            </summary>
+            <param name="data">Data to load into the tree.</param>
+            <param name="pool">Pool to use to create the tree.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.GetSerializedByteCount">
+            <summary>
+            Gets the number of bytes required to store the tree.
+            </summary>
+            <returns>Number of bytes required to store the tree.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Serialize(System.Span{System.Byte})">
+            <summary>
+            Writes a tree into a byte buffer.
+            </summary>
+            <param name="bytes">Buffer to hold the tree's data.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Resize(BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Resizes the buffers backing the tree's nodes and leaves. Will not shrink the buffers below the size needed by the currently resident nodes and leaves.
+            </summary>
+            <param name="pool">Pool from which to take and return resources.</param>
+            <param name="targetLeafSlotCount">The desired number of available leaf slots.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Clear">
+            <summary>
+            Resets the tree to a fresh post-construction state, clearing out leaves and nodes but leaving the backing resources intact.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Dispose(BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Disposes the tree's backing resources, returning them to the Pool currently associated with the tree.
+            </summary>
+            <param name="pool">Pool to return resources to.</param>
+            <remarks>Disposed trees can be reused if EnsureCapacity or Resize is used to rehydrate them.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Equals(BepuPhysics.Trees.Tree@,BepuPhysics.Trees.Tree@)">
+            <summary>
+            Tests if two tree references point to the same data.
+            </summary>
+            <param name="a">First tree to compare.</param>
+            <param name="b">Second tree to compare.</param>
+            <returns>True if the two trees have the same nodes and node count, false otherwise.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MergeLeafNodes(BepuUtilities.BoundingBox@,System.Int32,System.Int32,BepuUtilities.BoundingBox@)">
+            <summary>
+            Merges a new leaf node with an existing leaf node, producing a new internal node referencing both leaves, and then returns the index of the leaf node.
+            </summary>
+            <param name="newLeafBounds">Bounding box of the leaf being added.</param>
+            <param name="parentIndex">Index of the parent node that the existing leaf belongs to.</param>
+            <param name="indexInParent">Index of the child wtihin the parent node that the existing leaf belongs to.</param>
+            <param name="merged">Bounding box holding both the new and existing leaves.</param>
+            <returns>Index of the leaf </returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Add(BepuUtilities.BoundingBox,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Adds a leaf to the tree with the given bounding box and returns the index of the added leaf.
+            </summary>
+            <param name="bounds">Extents of the leaf bounds.</param>
+            <param name="pool">Resource pool to use if resizing is required.</param>
+            <returns>Index of the leaf allocated in the tree's leaf array.</returns>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext">
+            <summary>
+            Stores resources required by a worker to dispatch and manage multithreaded work.
+            </summary>
+            <remarks>
+            Some of the resources cached here are technically redundant with the storage used for workers and ends up involving an extra bin scan on a multithreaded test,
+            but the cost associated with doing so is... low. The complexity cost of trying to use the memory allocated for workers is not low.
+            </remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinBoundingBoxes">
+            <summary>
+            Bins associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinCentroidBoundingBoxes">
+            <summary>
+            Centroid bound bins associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinBoundingBoxesScan">
+            <summary>
+            Bins associated with this worker for use in the SAH scan. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinCentroidBoundingBoxesScan">
+            <summary>
+            Centroid bound bins associated with this worker for use in the SAH scan. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinnedBuildWorkerContext.BinLeafCounts">
+            <summary>
+            Bin leaf counts associated with this worker for the duration of a node. This allocation will persist across the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.MultithreadBinnedBuildContext.OriginalSubtreeCount">
+            <summary>
+            The number of subtrees present at the root of the build.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.MultithreadBinnedBuildContext.TopLevelTargetTaskCount">
+            <summary>
+            The target number of tasks that would be used for the root node. Later nodes will tend to target smaller numbers of tasks on the assumption that other parallel nodes will provide enough work to fill in the gaps.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.JobFilterTagHeader">
+            <summary>
+            Random value stored in the upper 32 bits of the job tag submitted for internal multithreading operations.
+            </summary>
+            <remarks>Other systems using the same task stack may want to use their own filtering approaches. By using a very specific and unique signature, those other systems are less likely to accidentally collide.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.CentroidPrepassTaskContext.PrepassWorkers">
+            <summary>
+            Stores per-worker prepass bounds accumulated over multiple tasks. If there are less tasks than workers, then only the lower contiguous region of these bounds are used.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.CentroidPrepassTaskContext.Bounds">
+            <summary>
+            Buffer containing the bounding boxes of all subtrees in the node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.BinSubtreesWorkers">
+            <summary>
+            Bins associated with any workers that end up contributing to this worker's dispatch of a binning loop. If there are less tasks than workers, then only the lower contiguous region of these bounds are used.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.WorkerHelpedWithBinning">
+            <summary>
+            Whether a given worker contributed to the subtree binning process. If this worker did not contribute, there's no reason to merge its bins.
+            This allocation is ephemeral; it is allocated from the current worker when needed. 
+            Note that the allocation occurs on the loop dispatching thread: the workers that help with the loop do not have to allocate anything themselves.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.Subtrees">
+            <summary>
+            Buffer containing all subtrees in this node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.BinSubtreesTaskContext.BinIndices">
+            <summary>
+            Stores the bin indices of all subtrees in the node.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.DoWriteBinIndices">
+            <summary>
+            Marks a <see cref="M:BepuPhysics.Trees.Tree.BinSubtrees``1(BepuUtilities.Numerics.Vector4,System.Boolean,System.Boolean,BepuUtilities.Numerics.Vector128{System.Int32},System.Int32,BepuUtilities.Numerics.Vector4,BepuUtilities.Numerics.Vector4,BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{System.Int32},BepuUtilities.Memory.Buffer{System.Byte})"/> call as requiring the bin indices to be written to the binIndices buffer.
+            </summary>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.DoNotWriteBinIndices">
+            <summary>
+            Marks a <see cref="M:BepuPhysics.Trees.Tree.BinSubtrees``1(BepuUtilities.Numerics.Vector4,System.Boolean,System.Boolean,BepuUtilities.Numerics.Vector128{System.Int32},System.Int32,BepuUtilities.Numerics.Vector4,BepuUtilities.Numerics.Vector4,BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{BepuUtilities.BoundingBox4},BepuUtilities.Memory.Buffer{System.Int32},BepuUtilities.Memory.Buffer{System.Byte})"/> call as not allowing the bin indices to be written to the binIndices buffer.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.Subtrees">
+            <summary>
+            Buffer containing all subtrees in this node.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.SubtreesNext">
+            <summary>
+            Buffer that will contain the partitioned subtrees pulled from <see cref="F:BepuPhysics.Trees.Tree.PartitionTaskContext.Subtrees"/>.
+            </summary>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.PartitionTaskContext.BinIndices">
+            <summary>
+            Buffer containing bin indices for all subtrees in the node (encoded with one byte per subtree).
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuilderInternal(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Node},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Metanode},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Leaf},BepuUtilities.Memory.Buffer{System.Byte},BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a binned build across the input <see cref="T:BepuPhysics.Trees.NodeChild"/> buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="subtreesPong">A parallel buffer to subtrees which is used as a scratch buffer during execution. If a default initialized buffer is provided, a slower sequential in-place fallback will be used.</param>
+            <param name="nodes">Buffer holding the nodes created by the build process.<para/>
+            Nodes are created in a depth first ordering with respect to the input buffer.</param>
+            <param name="metanodes">Buffer holding the metanodes created by the build process.<para/>
+            Metanodes, like nodes, are created in a depth first ordering with respect to the input buffer.
+            Metanodes are in the same order and in the same slots; they simply contain data about nodes that most traversals don't need to know about.</param>
+            <param name="leaves">Buffer holding the leaf references created by the build process.<para/>
+            The indices written by the build process are those defined in the inputs; any <see cref="F:BepuPhysics.Trees.NodeChild.Index"/> that is negative is encoded according to <see cref="M:BepuPhysics.Trees.Tree.Encode(System.Int32)"/> and points into the leaf buffer.
+            If a default-valued (unallocated) buffer is passed in, the binned builder will ignore leaves.</param>
+            <param name="binIndices">Buffer to be used for caching bin indices during execution. If subtreesPong is defined, binIndices must also be defined, and vice versa.</param>
+            <param name="dispatcher">Thread dispatcher used to accelerate the build process.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param>
+            <param name="workerIndex">Index of the current worker.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder.</param>
+            <param name="pool">Buffer pool used to preallocate temporary resources for building.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node. Must be no higher than 255.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Node},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Metanode},BepuUtilities.Memory.Buffer{BepuPhysics.Trees.Leaf},BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a multithreaded binned build across the subtrees buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="nodes">Buffer holding the nodes created by the build process.<para/>
+            Nodes are created in a depth first ordering with respect to the input buffer.</param>
+            <param name="metanodes">Buffer holding the metanodes created by the build process.<para/>
+            Metanodes, like nodes, are created in a depth first ordering with respect to the input buffer.
+            Metanodes are in the same order and in the same slots; they simply contain data about nodes that most traversals don't need to know about.</param>
+            <param name="leaves">Buffer holding the leaf references created by the build process.<para/>
+            The indices written by the build process are those defined in the inputs; any <see cref="F:BepuPhysics.Trees.NodeChild.Index"/> that is negative is encoded according to <see cref="M:BepuPhysics.Trees.Tree.Encode(System.Int32)"/> and points into the leaf buffer.
+            If a default-valued (unallocated) buffer is passed in, the binned builder will ignore leaves.</param>
+            <param name="pool">Buffer pool used to preallocate a pingpong buffer if the number of subtrees exceeds maximumSubtreeStackAllocationCount. If null, stack allocation or a slower in-place partitioning will be used.
+            <param name="dispatcher">Dispatcher used to multithread the execution of the build. If the dispatcher is not null, pool must also not be null.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param>
+            <para/>A pool must be provided if a thread dispatcher is given.</param>
+            <param name="workerIndex">Index of the currently executing worker. If not running within a dispatch, 0 is valid.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.
+            If negative, the dispatcher's thread count will be used.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder. If negative, the dispatcher's thread count will be used.</param>
+            <param name="maximumSubtreeStackAllocationCount">Maximum number of subtrees to try putting on the stack for the binned builder's pong buffers.<para/>
+            Subtree counts larger than this threshold will either resort to a buffer pool allocation (if available) or slower in-place partition operations.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.BinnedBuild(BepuUtilities.Memory.Buffer{BepuPhysics.Trees.NodeChild},BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.TaskStack*,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,BepuUtilities.Numerics.Number,System.Int32)">
+            <summary>
+            Runs a binned build across the subtrees buffer.
+            </summary>
+            <param name="subtrees">Subtrees (either leaves or nodes) to run the builder over. The builder may make in-place modifications to the input buffer; the input buffer should not be assumed to be in a valid state after the builder runs.</param>
+            <param name="pool">Buffer pool used to preallocate a pingpong buffer if the number of subtrees exceeds maximumSubtreeStackAllocationCount. If null, stack allocation or a slower in-place partitioning will be used.
+            <para/>A pool must be provided if a thread dispatcher is given.</param>
+            <param name="dispatcher">Dispatcher used to multithread the execution of the build. If the dispatcher is not null, pool must also not be null.</param>
+            <param name="taskStackPointer">Task stack being used to run the build process, if any.
+            If provided, the builder assumes the refinement is running within an existing multithreaded dispatch and will not call IThreadDispatcher.DispatchWorkers.
+            If null, the builder will create its own task stack and call IThreadDispatcher.DispatchWorkers internally.</param> 
+            <param name="workerIndex">Index of the currently executing worker. If not running within a dispatch, 0 is valid.</param>
+            <param name="workerCount">Number of workers that may be used in the builder. This should span all worker indices that may contribute to the build process even only a subset are expected to be used at any one time.
+            If negative, the dispatcher's thread count will be used.</param>
+            <param name="targetTaskCount">Number of tasks to try to use in the builder. If negative, the dispatcher's thread count will be used.</param>
+            <param name="maximumSubtreeStackAllocationCount">Maximum number of subtrees to try putting on the stack for the binned builder's pong buffers.<para/>
+            Subtree counts larger than this threshold will either resort to a buffer pool allocation (if available) or slower in-place partition operations.</param>
+            <param name="minimumBinCount">Minimum number of bins the builder should use per node.</param>
+            <param name="maximumBinCount">Maximum number of bins the builder should use per node.</param>
+            <param name="leafToBinMultiplier">Multiplier to apply to the subtree count within a node to decide the bin count. Resulting value will then be clamped by the minimum/maximum bin counts.</param>
+            <param name="microsweepThreshold">Threshold at or under which the binned builder resorts to local counting sort sweeps.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.ComputeCacheOptimalLocation(System.Int32)">
+            <summary>
+            Computes the index where the given node would be located if the tree were in depth first traversal order.
+            </summary>
+            <param name="nodeIndex">Node index to find the location for in a depth first traversal order.</param>
+            <returns>Target index of the node if the tree were in depth first traversal order.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimize(System.Int32)">
+            <summary>
+            Begins a cache optimization at the given node and proceeds all the way to the bottom of the tree.
+            Requires that the targeted node is already at the global optimum position.
+            </summary>
+            <param name="nodeIndex">Node to begin the optimization process at.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimizeLimitedSubtree(System.Int32,System.Int32)">
+            <summary>
+            Starts a cache optimization process at the target node index and the nodeOptimizationCount closest nodes in the tree.
+            </summary>
+            <param name="nodeIndex">Node index to start the optimization process at.</param>
+            <param name="nodeOptimizationCount">Number of nodes to move.</param>
+            <remarks>This optimizer will move the targeted node index to the globally optimal location if necessary.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.CacheOptimizeRegion(System.Int32,System.Int32)">
+            <summary>
+            Puts all nodes starting from the given node index into depth first traversal order.
+            If the count is larger than the number of nodes beneath the starting node, the optimization will stop early.
+            </summary>
+            <param name="startingNodeIndex">Node index to start the optimization at.</param>
+            <param name="targetCount">Number of nodes to try to optimize.</param>
+            <returns>Number of nodes optimized.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.PrepareJobs(BepuPhysics.Trees.Tree@,BepuPhysics.Trees.Tree@,`0[],System.Int32)">
+            <summary>
+            Prepares the jobs associated with a self test. Must be called before a dispatch over PairTest.
+            </summary>
+            <param name="overlapHandlers">Callbacks used to handle individual overlaps detected by the self test.</param>
+            <param name="threadCount">Number of threads to prepare jobs for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.CompleteTest">
+            <summary>
+            Cleans up after a multithreaded self test.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedIntertreeTest`1.PairTest(System.Int32)">
+            <summary>
+            Executes a single worker of the multithreaded self test.
+            </summary>
+            <param name="workerIndex">Index of the worker executing this set of tests.</param>
+        </member>
+        <member name="T:BepuPhysics.Trees.Tree.RefitAndRefineMultithreadedContext">
+            <summary>
+            Caches input and output for the multithreaded execution of a tree's refit and refinement operations.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.TryPushChildForRootRefinement(System.Int32,BepuUtilities.Memory.Buffer{BepuUtilities.Numerics.Vector{System.Int32}},System.Int32,System.Int32,BepuPhysics.Trees.NodeChild@,BepuUtilities.Collections.QuickList{System.ValueTuple{System.Int32,System.Int32}}@,BepuUtilities.Collections.QuickList{BepuPhysics.Trees.NodeChild}@)">
+            <summary>
+            Checks if a child should be a subtree in the root refinement. If so, it's added to the list. Otherwise, it's pushed onto the stack.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="F:BepuPhysics.Trees.Tree.RefinementContext.Tree">
+            <remarks>
+            This is a *copy* of the original tree that spawned this refinement. Refinements do not modify the memory stored at the level of the Tree, only memory *pointed* to by the tree.
+            </remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,System.Int32,BepuUtilities.TaskScheduling.TaskStack*,BepuUtilities.IThreadDispatcher,System.Boolean,System.Int32,System.Int32)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refine2(System.Int32,System.Int32@,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Incrementally refines a subset of the tree by running a binned builder over subtrees.
+            </summary>
+            <param name="rootRefinementSize">Size of the refinement run on nodes near the root.</param>
+            <param name="subtreeRefinementStartIndex">Index used to distribute subtree refinements over multiple executions.</param>
+            <param name="subtreeRefinementCount">Number of subtree refinements to execute.</param>
+            <param name="subtreeRefinementSize">Target size of subtree refinements. The actual size of refinement will usually be larger or smaller.</param>
+            <param name="pool">Pool used for ephemeral allocations during the refinement.</param>
+            <remarks>Nodes will not be refit.</remarks>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.RefitForNodeBoundsChange(System.Int32)">
+            <summary>
+            Refits the bounding box of every parent of the node recursively to the root.
+            </summary>
+            <param name="nodeIndex">Node to propagate a node change for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refit">
+            <summary>
+            Updates the bounding boxes of all internal nodes in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.Refit2">
+            <summary>
+            Updates the bounding boxes of all internal nodes in the tree.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.RemoveAt(System.Int32)">
+            <summary>
+            Removes a leaf at an index. If the index is not at the end of the leaf list, the last leaf is swapped into the removed location.
+            </summary>
+            <param name="leafIndex">Index of the leaf to remove.</param>
+            <returns>Former index of the leaf that was moved into the removed leaf's slot, if any.
+            If leafIndex pointed at the last slot in the list, then this returns -1 since no leaf was moved.</returns>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.PrepareJobs(BepuPhysics.Trees.Tree@,`0[],System.Int32)">
+            <summary>
+            Prepares the jobs associated with a self test. Must be called before a dispatch over PairTest.
+            </summary>
+            <param name="tree">Tree to test against itself.</param>
+            <param name="overlapHandlers">Callbacks used to handle individual overlaps detected by the self test.</param>
+            <param name="threadCount">Number of threads to prepare jobs for.</param>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.CompleteSelfTest">
+            <summary>
+            Cleans up after a multithreaded self test.
+            </summary>
+        </member>
+        <member name="M:BepuPhysics.Trees.Tree.MultithreadedSelfTest`1.PairTest(System.Int32)">
+            <summary>
+            Executes a single worker of the multithreaded self test.
+            </summary>
+            <param name="workerIndex">Index of the worker executing this set of tests.</param>
+        </member>
+    </members>
+</doc>

BIN
Release/net8.0/BepuUtilities.dll


BIN
Release/net8.0/BepuUtilities.pdb


+ 5560 - 0
Release/net8.0/BepuUtilities.xml

@@ -0,0 +1,5560 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>BepuUtilities</name>
+    </assembly>
+    <members>
+        <member name="T:BepuUtilities.AffineTransform">
+            <summary>
+             A transformation composed of a linear transformation and a translation.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.AffineTransform.Translation">
+            <summary>
+             Translation in the affine transform.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.AffineTransform.LinearTransform">
+            <summary>
+            Linear transform in the affine transform.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.AffineTransform.Identity">
+            <summary>
+             Gets the identity affine transform.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="translation">Translation to use in the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine tranform.
+            </summary>
+            <param name="orientation">Orientation to use as the linear transform.</param>
+            <param name="translation">Translation to use in the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="scaling">Scaling to apply in the linear transform.</param>
+            <param name="orientation">Orientation to apply in the linear transform.</param>
+            <param name="translation">Translation to apply.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.#ctor(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3)">
+            <summary>
+             Constructs a new affine transform.
+            </summary>
+            <param name="linearTransform">The linear transform component.</param>
+            <param name="translation">Translation component of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.AffineTransform@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+             Transforms a vector by an affine transform.
+            </summary>
+            <param name="position">Position to transform.</param>
+            <param name="transform">Transform to apply.</param>
+            <param name="transformed">Transformed position.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Invert(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+             Inverts an affine transform.
+            </summary>
+            <param name="transform">Transform to invert.</param>
+             <param name="inverse">Inverse of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.InvertRigid(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+             Inverts a rigid transform.
+            </summary>
+            <param name="transform">Transform to invert.</param>
+             <param name="inverse">Inverse of the transform.</param>
+        </member>
+        <member name="M:BepuUtilities.AffineTransform.Multiply(BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@,BepuUtilities.AffineTransform@)">
+            <summary>
+            Multiplies a transform by another transform.
+            </summary>
+            <param name="a">First transform.</param>
+            <param name="b">Second transform.</param>
+            <param name="transform">Combined transform.</param>
+        </member>
+        <member name="T:BepuUtilities.BoundingBox4">
+            <summary>
+            Represents a bounding box as two <see cref="T:BepuUtilities.Numerics.Vector4"/> values to to avoid complexity associated with a <see cref="T:BepuUtilities.Numerics.Vector3"/>'s empty SIMD lane.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox4.Min">
+            <summary>
+            Location with the lowest X, Y, and Z coordinates in the axis-aligned bounding box. W lane is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox4.Max">
+            <summary>
+            Location with the highest X, Y, and Z coordinates in the axis-aligned bounding box. W lane is undefined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox4.ToString">
+            <summary>
+            Creates a string representation of the bounding box.
+            </summary>
+            <returns>String representation of the bounding box.</returns>
+        </member>
+        <member name="T:BepuUtilities.BoundingBox">
+            <summary>
+            Provides simple axis-aligned bounding box functionality.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox.Min">
+            <summary>
+            Location with the lowest X, Y, and Z coordinates in the axis-aligned bounding box.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingBox.Max">
+            <summary>
+            Location with the highest X, Y, and Z coordinates in the axis-aligned bounding box.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Constructs a bounding box from the specified minimum and maximum.
+            </summary>
+            <param name="min">Location with the lowest X, Y, and Z coordinates contained by the axis-aligned bounding box.</param>
+            <param name="max">Location with the highest X, Y, and Z coordinates contained by the axis-aligned bounding box.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)">
+            <summary>
+            Checks if two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/> intersect.
+            The referenced values must not be in unpinned managed memory.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <returns>True if the children overlap, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.BoundingBox,BepuUtilities.BoundingBox)">
+            <summary>
+            Determines if a bounding box intersects another bounding box.
+            </summary>
+            <param name="a">First bounding box to test.</param>
+            <param name="b">Second bounding box to test.</param>
+            <returns>Whether the bounding boxes intersected.</returns>
+            <remarks>When possible, prefer using the <see cref="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)"/> variant for slightly better performance.</remarks>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Determines if a bounding box intersects another bounding box.
+            </summary>
+            <param name="minA">Minimum bounds of bounding box A.</param>
+            <param name="maxA">Maximum bounds of bounding box A.</param>
+            <param name="minB">Minimum bounds of bounding box B.</param>
+            <param name="maxB">Maximum bounds of bounding box B.</param>
+            <returns>Whether the bounding boxes intersected.</returns>
+            <remarks>When possible, prefer using the <see cref="M:BepuUtilities.BoundingBox.IntersectsUnsafe``2(``0@,``1@)"/> variant for slightly better performance.</remarks>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.ComputeVolume(BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes the volume of the bounding box.
+            </summary>
+            <param name="box">Bounding box to measure.</param>
+            <returns>Volume of the bounding box.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMerged(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Computes a bounding box which contains two other bounding boxes.
+            </summary>
+            <param name="minA">Minimum of the first bounding box to merge.</param>
+            <param name="maxA">Maximum of the first bounding box to merge.</param>
+            <param name="minB">Minimum of the second bounding box to merge.</param>
+            <param name="maxB">Maximum of the second bounding box to merge.</param>
+            <param name="min">Minimum of the merged bounding box.</param>
+            <param name="max">Maximum of the merged bounding box.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMerged(BepuUtilities.BoundingBox@,BepuUtilities.BoundingBox@,BepuUtilities.BoundingBox@)">
+            <summary>
+            Computes a bounding box which contains two other bounding boxes.
+            </summary>
+            <param name="a">First bounding box to contain.</param>
+            <param name="b">Second bounding box to contain.</param>
+            <param name="merged">Bounding box to contain both input boxes.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMergedUnsafeWithPreservation``2(``0@,``1@,``0@)">
+            <summary>
+            Merges two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/>.
+            The referenced values must not be in unpinned managed memory.
+            Any data in the empty slots is preserved.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <param name="merged">Merged bounding box.</param>
+            <typeparam name="TA">Type of the first bounding box-like parameter.</typeparam>
+            <typeparam name="TB">Type of the second bounding box-like parameter.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateMergedUnsafe``2(``0@,``1@,``0@)">
+            <summary>
+            Merges two structures with memory layouts equivalent to the <see cref="T:BepuUtilities.BoundingBox"/>.
+            The referenced values must not be in unpinned managed memory.
+            Any data in the empty slots is not preserved.
+            </summary>
+            <param name="boundingBoxA">First bounding box to compare.</param>
+            <param name="boundingBoxB">Second bounding box to compare.</param>
+            <param name="merged">Merged bounding box.</param>
+            <typeparam name="TA">Type of the first bounding box-like parameter.</typeparam>
+            <typeparam name="TB">Type of the second bounding box-like parameter.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.Intersects(BepuUtilities.BoundingSphere@)">
+            <summary>
+            Determines if a bounding box intersects a bounding sphere.
+            </summary>
+            <param name="boundingSphere">Sphere to test for intersection.</param>
+            <returns>Whether the bounding shapes intersect.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateFromPoints(System.ReadOnlySpan{BepuUtilities.Numerics.Vector3})">
+            <summary>
+            Creates the smallest possible bounding box that contains a list of points.
+            </summary>
+            <param name="points">Points to enclose with a bounding box.</param>
+            <returns>Bounding box which contains the list of points.</returns>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.CreateFromSphere(BepuUtilities.BoundingSphere@,BepuUtilities.BoundingBox@)">
+            <summary>
+            Creates a bounding box from a bounding sphere.
+            </summary>
+            <param name="boundingSphere">Bounding sphere to be used to create the bounding box.</param>
+            <param name="boundingBox">Bounding box created from the bounding sphere.</param>
+        </member>
+        <member name="M:BepuUtilities.BoundingBox.ToString">
+            <summary>
+            Creates a string representation of the bounding box.
+            </summary>
+            <returns>String representation of the bounding box.</returns>
+        </member>
+        <member name="T:BepuUtilities.BoundingSphere">
+            <summary>
+            Provides XNA-like bounding sphere functionality.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingSphere.Center">
+            <summary>
+            Location of the center of the sphere.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.BoundingSphere.Radius">
+            <summary>
+            Radius of the sphere.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.BoundingSphere.#ctor(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a new bounding sphere.
+            </summary>
+            <param name="center">Location of the center of the sphere.</param>
+            <param name="radius">Radius of the sphere.</param>
+        </member>
+        <member name="T:BepuUtilities.BundleIndexing">
+            <summary>
+            Some helpers for indexing into vector bundles.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.BundleIndexing.VectorMask">
+            <summary>
+            <![CDATA[Gets the mask value such that x & VectorMask computes x % Vector<Number>.Count.]]>
+            </summary>
+            <remarks>The JIT recognizes that this value is constant!</remarks>
+        </member>
+        <member name="P:BepuUtilities.BundleIndexing.VectorShift">
+            <summary>
+            <![CDATA[Gets the shift value such that x >> VectorShift divides x by Vector<Number>.Count.]]>
+            </summary>
+            <remarks>The JIT recognizes that this value is constant!</remarks>
+        </member>
+        <member name="M:BepuUtilities.BundleIndexing.GetLastSetLaneCount(BepuUtilities.Numerics.Vector{System.Int32})">
+            <summary>
+            Gets the number of lanes that occur at or before the last set lane. In other words, if the lanes in the vector are (-1, 0, -1, 0), then this will return 3.
+            </summary>
+            <param name="v">Vector to examine.</param>
+            <returns>Number of lanes that occur at or before the last set lane.</returns>
+        </member>
+        <member name="T:BepuUtilities.Collections.ArrayEnumerable`1">
+            <summary>
+            Enumerable wrapper of an array interval.
+            </summary>
+            <typeparam name="T">Type of the array elements.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[],System.Int32,System.Int32)">
+            <summary>
+            Creates a enumerable that spans an interval in an array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+            <param name="start">Inclusive beginning of the iteration interval.</param>
+            <param name="end">Exclusive end of the iteration interval.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[],System.Int32)">
+            <summary>
+            Creates a enumerable that starts at the first index of the array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+            <param name="count">Exclusive end of the iteration interval.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.ArrayEnumerable`1.#ctor(`0[])">
+            <summary>
+            Creates a enumerable over the entire array.
+            </summary>
+            <param name="array">Array to iterate over.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.ArrayEnumerator`1">
+            <summary>
+            Enumerates over a given array region.
+            </summary>
+            <typeparam name="T">Type of the array to iterate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IComparerRef`1">
+            <summary>
+            Defines a type capable of comparing two objects passed by reference.
+            </summary>
+            <typeparam name="T">Type of the objects to compare.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IEqualityComparerRef`1">
+            <summary>
+            Defines a type capable of performing the hashing and equality comparisons necessary for hash based collections.
+            </summary>
+            <typeparam name="T">Type of the elements to be hashed and compared.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.IndexSet">
+            <summary>
+            Collection of unique indices supporting add, remove, and contains operations.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.IndexSet.Flags">
+            <summary>
+            Since we only ever need to support add, remove and contains checks, and because the indices are guaranteed unique,
+            we can just use packed bitfields. Each bit represents one index's containment state.
+            </summary>
+            <remarks> 
+            This can grow up to the number of (indexCount / 8) bytes in the worst case, but that is much, much smaller than using a dictionary or set.
+            16384 bodies would only take 2KB. Even if you have 1000 batches all at that size, it's a pretty unconcerning amount of storage.
+            (And to be clear, 1000 batches is a crazy pathological number. Most simulations will have less than 20 batches.)
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.CanFit(System.Span{System.Int32})">
+            <summary>
+            Gets whether the batch could hold the specified indices.
+            </summary>
+            <param name="indexList">List of indices to check for in the batch.</param>
+            <returns>True if none of the indices are present in the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.SetUnsafely(System.Int32)">
+            <summary>
+            Sets an index in the set to contained without checking capacity or whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <remarks>This is functionally identical to the AddUnsafely method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Set(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Sets an index in the set to contained without checking whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <param name="pool">Pool to reuse the set if necessary.</param>
+            <remarks>This is functionally identical to the Add method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Unset(System.Int32)">
+            <summary>
+            Marks an index in the set as uncontained without checking whether it is already set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <remarks>This is functionally identical to the Remove method, but it doesn't include the same debug assertions. Just a way to make intent clear so that the assert can catch errors.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.AddUnsafely(System.Int32)">
+            <summary>
+            Adds an index to the set without checking capacity.
+            </summary>
+            <param name="index">Index to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Add(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an index to the set.
+            </summary>
+            <param name="index">Index to add.</param>
+            <param name="pool">Pool to use to resize the set if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.IndexSet.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Disposes the internal buffer.
+            </summary>
+            <remarks>The instance can be reused after a Dispose if EnsureCapacity or Resize is called.
+            That's a little meaningless given that the instance is a value type, but hey, you don't have to new another one, that's something.</remarks>
+        </member>
+        <member name="T:BepuUtilities.Collections.IPredicate`1">
+            <summary>
+            Defines a type able to match an element.
+            </summary>
+            <typeparam name="T">Type of the object to match.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.LSBRadixSort.Sort``1(BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32,System.Int32,BepuUtilities.Memory.BufferPool,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Sorts a set of keys and their associated values using radix sort.
+            </summary>
+            <remarks>Only one invocation of the sort can be running at a time on a given instance of the sorter.</remarks>
+            <typeparam name="TValue">Type of the values to sort.</typeparam>
+            <typeparam name="TKeySpan">Type of the span that holds the keys to sort.</typeparam>
+            <typeparam name="TValueSpan">Type of the span that holds the values to sort.</typeparam>
+            <param name="inputKeys">Span containing the keys to sort.</param>
+            <param name="inputValues">Span containing the values to sort.</param>
+            <param name="scratchKeys">Scratch array to write temporary results into.</param>
+            <param name="scratchValues">Scratch array to write temporary results into.</param>
+            <param name="startIndex">Start location of the sort.</param>
+            <param name="count">Number of elements, including the start index, to sort.</param>
+            <param name="keysUpperBound">Value equal to or greater than the value of any key within the sorted key set. Tighter bounds can allow faster execution.</param>
+            <param name="bufferPool">Pool to pull temporary buffers from.</param>
+            <param name="sortedKeys">Span containing the sorted keys. Will be either the input keys span or scratchKeys span depending on the keysUpperBound.</param>
+            <param name="sortedValues">Span containing the sorted values. Will be either the input values span or scratchValues span depending on the keysUpperBound.
+            Only the region defined by the startIndex and count is modified; the remainder of the span (whether it be the input span or the scratch span) is unmodified.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.PrimitiveComparer`1">
+            <summary>
+            Provides optimized equality testing, comparison, and hashing for primitive types.
+            </summary>
+            <typeparam name="T">Type to compare and hash.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.HashHelper">
+            <summary>
+            Contains basic helpers for hashing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.HashHelper.Rehash(System.Int32)">
+            <summary>
+            Redistributes a hash. Useful for converting unique but contiguous hashes into a semirandom distribution.
+            </summary>
+            <param name="hash">Hash to redistribute.</param>
+            <returns>Hashed hash.</returns>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickDictionary`3">
+            <summary>
+            Container supporting constant time adds and removes of key-value pairs while preserving fast iteration times.
+            Offers very direct access to information at the cost of safety.
+            </summary>
+            <remarks>
+            <para>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </para>
+            <para>Note that the implementation is extremely simple. It uses single-step linear probing under the assumption of very low collision rates.
+            A generous table capacity is recommended; this trades some memory for simplicity and runtime performance.</para></remarks>
+            <typeparam name="TKey">Type of key held by the container.</typeparam>
+            <typeparam name="TValue">Type of value held by the container.</typeparam>
+            <typeparam name="TEqualityComparer">Type of the equality tester and hash calculator used.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Count">
+            <summary>
+            Gets the number of elements in the dictionary.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.TableMask">
+            <summary>
+            Mask for use in performing fast modulo operations for hashes. Requires that the table span is a power of 2.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.TablePowerOffset">
+            <summary>
+            Desired size of the table relative to the size of the key/value spans in terms of a power of 2. Table capacity target will be elementCapacityTarget * 2^TablePowerOffset.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Table">
+            <summary>
+            Backing memory of the dictionary's table. Values are distributed according to the EqualityComparer's hash function.
+            Slots containing 0 are unused and point to nothing. Slots containing higher values are equal to one plus the index of an element in the Span.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Keys">
+            <summary>
+            Backing memory containing the keys of the dictionary.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.Values">
+            <summary>
+            Backing memory containing the values of the dictionary.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickDictionary`3.EqualityComparer">
+            <summary>
+            Equality comparer used to compare and hash keys.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickDictionary`3.Item(System.Int32)">
+            <summary>
+            Gets or sets a key-value pair at the given index in the list representation.
+            </summary>
+            <param name="index">Index to grab a pair from.</param>
+            <returns>Pair at the given index in the dictionary.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,`2,System.Int32)">
+            <summary>
+            Creates a new dictionary.
+            </summary>
+            <param name="initialKeySpan">Span to use as backing memory of the dictionary keys.</param>
+            <param name="initialValueSpan">Span to use as backing memory of the dictionary values.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="comparer">Comparer to use for the dictionary.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,System.Int32)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialKeySpan">Span to use as backing memory of the dictionary keys.</param>
+            <param name="initialValueSpan">Span to use as backing memory of the dictionary values.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="comparer">Comparer to use for the dictionary.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool,`2)">
+            <summary>
+            Creates a new dictionary.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new dictionary with a default constructed comparer.
+            </summary>
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="comparer">Comparer to use in the dictionary.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`1}@,BepuUtilities.Memory.Buffer{System.Int32}@)">
+            <summary>
+            Swaps out the dictionary's backing memory span for a new span.
+            If the new span is smaller, the dictionary's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newKeySpan">New span to use for keys.</param>
+            <param name="newValueSpan">New span to use for values.</param>
+            <param name="newTableSpan">New span to use for the table. Must be zeroed.</param>
+            <param name="oldKeySpan">Previous span used for keys.</param>
+            <param name="oldValueSpan">Previous span used for values.</param>
+            <param name="oldTableSpan">Previous span used for the table.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the dictionary's backing array for the given size.
+            If the new span is smaller, the dictionary's count is truncated and the extra elements are dropped. 
+            </summary>
+            <param name="newSize">Minimum size of the new object memory block. Actual size may be larger.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the dictionary to pools.
+            </summary>
+            <param name="keyPool">Pool used for key spans.</param>   
+            <param name="valuePool">Pool used for value spans.</param>   
+            <param name="tablePool">Pool used for table spans.</param>
+            <typeparam name="TKeyPool">Type of the pool used for key spans.</typeparam>
+            <typeparam name="TValuePool">Type of the pool used for value spans.</typeparam>
+            <typeparam name="TTablePool">Type of the pool used for table spans.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the dictionary has enough room to hold the specified number of elements.
+            </summary>     
+            <param name="pool">Pool used for spans.</param>   
+            <param name="count">Number of elements to hold.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the internal buffers to the smallest acceptable size and releases the old buffers to the pools.
+            </summary>
+            <param name="pool">Pool used for spans.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.GetTableIndices(`0@,System.Int32@,System.Int32@)">
+            <summary>
+            Gets the index of the element in the table.
+            </summary>
+            <param name="element">Element to look up.</param>
+            <param name="tableIndex">Index of the element in the redirect table, or if it is not present, the index of where it would be added.</param>
+            <param name="elementIndex">The index of the element in the element arrays, if it exists; -1 otherwise.</param>
+            <returns>True if the element is present in the dictionary, false if it is not.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.IndexOf(`0)">
+            <summary>
+            Gets the index of the key in the dictionary values list if it exists.
+            </summary>
+            <param name="key">Key to get the index of.</param>
+            <returns>The index of the key if the key exists in the dictionary, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.IndexOf(`0@)">
+            <summary>
+            Gets the index of the key in the dictionary values list if it exists.
+            </summary>
+            <param name="key">Key to get the index of.</param>
+            <returns>The index of the key if the key exists in the dictionary, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.ContainsKey(`0)">
+            <summary>
+            Checks if a given key already belongs to the dictionary.
+            </summary>
+            <param name="key">Key to test for.</param>
+            <returns>True if the key already belongs to the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.ContainsKey(`0@)">
+            <summary>
+            Checks if a given key already belongs to the dictionary.
+            </summary>
+            <param name="key">Key to test for.</param>
+            <returns>True if the key already belongs to the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.TryGetValue(`0,`1@)">
+            <summary>
+            Tries to retrieve the value associated with a key if it exists.
+            </summary>
+            <param name="key">Key to look up.</param>
+            <param name="value">Value associated with the specified key.</param>
+            <returns>True if a value was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.TryGetValue(`0@,`1@)">
+            <summary>
+            Tries to retrieve the value associated with a key if it exists.
+            </summary>
+            <param name="key">Key to look up.</param>
+            <param name="value">Value associated with the specified key.</param>
+            <returns>True if a value was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlotUnsafely(`0@,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlotUnsafely(`0,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlot(`0@,BepuUtilities.Memory.BufferPool,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="pool">Pool used to resize the container if necessary to allocate.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FindOrAllocateSlot(`0,BepuUtilities.Memory.BufferPool,System.Int32@)">
+            <summary>
+            Attempts to find the index of the given key. If it is present, outputs the index and returns true. If it is not present, it allocates a slot for it, outputs the index of that new slot, and returns false.
+            If a new slot is allocated, the value stored in the slot is undefined.
+            </summary>
+            <param name="key">Key to find or allocate a slot for.</param>
+            <param name="pool">Pool used to resize the container if necessary to allocate.</param>
+            <param name="slotIndex">Index of the found or allocated slot.</param>
+            <returns>True if the key was already present in the dictionary, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplaceUnsafely(`0@,`1@)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplaceUnsafely(`0,`1@)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddUnsafely(`0@,`1@)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddUnsafely(`0,`1@)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplace(`0@,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AddAndReplace(`0,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary. If a version of the key (same hash code, 'equal' by comparer) is already present,
+            the existing pair is replaced by the given version.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the pair was added to the dictionary, false if the key was already present and its pair was replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Add(`0@,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <typeparam name="TPool">Type of the pool used for spans.</typeparam>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Add(`0,`1@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds a pair to the dictionary if it is not already present.
+            </summary>
+            <param name="key">Key of the pair to add.</param>
+            <param name="value">Value of the pair to add.</param>
+            <param name="pool">Pool to pull resources from and to return resources to.</param>   
+            <typeparam name="TPool">Type of the pool to use.</typeparam>
+            <returns>True if the pair was added to the dictionary, false if the key was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(System.Int32,System.Int32)">
+            <summary>
+            Removes an element from the dictionary according to its table and element index. Can only be used if the table and element index are valid.
+            </summary>
+            <param name="tableIndex">Index of the table entry associated with the existing element to remove.</param>
+            <param name="elementIndex">Index of the existing element to remove in the contiguous key/value arrays.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(`0@)">
+            <summary>
+            Removes a pair associated with a key from the dictionary if belongs to the dictionary.
+            Does not preserve the order of elements in the dictionary.
+            </summary>
+            <param name="key">Key of the pair to remove.</param>
+            <returns>True if the key was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastRemove(`0)">
+            <summary>
+            Removes a pair associated with a key from the dictionary if belongs to the dictionary.
+            Does not preserve the order of elements in the dictionary.
+            </summary>
+            <param name="key">Key of the pair to remove.</param>
+            <returns>True if the key was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.Clear">
+            <summary>
+            Removes all elements from the dictionary.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.FastClear">
+            <summary>
+            Removes all elements from the dictionary without modifying the contents of the keys or values arrays.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickDictionary`3.AsSpans(System.Span{`0}@,System.Span{`1}@)">
+            <summary>
+            Gets the keys and values wrapped in spans.
+            </summary>
+            <param name="keys">Keys from the dictionary.</param>
+            <param name="values">Values from the dictionary.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickList`1">
+            <summary>
+            Container supporting list-like behaviors built on top of unmanaged buffers.
+            </summary>
+            <remarks>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </remarks>
+            <typeparam name="T">Type of the elements in the list.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickList`1.Span">
+            <summary>
+            Backing memory containing the elements of the list.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickList`1.Count">
+            <summary>
+            Number of elements in the list.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickList`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the element at the given index in the list.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the list.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.GetPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the element at the given index in the list.
+            </summary>
+            <param name="index">Index to grab an element pointer from.</param>
+            <returns>Pointer to the element at the given index in the list.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.#ctor(BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a new list.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory to begin with.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new list.
+            </summary>
+            <param name="pool">Pool to pull a span from.</param>
+            <param name="minimumInitialCount">The minimum size of the region to be pulled from the pool. Actual span may be larger.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Swaps out the list's backing memory span for a new span.
+            If the new span is smaller, the list's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newSpan">New span to use.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the list's backing array for the given size.
+            Any elements that do not fit in the resized span are dropped and the count is truncated.
+            </summary>
+            <param name="newSize">Minimum number of elements required in the new backing array. Actual capacity of the created span may exceed this size.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the list to pools. Any managed references still contained within the list are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the list has enough room to hold the specified number of elements. Can be used to initialize a list.
+            </summary>
+            <param name="count">Number of elements to hold.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Compacts the internal buffer to the minimum size required for the number of elements in the list.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(BepuUtilities.Memory.Buffer{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a buffer to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(BepuUtilities.Memory.Buffer{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a buffer to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(BepuUtilities.Memory.Buffer{`0})">
+            <summary>
+            Adds the elements of a buffer to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(BepuUtilities.Memory.Buffer{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a buffer to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.Span{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.Span{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.Span{`0})">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.Span{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.ReadOnlySpan{`0},System.Int32,System.Int32)">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.ReadOnlySpan{`0},System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="start">Start index of the added range.</param>
+            <param name="count">Number of elements in the added range.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRangeUnsafely(System.ReadOnlySpan{`0})">
+            <summary>
+            Adds the elements of a span to the QuickList without checking capacity.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddRange(System.ReadOnlySpan{`0},BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the elements of a span to the QuickList.
+            </summary>
+            <param name="span">Span of elements to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AllocateUnsafely">
+            <summary>
+            Appends space on the end of the list without checking capacity and returns a reference to it.
+            </summary>
+            <returns>Reference to the allocated space.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AllocateUnsafely(System.Int32)">
+            <summary>
+            Appends space on the end of the list without checking capacity and returns a reference to the beginning of it.
+            </summary>
+            <param name="count">Number of elements to allocate space for.</param>
+            <returns>Reference to the beginning of the allocated space.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Allocate(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Appends space on the end of the list and returns a reference to it.
+            </summary>
+            <returns>Reference to the allocated space.</returns>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Allocate(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Appends space on the end of the list and returns a reference to the beginning of it.
+            </summary>
+            <returns>Reference to the beginning of the allocated space.</returns>
+            <param name="count">Number of elements to allocate space for.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.AddUnsafely(`0@)">
+            <summary>
+            Adds the element to the list without checking the count against the capacity.
+            </summary>
+            <param name="element">Item to add.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Add(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds the element to the list.
+            </summary>
+            <param name="element">Item to add.</param>
+            <param name="pool">Pool used to obtain a new span if needed.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf(`0)">
+            <summary>
+            Gets the index of the element in the list using the default comparer, if present.
+            </summary>
+            <param name="element">Element to find.</param>
+            <returns>Index of the element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf(`0@)">
+            <summary>
+            Gets the index of the element in the list using the default comparer, if present.
+            </summary>
+            <param name="element">Element to find.</param>
+            <returns>Index of the element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.IndexOf``1(``0@)">
+            <summary>
+            Gets the index of the first element in the list which matches a predicate, if any.
+            </summary>
+            <param name="predicate">Predicate to match.</param>
+            <returns>Index of the first matching element in the list if present, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove(`0@)">
+            <summary>
+            Removes an element from the list. Preserves the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove(`0)">
+            <summary>
+            Removes an element from the list. Preserves the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Remove``1(``0@)">
+            <summary>
+            Removes the first element that matches a predicate from the list. Preserves the order of elements.
+            </summary>
+            <param name="predicate">Predicate to test elements with.</param>
+            <returns>True if an element matched and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove(`0@)">
+            <summary>
+            Removes an element from the list. Does not preserve the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove(`0)">
+            <summary>
+            Removes an element from the list. Comparisons use the default comparer for the type. Does not preserve the order of elements.
+            </summary>
+            <param name="element">Element to remove from the list.</param>
+            <returns>True if the element was present and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemove``1(``0@)">
+            <summary>
+            Removes the first element from the list that matches a predicate, moving from low to high indices. Does not preserve the order of elements.
+            </summary>
+            <param name="predicate">Predicate to test elements with.</param>
+            <returns>True if an element matched and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.RemoveAt(System.Int32)">
+            <summary>
+            Removes an element from the list at the given index. Preserves the order of elements.
+            </summary>
+            <param name="index">Index of the element to remove from the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.FastRemoveAt(System.Int32)">
+            <summary>
+            Removes an element from the list at the given index. Does not preserve the order of elements.
+            </summary>
+            <param name="index">Index of the element to remove from the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Pop(`0@)">
+            <summary>
+            Removes and outputs the last element in the list. Assumes positive count. User is responsible for guaranteeing correctness.
+            </summary>
+            <param name="element">Last element of the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.TryPop(`0@)">
+            <summary>
+            Removes and outputs the last element in the list if it exists.
+            </summary>
+            <param name="element">Last element of the list.</param>
+            <returns>True if the element existed and was removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains(`0)">
+            <summary>
+            Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
+            </summary>
+            <returns>
+            true if <paramref name="element"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
+            </returns>
+            <param name="element">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains(`0@)">
+            <summary>
+            Determines whether the collection contains a specific value.
+            </summary>
+            <returns>
+            True if <paramref name="element"/> is found in the collection; otherwise, false.
+            </returns>
+            <param name="element">The object to locate in the collection.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Contains``1(``0@)">
+            <summary>
+            Determines whether the collection contains an element that matches a predicate.
+            </summary>
+            <returns>
+            True if an element matching the predicate exists, otherwise false.
+            </returns>
+            <param name="predicate">The predicate to test against elements in the list.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickList`1.Clear">
+            <summary>
+            Clears the list by setting the count to zero and explicitly setting all relevant indices in the backing array to default values.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickQueue`1">
+            <summary>
+            Container supporting double ended queue behaviors built on top of pooled arrays.
+            </summary>
+            <remarks>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </remarks>
+            <typeparam name="T">Type of the elements in the queue.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.Count">
+            <summary>
+            Number of elements in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.FirstIndex">
+            <summary>
+            Index of the first element in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.LastIndex">
+            <summary>
+            Index of the last element in the queue.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.CapacityMask">
+            <summary>
+            Mask based on the current span length used to do fast modulo operations; requires that the span has a power of 2 length.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickQueue`1.Span">
+            <summary>
+            Gets the backing memory containing the elements of the queue.
+            Indices from FirstIndex to LastIndex inclusive hold actual data. All other data is undefined.
+            Watch out for wrap around; LastIndex can be less than FirstIndex even when count > 0!
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.GetBackingArrayIndex(System.Int32)">
+            <summary>
+            Gets the backing array index for the logical queue index.
+            </summary>
+            <param name="queueIndex">Index in the logical queue.</param>
+            <returns>The index in in the backing array corresponding to the given logical queue index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickQueue`1.Item(System.Int32)">
+            <summary>
+            Gets an element at the given index in the queue.
+            0 gets the element at the FirstIndex. Count-1 would get the element at LastIndex.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.#ctor(BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a new queue.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory to begin with.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new queue.
+            </summary>
+            <param name="pool">Pool to pull a span from.</param>
+            <param name="minimumInitialCount">The minimum size of the region to be pulled from the pool. Actual span may be larger.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Swaps out the queue's backing memory span for a new span.
+            If the new span is smaller, the queue's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>
+            <param name="newSpan">New span to use.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the queue's backing array for the given size.
+            Any elements that do not fit in the resized span are dropped and the count is truncated.
+            </summary>
+            <param name="newSize">Minimum number of elements required in the new backing array. Actual capacity of the created span may exceed this size.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the queue to pools. Any managed references still contained within the queue are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the queue has enough room to hold the specified number of elements.
+            </summary>
+            <param name="count">Number of elements to hold.</param>
+            <param name="pool">Pool to pull a new span from and return the old span to.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Compacts the internal buffer to the minimum size required for the number of elements in the queue.
+            </summary>
+            <param name="pool">Pool to pull from if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely">
+            <summary>
+            Enqueues a slot on the end of the queue, incrementing the last index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <returns>Reference to the enqueued slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely">
+            <summary>
+            Pushes a slot at the front of the queue, decrementing the first index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <returns>Reference to the enqueued slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Enqueue(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues a slot on the end of the queue, incrementing the last index.
+            </summary>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirst(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Pushes a slot at the front of the queue, decrementing the first index.
+            </summary>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely(`0@)">
+            <summary>
+            Enqueues the element to the end of the queue, incrementing the last index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely(`0@)">
+            <summary>
+            Enqueues the element to the start of the queue, decrementing the first index.
+            Does not attempt to resize; this implementation assumes the underlying buffer is large enough for the new slot.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Enqueue(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues the element to the end of the queue, incrementing the last index.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirst(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Enqueues the element to the start of the queue, decrementing the first index.
+            </summary>
+            <param name="element">Item to enqueue.</param>
+            <param name="pool">Pool to use to resize the queue's internal buffer if necessary.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Dequeue">
+            <summary>
+            Dequeues an element from the start of the queue, incrementing the first index.
+            </summary>
+            <returns>Element removed from the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueLast">
+            <summary>
+            Dequeues an element from the end of the queue, decrementing the last index.
+            </summary>
+            <returns>Element removed from the queue.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.TryDequeue(`0@)">
+            <summary>
+            Attempts to dequeue an element from the start of the queue, incrementing the first index.
+            </summary>
+            <param name="element">Element removed from the queue, if any.</param>
+            <returns>True if an element was available to remove, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.TryDequeueLast(`0@)">
+            <summary>
+            Attempts to dequeue an element from the end of the queue, decrementing the last index.
+            </summary>
+            <param name="element">Element removed from the queue, if any.</param>
+            <returns>True if an element was available to remove, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueUnsafely">
+            <summary>
+            Dequeues a slot from the start of the queue, incrementing the first index and returning a reference to the slot. Does not check count before attempting to dequeue.
+            </summary>
+            <returns>Reference to the slot removed from the queue.</returns>
+            <remarks>Be very careful with this function; it is easy to accidentally destroy your foot in sneaky ways.
+            Consider what happens if you call <see cref="M:BepuUtilities.Collections.QuickQueue`1.EnqueueFirstUnsafely"/> after this function- both functions will return references to the same slot.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.DequeueLastUnsafely">
+            <summary>
+            Dequeues a slot from the end of the queue, decrementing the last index and returning a reference to the slot. Does not check count before attempting to dequeue.
+            </summary>
+            <returns>Reference to the slot removed from the queue.</returns>
+            <remarks>Be very careful with this function; it is easy to accidentally destroy your foot in sneaky ways.
+            Consider what happens if you call <see cref="M:BepuUtilities.Collections.QuickQueue`1.EnqueueUnsafely"/> after this function- both functions will return references to the same slot.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.RemoveAt(System.Int32)">
+            <summary>
+            Removes the element at the given index, preserving the order of the queue.
+            </summary>
+            <param name="queueIndex">Index in the queue to remove. The index is in terms of the conceptual queue, not the backing array.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.Clear">
+            <summary>
+            Clears the queue by setting the count to zero and explicitly setting all relevant indices in the backing array to default values.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickQueue`1.FastClear">
+            <summary>
+            Clears the queue without changing any of the values in the backing array.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.QuickSet`2">
+            <summary>
+            Container supporting constant time adds and removes while preserving fast iteration times.
+            Offers very direct access to information at the cost of safety.
+            </summary>
+            <remarks>
+            <para>
+            Be very careful when using this type. It has sacrificed a lot upon the altar of performance; a few notable issues include:
+            it is a value type and copying it around will break things without extreme care,
+            it cannot be validly default-constructed,
+            it exposes internal structures to user modification, 
+            it rarely checks input for errors,
+            the enumerator doesn't check for mid-enumeration modification,
+            it allows unsafe addition that can break if the user doesn't manage the capacity,
+            it works on top of an abstracted memory blob which might internally be a pointer that could be rugpulled, 
+            it does not (and is incapable of) checking that provided memory gets returned to the same pool that it came from.
+            </para>
+            <para>Note that the implementation is extremely simple. It uses single-step linear probing under the assumption of very low collision rates.
+            A generous table capacity is recommended; this trades some memory for simplicity and runtime performance.</para></remarks>
+            <typeparam name="T">Type of element held by the container.</typeparam>
+            <typeparam name="TEqualityComparer">Type of the equality tester and hash calculator used.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Count">
+            <summary>
+            Gets the number of elements in the set.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.TableMask">
+            <summary>
+            Mask for use in performing fast modulo operations for hashes. Requires that the table span is a power of 2.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.TablePowerOffset">
+            <summary>
+            Desired size of the table relative to the size of the key/value spans in terms of a power of 2. Table capacity target will be elementCapacityTarget * 2^TablePowerOffset.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Table">
+            <summary>
+            Backing memory of the set's table. Values are distributed according to the EqualityComparer's hash function.
+            Slots containing 0 are unused and point to nothing. Slots containing higher values are equal to one plus the index of an element in the Span.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.Span">
+            <summary>
+            Backing memory containing the elements of the set.
+            Indices from 0 to Count-1 hold actual data. All other data is undefined.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Collections.QuickSet`2.EqualityComparer">
+            <summary>
+            Equality comparer used to compare and hash elements.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Collections.QuickSet`2.Item(System.Int32)">
+            <summary>
+            Gets or sets an element at the given index in the list representation of the set.
+            </summary>
+            <param name="index">Index to grab an element from.</param>
+            <returns>Element at the given index in the set.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,`1,System.Int32)">
+            <summary>
+            Creates a new set.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory of the set elements.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed out.</param>
+            <param name="comparer">Comparer to use for the set.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,System.Int32)">
+            <summary>
+            Creates a new set using a default constructed equality comparer.
+            </summary>
+            <param name="initialSpan">Span to use as backing memory of the set elements.</param>
+            <param name="initialTableSpan">Span to use as backing memory of the table. Must be zeroed.</param>
+            <param name="tablePowerOffset">Target size of the table relative to the number of stored elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool,`1)">
+            <summary>
+            Creates a new set.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+            <param name="comparer">Comparer to use in the set.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new set with a default constructed comparer.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+            <param name="tableSizePower">Target capacity relative to the initial capacity in terms of a power of 2. The size of the initial table buffer will be at least 2^tableSizePower times larger than the initial capacity.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Creates a new set with a default constructed comparer.
+            </summary>
+            <param name="pool">Pool to pull spans from.</param>   
+            <param name="initialCapacity">Initial target size of the key and value spans. The size of the initial buffer will be at least as large as the initialCapacity.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Resize(BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@,BepuUtilities.Memory.Buffer{`0}@,BepuUtilities.Memory.Buffer{System.Int32}@)">
+            <summary>
+            Swaps out the set's backing memory span for a new span.
+            If the new span is smaller, the set's count is truncated and the extra elements are dropped. 
+            The old span is not cleared or returned to any pool; if it needs to be pooled or cleared, the user must handle it.
+            </summary>      
+            <param name="newSpan">New span to use for elements.</param>
+            <param name="newTableSpan">New span to use for the table. Must be zeroed.</param>
+            <param name="oldSpan">Previous span used for elements.</param>
+            <param name="oldTableSpan">Previous span used for the table.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the set's backing array for the given size.
+            If the new span is smaller, the set's count is truncated and the extra elements are dropped. 
+            </summary>
+            <param name="newSize">Minimum size of the new object memory block. Actual size may be larger.</param>
+            <param name="pool">Pool to take spans from.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns the resources associated with the set to pools. Any managed references still contained within the set are cleared (and some unmanaged resources may also be cleared).
+            </summary>
+            <param name="pool">Pool used for element spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the set has enough room to hold the specified number of elements.
+            </summary>     
+            <param name="pool">Pool used for spans.</param>   
+            <param name="count">Number of elements to hold.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Compact(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the internal buffers to the smallest acceptable size and releases the old buffers to the pools.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.GetTableIndices(`0@,System.Int32@,System.Int32@)">
+            <summary>
+            Gets the index of the element in the table.
+            </summary>
+            <param name="element">Element to look up.</param>
+            <param name="tableIndex">Index of the element in the redirect table, or if it is not present, the index of where it would be added.</param>
+            <param name="elementIndex">The index of the element in the elements array, if it exists; -1 otherwise.</param>
+            <returns>True if the element is present in the set, false if it is not.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.IndexOf(`0)">
+            <summary>
+            Gets the index of the element in the set if it exists.
+            </summary>
+            <param name="element">Element to get the index of.</param>
+            <returns>The index of the element if the element exists in the set, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.IndexOf(`0@)">
+            <summary>
+            Gets the index of the element in the set if it exists.
+            </summary>
+            <param name="element">Element to get the index of.</param>
+            <returns>The index of the element if the element exists in the set, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Contains(`0)">
+            <summary>
+            Checks if a given element already belongs to the set.
+            </summary>
+            <param name="element">Element to test for.</param>
+            <returns>True if the element already belongs to the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Contains(`0@)">
+            <summary>
+            Checks if a given element already belongs to the set.
+            </summary>
+            <param name="element">Element to test for.</param>
+            <returns>True if the element already belongs to the set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplaceUnsafely(`0@)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplaceUnsafely(`0)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddUnsafely(`0@)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddUnsafely(`0)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            Does not resize in the event that the capacity is exceeded.
+            </summary>
+            <param name="element">Element to add.</param>
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplace(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Add(`0@,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.AddAndReplace(`0,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set. If a version of the element (same hash code, 'equal' by comparer) is already present,
+            it is replaced by the given version.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present and was instead replaced.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Add(`0,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Adds an element to the set if it is not already present.
+            </summary>
+            <param name="element">Element to add.</param>
+            <param name="pool">Pool used for spans.</param>   
+            <returns>True if the element was added to the set, false if the element was already present.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(System.Int32,System.Int32)">
+            <summary>
+            Removes an element from the dictionary according to its table and element index. Can only be used if the table and element index are valid.
+            </summary>
+            <param name="tableIndex">Index of the table entry associated with the existing element to remove.</param>
+            <param name="elementIndex">Index of the existing element to remove in the contiguous element array.</param>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(`0@)">
+            <summary>
+            Removes an element from the set if belongs to the set.
+            Does not preserve the order of elements in the set.
+            </summary>
+            <param name="element">Element to remove.</param>
+            <returns>True if the element was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastRemove(`0)">
+            <summary>
+            Removes an element from the set if belongs to the set.
+            Does not preserve the order of elements in the set.
+            </summary>
+            <param name="element">Element to remove.</param>
+            <returns>True if the element was found and removed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.Clear">
+            <summary>
+            Removes all elements from the set.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.QuickSet`2.FastClear">
+            <summary>
+            Removes all elements from the set without modifying the contents of the elements array.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Collections.ReferenceComparer`1">
+            <summary>
+            Provides equality comparison and hashing for referenced types.
+            </summary>
+            <typeparam name="T">Type to compare for equality and hash.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.Collections.VectorizedSorts">
+            <summary>
+            Specialized sorts that can go fast sometimes, but often come with special requirements.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Collections.VectorizedSorts.VectorCountingSort(BepuUtilities.Memory.Buffer{BepuUtilities.Numerics.Number},BepuUtilities.Memory.Buffer{System.Int32},System.Int32)">
+            <summary>
+            Computes the mapping from current index to ascending sorted index for all elements in the paddedKeys. The paddedKeys buffer is not actually sorted.
+            <para>This function requires that <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or <see cref="!:Vector128.IsHardwareAccelerated"/>.</para>
+            </summary>
+            <param name="paddedKeys">Padded keys to compute sorted indices for. This buffer's contents will not be mutated.
+            The buffer must be at least as long as the targetIndices buffer and must be padded to be divisible by vector length.
+            Vector length is 8 elements if <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or 4 elements if only <see cref="!:Vector128.IsHardwareAccelerated"/>.</param>
+            <param name="paddedTargetIndices">Buffer to be filled with the target indices each slot should be moved to in order to sort the buffer.
+            The buffer must be padded to be divisible by vector length.
+            Vector length is 8 elements if <see cref="P:System.Runtime.Intrinsics.Vector256.IsHardwareAccelerated"/> or 4 elements if only <see cref="!:Vector128.IsHardwareAccelerated"/>.</param>
+            <param name="elementCount">Number of actual elements in the paddedKeys buffer.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.WrapperEqualityComparer`1">
+            <summary>
+            IEqualityComparerRef wrapper around an EqualityComparer.
+            </summary>
+            <typeparam name="T">Type of the objects to compare and hash.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.WrapperEqualityComparer`1.CreateDefault(BepuUtilities.Collections.WrapperEqualityComparer{`0}@)">
+            <summary>
+            Creates a default comparer for the given type.
+            </summary>
+            <param name="predicate">Predicate to test against other items using the default comparer for this type.</param>
+        </member>
+        <member name="T:BepuUtilities.Collections.WrapperPredicate`1">
+            <summary>
+            IPredicate wrapper around an EqualityComparer and an object to compare against.
+            </summary>
+            <typeparam name="T">Type of the objects to compare.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.Collections.WrapperPredicate`1.CreateDefault(`0@,BepuUtilities.Collections.WrapperPredicate{`0}@)">
+            <summary>
+            Creates a default comparer for the given type.
+            </summary>
+            <param name="item">Item to compare against other items.</param>
+            <param name="predicate">Predicate to test against other items using the default comparer for this type.</param>
+        </member>
+        <member name="T:BepuUtilities.ContainmentType">
+            <summary>
+            The current containment state of two objects.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Disjoint">
+            <summary>
+            The objects are separate.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Contains">
+            <summary>
+            One object fully contains the other.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.ContainmentType.Intersects">
+            <summary>
+            The objects are intersecting, but neither object fully contains the other.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.Get``1(BepuUtilities.Numerics.Vector{``0}@,System.Int32)">
+            <summary>
+            Gets a reference to an element from a vector without using pointers, bypassing direct vector access for codegen reasons. This performs no bounds testing!
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.CopyLane``1(``0@,System.Int32,``0@,System.Int32)">
+            <summary>
+            Copies from one bundle lane to another. The bundle must be a contiguous block of Vector types.
+            </summary>
+            <typeparam name="T">Type of the copied bundles.</typeparam>
+            <param name="sourceBundle">Source bundle of the data to copy.</param>
+            <param name="sourceInnerIndex">Index of the lane within the source bundle.</param>
+            <param name="targetBundle">Target bundle of the data to copy.</param>
+            <param name="targetInnerIndex">Index of the lane within the target bundle.</param>
+            <remarks>
+            For performance critical operations, a specialized implementation should be used. This uses a loop with stride equal to a Vector that isn't yet unrolled.
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.ClearLane``2(``0@,System.Int32)">
+            <summary>
+            Clears a bundle lane using the default value of the specified type. The bundle must be a contiguous block of Vector types, all sharing the same type,
+            and the first vector must start at the address pointed to by the bundle reference.
+            </summary>
+            <typeparam name="TOuter">Type containing one or more Vectors.</typeparam>
+            <typeparam name="TVector">Type of the vectors to clear.</typeparam>
+            <param name="bundle">Target bundle to clear a lane in.</param>
+            <param name="innerIndex">Index of the lane within the target bundle to clear.</param>
+            <remarks>
+            For performance critical operations, a specialized implementation should be used. This uses a loop with stride equal to a Vector.
+            </remarks>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.GetOffsetInstance``1(``0@,System.Int32)">
+            <summary>
+            Gets a reference to a shifted bundle container such that the first slot of each bundle covers the given inner index of the original bundle reference.
+            </summary>
+            <typeparam name="T">Type of the bundle container.</typeparam>
+            <param name="bundleContainer">Bundle container whose reference acts as the base for the shifted reference.</param>
+            <param name="innerIndex">Index within the bundle to access with the shifted reference.</param>
+            <returns>Shifted bundle container reference covering the inner index of the original bundle reference.</returns>
+        </member>
+        <member name="M:BepuUtilities.GatherScatter.GetFirst``1(BepuUtilities.Numerics.Vector{``0}@)">
+            <summary>
+            Gets a reference to the first element in the vector reference.
+            </summary>
+            <typeparam name="T">Type of value held by the vector.</typeparam>
+            <param name="vector">Vector to pull the first slot value from.</param>
+            <returns>Reference to the value in the given vector's first slot.</returns>
+        </member>
+        <member name="T:BepuUtilities.IForEachRef`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body. Takes a ref parameter for efficiency when dealing with large value types.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.IForEach`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="T:BepuUtilities.IBreakableForEach`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body that supports breaking the loop early.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.IBreakableForEach`1.LoopBody(`0)">
+            <summary>
+            Executes one execution of the loop body.
+            </summary>
+            <param name="i">Visited element.</param>
+            <returns>True if the loop should continue, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.IBreakableForEachRef`1">
+            <summary>
+            Defines a loop body function able to handle the equivalent of a foreach's body that supports breaking the loop early.
+            Takes a ref parameter for efficiency when dealing with large value types.
+            </summary>
+            <typeparam name="T">Type to enumerate over.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.IBreakableForEachRef`1.LoopBody(`0@)">
+            <summary>
+            Executes one execution of the loop body.
+            </summary>
+            <param name="i">Visited element.</param>
+            <returns>True if the loop should continue, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.Int2">
+            <summary>
+            Provides simple 2d cell hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Int3">
+            <summary>
+            A set of 3 integers, useful for spatial hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Int4">
+            <summary>
+            A set of 4 integers, useful for spatial hashing.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.ThreadDispatcherWorker">
+            <summary>
+            Function to be invoked on a worker thread in an <see cref="T:BepuUtilities.IThreadDispatcher"/>. Provides the unmanaged context of the dispatch.
+            </summary>
+            <param name="workerIndex">Index of the worker in the dispatcher executing this function.</param>
+            <param name="context">Pointer to the context of this dispatch, if any.</param>
+            
+        </member>
+        <member name="T:BepuUtilities.IThreadDispatcher">
+            <summary>
+            Provides multithreading dispatch primitives, a thread count, and per thread resource pools for the simulation to use.
+            </summary>
+            <remarks>
+            <para>Note that the simulation does not require a true load balancing forloop implementation. All that's needed is a way to jumpstart some threads.
+            All systems which use multithreading tend to have some form of domain specific load balancing that a general purpose thread pool or parallel for loop implementation 
+            couldn't match. The simulation also tends to keep the number of dispatches as low as it can. Combined, these two things reduce the importance of a
+            very highly optimized dispatcher.</para>
+            <para>This is important when a user wants to share some other thread pool, but doesn't have the time to guarantee extremely high performance and high quality
+            load balancing. Instead of worrying about that, they can just wrap whatever implementation they happen to have and it'll probably work fine.</para>
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.ThreadCount">
+            <summary>
+            Gets the number of workers available in the thread dispatcher.
+            </summary>
+            <remarks>Note that some systems (like the solver) expect the ThreadCount to be backed by truly independent threads capable of progression even when one is blocked.
+            If the ThreadCount doesn't represent independent threads, deadlocks will occur.
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.UnmanagedContext">
+            <summary>
+            Gets the unmanaged context associated with the current dispatch, if any.
+            </summary>
+            <remarks>This is intended to help pass information to workers, especially those defined with function pointers that can't just include extra state in closures.</remarks>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.ManagedContext">
+            <summary>
+            Gets the managed context associated with the current dispatch, if any.
+            </summary>
+            <remarks>This is intended to help pass information to workers, especially those defined with function pointers that can't just include extra state in closures.</remarks>
+        </member>
+        <member name="M:BepuUtilities.IThreadDispatcher.DispatchWorkers(,System.Int32,System.Void*,System.Object)">
+            <summary>
+            Dispatches all the available workers.
+            </summary>
+            <param name="workerBody">Function pointer to be invoked on every worker. Matches the signature of the <see cref="T:BepuUtilities.ThreadDispatcherWorker"/>.</param>
+            <param name="maximumWorkerCount">Maximum number of workers to dispatch.</param>
+            <param name="unmanagedContext">Unmanaged context of the dispatch.</param>
+            <param name="managedContext">Managed context of the dispatch.</param>
+        </member>
+        <member name="M:BepuUtilities.IThreadDispatcher.DispatchWorkers(System.Action{System.Int32},System.Int32,System.Void*,System.Object)">
+            <summary>
+            Dispatches all the available workers with a null context.
+            </summary>
+            <param name="workerBody">Delegate to be invoked on every worker.</param>
+            <param name="maximumWorkerCount">Maximum number of workers to dispatch.</param>
+            <param name="unmanagedContext">Unmanaged context of the dispatch.</param>
+            <param name="managedContext">Managed context of the dispatch.</param>
+        </member>
+        <member name="P:BepuUtilities.IThreadDispatcher.WorkerPools">
+            <summary>
+            Gets the set of memory pools associated with thread workers.
+            </summary>
+            <remarks>All usages of these worker pools within the simulation are guaranteed to return thread pool memory before the function returns. In other words,
+            thread memory pools are used for strictly ephemeral memory, and it will never be held by the simulation outside the scope of a function that 
+            takes the IThreadDispatcher as input.</remarks>
+        </member>
+        <member name="T:BepuUtilities.MathChecker">
+            <summary>
+            Contains conditional extensions to check for bad values in various structures.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.IsInvalid(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks a single float for validity.
+            </summary>
+            <param name="f">Value to validate.</param>
+            <returns>True if the value is invalid, false if it is valid.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Number)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector2)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Vector4)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Matrix3x3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Matrix)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.ValidateOrientation(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.AffineTransform)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.BoundingBox)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathChecker.Validate(BepuUtilities.BoundingSphere)">
+            <summary>
+            Checks the value to see if it is a NaN or infinite.  If it is, a debug assertion will fail.
+            This is only run when the CHECKMATH symbol is defined.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.MathHelper">
+            <summary>
+            Contains helper math methods.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.Pi">
+            <summary>
+            Approximate value of Pi.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.TwoPi">
+            <summary>
+            Approximate value of Pi multiplied by two.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.PiOver2">
+            <summary>
+            Approximate value of Pi divided by two.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MathHelper.PiOver4">
+            <summary>
+            Approximate value of Pi divided by four.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(System.Int32,System.Int32)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(System.Int32,System.Int32)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Clamp(System.Int64,System.Int64,System.Int64)">
+            <summary>
+            Clamps a value between a minimum and maximum value.
+            </summary>
+            <param name="value">Value to clamp.</param>
+            <param name="min">Minimum value.  If the value is less than this, the minimum is returned instead.</param>
+            <param name="max">Maximum value.  If the value is more than this, the maximum is returned instead.</param>
+            <returns>Clamped value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Max(System.Int64,System.Int64)">
+            <summary>
+            Returns the higher value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Higher value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Min(System.Int64,System.Int64)">
+            <summary>
+            Returns the lower value of the two parameters.
+            </summary>
+            <param name="a">First value.</param>
+            <param name="b">Second value.</param>
+            <returns>Lower value of the two parameters.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.ToRadians(BepuUtilities.Numerics.Number)">
+            <summary>
+            Converts degrees to radians.
+            </summary>
+            <param name="degrees">Degrees to convert.</param>
+            <returns>Radians equivalent to the input degrees.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.ToDegrees(BepuUtilities.Numerics.Number)">
+            <summary>
+            Converts radians to degrees.
+            </summary>
+            <param name="radians">Radians to convert.</param>
+            <returns>Degrees equivalent to the input radians.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.BinarySign(BepuUtilities.Numerics.Number)">
+            <summary>
+            Returns -1 if the value is negative and 1 otherwise.
+            </summary>
+            <param name="x">Value to compute the sign of.</param>
+            <returns>-1 if the input is negative, and 1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Cos(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of cosine. Maximum error a little below 8e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the cosine of.</param>
+            <returns>Approximate cosine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Sin(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of sine. Maximum error a little below 5e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the sine of.</param>
+            <returns>Approximate sine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Acos(BepuUtilities.Numerics.Number)">
+            <summary>
+            Computes an approximation of arccos. Inputs outside of [-1, 1] are clamped. Maximum error less than 5.17e-07.
+            </summary>
+            <param name="x">Input value to the arccos function.</param>
+            <returns>Result of the arccos function.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Cos(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of cosine. Maximum error a little below 8e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Values to take the cosine of.</param>
+            <returns>Approximate cosine of the input values.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Sin(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of sine. Maximum error a little below 5e-7 for the interval -2 * Pi to 2 * Pi. Values further from the interval near zero have gracefully degrading error.
+            </summary>
+            <param name="x">Value to take the sine of.</param>
+            <returns>Approximate sine of the input value.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.Acos(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Computes an approximation of arccos. Inputs outside of [-1, 1] are clamped. Maximum error less than 5.17e-07.
+            </summary>
+            <param name="x">Input value to the arccos function.</param>
+            <returns>Result of the arccos function.</returns>
+        </member>
+        <member name="M:BepuUtilities.MathHelper.GetSignedAngleDifference(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Gets the change in angle from a to b as a signed value from -pi to pi.
+            </summary>
+            <param name="a">Source angle.</param>
+            <param name="b">Target angle.</param>
+            <param name="difference">Difference between a and b, expressed as a value from -pi to pi.</param>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.X">
+            <summary>
+            Row 1 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.Y">
+            <summary>
+            Row 2 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.Z">
+            <summary>
+            Row 3 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.MatrixFloat.W">
+            <summary>
+            Row 4 of the matrix.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Matrix">
+            <summary>
+            Provides SIMD-aware 4x4 matrix math.
+            </summary>
+            <remarks>
+            All functions assume row vectors.
+            </remarks>
+        </member>
+        <member name="F:BepuUtilities.Matrix.X">
+            <summary>
+            Row 1 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.Y">
+            <summary>
+            Row 2 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.Z">
+            <summary>
+            Row 3 of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix.W">
+            <summary>
+            Row 4 of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix.TransformTranspose(BepuUtilities.Numerics.Vector4@,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a transposed matrix.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix whose transpose will be applied to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Transform(BepuUtilities.Numerics.Vector4@,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a matrix.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Transforms a vector with a matrix. Implicitly uses 1 as the fourth component of the input vector.
+            </summary>
+            <param name="v">Row vector to transform.</param>
+            <param name="m">Matrix to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Multiply(BepuUtilities.Matrix@,BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Multiplies a matrix by another matrix.
+            </summary>
+            <param name="a">First matrix.</param>
+            <param name="b">Second matrix.</param>
+            <param name="result">Result of the matrix multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.op_Multiply(BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Concatenates two matrices.
+            </summary>
+            <param name="m1">First input matrix.</param>
+            <param name="m2">Second input matrix.</param>
+            <returns>Concatenated transformation of the form m1 * m2.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfView(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfViewLH(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a left-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFromFieldOfViews(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="verticalFieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="horizontalFieldOfView">Horizontal field of view of the perspective in radians.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <returns>Resulting perspective matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFromFieldOfViews(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="verticalFieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="horizontalFieldOfView">Horizontal field of view of the perspective in radians.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <param name="perspective">Resulting perspective matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreatePerspectiveFieldOfView(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a right-handed perspective matrix.
+            </summary>
+            <param name="fieldOfView">Vertical field of view of the perspective in radians.</param>
+            <param name="aspectRatio">Width of the viewport over the height of the viewport.</param>
+            <param name="nearClip">Near clip plane of the perspective.</param>
+            <param name="farClip">Far clip plane of the perspective.</param>
+            <returns>Resulting perspective matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateOrthographic(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a right handed orthographic projection.
+            </summary>
+            <param name="left">Leftmost coordinate of the projected area.</param>
+            <param name="right">Rightmost coordinate of the projected area.</param>
+            <param name="bottom">Bottom coordinate of the projected area.</param>
+            <param name="top">Top coordinate of the projected area.</param>
+            <param name="zNear">Near plane of the projection.</param>
+            <param name="zFar">Far plane of the projection.</param>
+            <param name="projection">The resulting orthographic projection matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Invert(BepuUtilities.Matrix@,BepuUtilities.Matrix@)">
+            <summary>
+            Inverts the matrix.
+            </summary>
+            <param name="m">Matrix to invert.</param>
+            <param name="inverted">Inverted version of the matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.Invert(BepuUtilities.Matrix@)">
+            <summary>
+            Inverts the matrix.
+            </summary>
+            <param name="m">Matrix to invert.</param>
+            <returns>Inverted version of the matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateLookAt(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a view matrix pointing from a position to a target with the given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="target">Target of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <param name="viewMatrix">Look at matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateLookAt(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a view matrix pointing from a position to a target with the given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="target">Target of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <returns>Look at matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateView(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a view matrix pointing in a direction with a given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="forward">Forward direction of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <param name="viewMatrix">Look at matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateView(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Creates a view matrix pointing looking in a direction with a given up vector.
+            </summary>
+            <param name="position">Position of the camera.</param>
+            <param name="forward">Forward direction of the camera.</param>
+            <param name="upVector">Up vector of the camera.</param>
+            <returns>Look at matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateRigid(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a rigid world matrix from a rotation and position.
+            </summary>
+            <param name="rotation">Rotation of the transform.</param>
+            <param name="position">Position of the transform.</param>
+            <param name="world">4x4 matrix representing the combined transform.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateRigid(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a rigid world matrix from a rotation and position.
+            </summary>
+            <param name="rotation">Rotation of the transform.</param>
+            <param name="position">Position of the transform.</param>
+            <param name="world">4x4 matrix representing the combined transform.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateFrom3x3(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix@)">
+            <summary>
+            Creates a 4x4 matrix from a 3x3 matrix. All extra columns and rows filled with 0 except the W.W, which is set to 1.
+            </summary>
+            <param name="matrix3x3">Smaller matrix to base the larger matrix on.</param>
+            <param name="matrix4x4">Larger matrix that has the smaller matrix as a submatrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix.CreateFrom3x3(BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a 4x4 matrix from a 3x3 matrix. All extra columns and rows filled with 0 except the W.W, which is set to 1.
+            </summary>
+            <param name="matrix3x3">Smaller matrix to base the larger matrix on.</param>
+            <returns>Larger matrix that has the smaller matrix as a submatrix.</returns>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x2Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x2Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Scale(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Add(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Adds the components of one matrix to another.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two given matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.Subtract(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from..</param>
+            <param name="b">Matrix to subtract from the other.</param>
+            <param name="result">Result of the subtraction.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x2Wide.InvertWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="matrix">Matrix to be inverted.</param>
+            <param name="result">Inverted matrix.</param>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x3Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix2x3Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.MultiplyTransposedWithoutOverlap(BepuUtilities.Matrix2x2Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the first matrix is sampled as if it were transposed: result = transpose(a) * b.
+            </summary>
+            <param name="a">Matrix to be sampled as if it were transposed when multiplied with the second matrix.</param>
+            <param name="b">Second matrix in the pair.</param>
+            <param name="result">Result of the multiplication transpose(a) * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x2Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix2x3Wide.Scale(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="T:BepuUtilities.Matrix3x3">
+            <summary>
+            3 row, 3 column matrix.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Matrix3x3.Identity">
+            <summary>
+            Gets the 3x3 identity matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Add(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Scale(BepuUtilities.Matrix3x3,BepuUtilities.Numerics.Number,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Scales the components of a matrix by a scalar.
+            </summary>
+            <param name="matrix">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the matrix's components.</param>
+            <param name="result">Scaled matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Subtract(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from a.</param>
+            <param name="result">Difference of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Transpose(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>                                                                                                
+            Computes the transposed matrix of a matrix.                                                              
+            </summary>                                                                                               
+            <param name="m">Matrix to transpose.</param>                                                             
+            <param name="transposed">Transposed matrix.</param>                                                      
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Determinant">
+            <summary>
+            Calculates the determinant of the matrix.
+            </summary>
+            <returns>The matrix's determinant.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Invert(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Invert(BepuUtilities.Matrix3x3*,BepuUtilities.Matrix3x3*)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector by the matrix.
+            </summary>
+            <param name="v">Vector3 to transform.</param>
+            <param name="m">Matrix to use as the transformation.</param>
+            <param name="result">Product of the transformation.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.TransformTranspose(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector by the matrix's transpose.
+            </summary>
+            <param name="v">Vector3 to transform.</param>
+            <param name="m">Matrix to use as the transformation transpose.</param>
+            <param name="result">Product of the transformation.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.MultiplyTransposed(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices, where a is treated as transposed: result = transpose(a) * b
+            </summary>
+            <param name="a">First matrix to multiply that will be transposed.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateScale(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a 3x3 matrix representing the given scale along its local axes.
+            </summary>
+            <param name="scale">Scale to represent.</param>
+            <param name="linearTransform">Matrix representing a scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a matrix representing a rotation derived from an axis and angle.
+            </summary>
+            <param name="axis">Axis of the rotation.</param>
+            <param name="angle">Angle of the rotation.</param>
+            <param name="result">Resulting rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a matrix representing a rotation derived from an axis and angle.
+            </summary>
+            <param name="axis">Axis of the rotation.</param>
+            <param name="angle">Angle of the rotation.</param>
+            <returns>Resulting rotation matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.CreateCrossProduct(BepuUtilities.Numerics.Vector3,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a matrix such that a x v = a * result.
+            </summary>
+            <param name="v">Vector to build the skew symmetric matrix from.</param>
+            <param name="result">Skew symmetric matrix representing the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3.op_Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Concatenates two matrices.
+            </summary>
+            <param name="m1">First input matrix.</param>
+            <param name="m2">Second input matrix.</param>
+            <returns>Concatenated transformation of the form m1 * m2.</returns>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.X">
+            <summary>
+            First row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.Y">
+            <summary>
+            Second row of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Matrix3x3Wide.Z">
+            <summary>
+            Third row of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.MultiplyTransposedWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the first matrix is sampled as if it were transposed: result = transpose(a) * b.
+            </summary>
+            <param name="a">Matrix to be sampled as if it were transposed when multiplied with the second matrix.</param>
+            <param name="b">Second matrix in the pair.</param>
+            <param name="result">Result of the multiplication transpose(a) * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.MultiplyByTransposeWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies a matrix by another matrix, where the second matrix is sampled as if it were transposed: result = a * transpose(b).
+            </summary>
+            <param name="a">First matrix in the pair.</param>
+            <param name="b">Matrix to be sampled as if it were transposed when multiplied with the first matrix.</param>
+            <param name="result">Result of the multiplication a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.Negate(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Negates the components of a matrix.
+            </summary>
+            <param name="m">Matrix to negate.</param>
+            <param name="result">Negated result matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.Scale(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Multiplies every component in the matrix by the given scalar value.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scaling value to apply to the matrix's components.</param>
+            <param name="result">Resulting matrix with scaled components.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.ReadFirst(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Matrix3x3Wide.ReadSlot(BepuUtilities.Matrix3x3Wide@,System.Int32,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.Allocator">
+            <summary>
+            Represents a chunk of abstract memory supporting allocations and deallocations.
+            Never moves any memory.
+            </summary>
+            <remarks>Uses an extremely simple ring buffer that makes no attempt to skip groups of allocations. Not particularly efficient.</remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.Allocator.Capacity">
+            <summary>
+            Gets or sets the capacity of the allocator.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.Allocator.searchStartIndex">
+            <summary>
+            Index in allocations that we should start at during the next allocation attempt.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.#ctor(System.Int64,BepuUtilities.Memory.BufferPool,System.Int32)">
+            <summary>
+            Creates a new allocator.
+            </summary>
+            <param name="capacity">Size of the memory handled by the allocator in elements.</param>
+            <param name="initialAllocationCapacity">Estimated number of allocations to allocate room for in the internal structures.</param>
+            <param name="pool">Pool to pull internal resources from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Contains(System.UInt64)">
+            <summary>
+            Checks if the id is currently allocated.
+            </summary>
+            <param name="id">Id to check for.</param>
+            <returns>True if the id is present in the allocations set, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.TryGetAllocationRegion(System.UInt64,BepuUtilities.Memory.Allocator.Allocation@)">
+            <summary>
+            Gets the allocation region associated with the given allocation id if it is present.
+            </summary>
+            <param name="allocationId">Allocation id to look up the allocation for.</param>
+            <param name="allocation">Allocation associated with the id, if present.</param>
+            <returns>True if the allocationId was present in the allocator, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.CanFit``1(System.Int64,``0@)">
+            <summary>
+            Checks if a block of memory can fit into the current state of the allocator.
+            </summary>
+            <param name="size">Size of the memory to test.</param>
+            <param name="ignoredIds">Ids of allocations to treat as nonexistent for the purposes of the test.</param>
+            <returns>True if the size could fit, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.CanFit(System.Int64)">
+            <summary>
+            Checks if a block of memory can fit into the current state of the allocator.
+            </summary>
+            <param name="size">Size of the memory to test.</param>
+            <returns>True if the size could fit, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Allocate(System.UInt64,System.Int64,System.Int64@)">
+            <summary>
+            Attempts to allocate a range of memory.
+            </summary>
+            <param name="id">Unique id of the memory to allocate.</param>
+            <param name="size">Size of the memory to allocate.</param>
+            <param name="outputStart">Starting index of the allocated memory, if successful.</param>
+            <returns>True if the allocation succeeded, false if out of memory or if memory was too fragmented to find a spot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Deallocate(System.UInt64)">
+            <summary>
+            Removes the memory associated with the id from the pool.
+            </summary>
+            <param name="id">Id to remove.</param>
+            <returns>True of the id was found, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.GetLargestContiguousSize(System.Int64@,System.Int64@)">
+            <summary>
+            Gets the size of the largest contiguous area and the total free space in the allocator.
+            Not very efficient; runs in linear time for the number of allocations.
+            </summary>
+            <param name="largestContiguous">Largest contiguous region in the allocator. The allocator can hold an allocation up to this size.</param>
+            <param name="totalFreeSpace">Total free space in the allocator.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.IncrementalCompact(System.UInt64@,System.Int64@,System.Int64@,System.Int64@)">
+            <summary>
+            Finds the first allocation with empty space before it and pulls it forward to close the gap. Assumes the ability to perform synchronous reallocation.
+            </summary>
+            <param name="id">Id of the allocation to be moved, if any.</param>
+            <param name="size">Size of the moved allocation.</param>
+            <param name="oldStart">Old starting location of the allocation.</param>
+            <param name="newStart">New starting location of the allocation.</param>
+            <returns>True if a compaction was performed, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Allocator.Resize(System.UInt64,System.Int64,System.Int64@,System.Int64@)">
+            <summary>
+            Attempts to resize a given allocation to a new size. If the new size is smaller, the start index remains unchanged.
+            </summary>
+            <param name="id">Id of the allocation to resize.</param>
+            <param name="size">New desired size of the allocation.</param>
+            <param name="oldStart">Old start location of the allocation.</param>
+            <param name="newStart">New start location of the allocation.</param>
+            <returns>True if the resize was successful. False if there was insufficient room for the larger allocation.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.Buffer`1">
+            <summary>
+            Span over an unmanaged memory region.
+            </summary>
+            <typeparam name="T">Type of the memory exposed by the span.</typeparam>
+        </member>
+        <member name="F:BepuUtilities.Memory.Buffer`1.Memory">
+            <summary>
+            Pointer to the beginning of the memory backing this buffer.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.Buffer`1.Id">
+            <summary>
+            Implementation specific identifier of the raw buffer set by its source. If taken from a BufferPool, Id includes the index in the power pool from which it was taken.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.#ctor(System.Void*,System.Int32,System.Int32)">
+            <summary>
+            Creates a new buffer.
+            </summary>
+            <param name="memory">Memory to back the buffer.</param>
+            <param name="length">Length of the buffer in terms of the specified type.</param>
+            <param name="id">Id of the buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.#ctor(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Allocates a new buffer from a pool.
+            </summary>
+            <param name="length">Length of the buffer in terms of elements of type T</param>
+            <param name="pool">Pool to allocate from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns a buffer to a pool. This should only be used if the specified pool is the same as the one used to allocate the buffer.
+            </summary>
+            <param name="pool">Pool to return the buffer to.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Get(BepuUtilities.Memory.Buffer{System.Byte}@,System.Int32)">
+            <summary>
+            Gets a typed reference from a byte buffer by an index in terms of the type.
+            </summary>
+            <param name="buffer">Byte buffer to interpret.</param>
+            <param name="index">Index into the buffer in terms of the specified type instead of bytes.</param>
+            <returns>Reference to the instance at the specified index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Item(System.Int32)">
+            <summary>
+            Gets a reference to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to grab a reference of.</param>
+            <returns>Reference to the element at the given index.</returns>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Item(System.UInt32)">
+            <summary>
+            Gets a reference to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to grab a reference of.</param>
+            <returns>Reference to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.GetPointer(System.Int32)">
+            <summary>
+            Gets a pointer to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to retrieve a pointer for.</param>
+            <returns>Pointer to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.GetPointer(System.UInt32)">
+            <summary>
+            Gets a pointer to the element at the given index.
+            </summary>
+            <param name="index">Index of the element to retrieve a pointer for.</param>
+            <returns>Pointer to the element at the given index.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,System.Int32)">
+            <summary>
+            Creates a view of a subset of the buffer's memory.
+            </summary>
+            <param name="start">Index at which to start the sliced buffer.</param>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <returns>Buffer spanning the specified subset of the original buffer.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32)">
+            <summary>
+            Creates a view of a subset of the buffer's memory, starting from the first index.
+            </summary>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <returns>Buffer spanning the specified subset of the original buffer.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,System.Int32,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a view of a subset of the buffer's memory.
+            </summary>
+            <param name="start">Index at which to start the sliced buffer.</param>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <param name="sliced">Buffer spanning the specified subset of the original buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Slice(System.Int32,BepuUtilities.Memory.Buffer{`0}@)">
+            <summary>
+            Creates a view of a subset of the buffer's memory, starting from the first index.
+            </summary>
+            <param name="count">Number of elements to include in the sliced buffer.</param>
+            <param name="sliced">Buffer spanning the specified subset of the original buffer.</param>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Length">
+            <summary>
+            Gets the length of the buffer in typed elements.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Buffer`1.Allocated">
+            <summary>
+            Gets whether the buffer references non-null memory.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.Clear(System.Int32,System.Int32)">
+            <summary>
+            Zeroes out the buffer's memory.
+            </summary>
+            <param name="start">Start location in the buffer.</param>
+            <param name="count">Number of elements to clear beyond the start index.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyTo(System.Int32,BepuUtilities.Memory.Buffer{`0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies buffer data into another buffer.
+            </summary>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="target">Target buffer to copy into.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyTo(System.Int32,System.Span{`0},System.Int32,System.Int32)">
+            <summary>
+            Copies buffer data into another buffer.
+            </summary>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="target">Target buffer to copy into.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyFrom(System.Span{`0},System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Copies span data into this buffer.
+            </summary>
+            <param name="source">Source span to copy from.</param>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.CopyFrom(System.ReadOnlySpan{`0},System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Copies span data into this buffer.
+            </summary>
+            <param name="source">Source span to copy from.</param>
+            <param name="sourceStart">Start index in the source buffer.</param>
+            <param name="targetStart">Start index in the target buffer.</param>
+            <param name="count">Number of elements to copy from the source buffer into the target buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf(`0@,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of an element in the buffer using the type's default comparer.
+            </summary>
+            <param name="element">Element to look for in the buffer.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the element in the buffer if found, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf(`0,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of an element in the buffer using the type's default comparer.
+            </summary>
+            <param name="element">Element to look for in the buffer.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the element in the buffer if found, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.IndexOf``1(``0@,System.Int32,System.Int32)">
+            <summary>
+            Gets the index of the first element that matches a provided predicate.
+            </summary>
+            <param name="predicate">Predicate to test each element with.</param>
+            <param name="start">Start index at which to begin the search.</param>
+            <param name="count">Number of elements to scan beyond the start index.</param>
+            <returns>Index of the first matching element in the buffer if any, -1 otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Buffer`1.As``1">
+            <summary>
+            Creates a typed region from the raw buffer with the largest capacity that can fit within the allocated bytes.
+            </summary>
+            <typeparam name="TCast">Type of the buffer.</typeparam>
+            <returns>Typed buffer of maximum extent within the current buffer.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.BufferPool">
+            <summary>
+            Unmanaged memory pool that suballocates from memory blocks pulled from the native heap.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.BufferPool.PowerPool.Slots">
+            <summary>
+            Pool of slots available to this power level.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Memory.BufferPool.PowerPool.BlockAlignment">
+            <summary>
+            Byte alignment to enforce for all block allocations within the buffer pool.
+            </summary>
+            <remarks>Since this only applies at the level of blocks, we can use a pretty beefy value without much concern.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new buffer pool.
+            </summary>
+            <param name="minimumBlockAllocationSize">Minimum size of individual block allocations. Must be a power of 2.
+            Pools with single allocations larger than the minimum will use the minimum value necessary to hold one element.
+            Buffers will be suballocated from blocks.</param>
+            <param name="expectedPooledResourceCount">Number of suballocations to preallocate reference space for.
+            This does not preallocate actual blocks, just the space to hold references that are waiting in the pool.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.EnsureCapacityForPower(System.Int32,System.Int32)">
+            <summary>
+            Ensures that the pool associated with a given power has at least a certain amount of capacity, measured in bytes.
+            </summary>
+            <param name="byteCount">Minimum number of bytes to require for the power pool.</param>
+            <param name="power">Power associated with the pool to check.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.GetCapacityForPower(System.Int32)">
+            <summary>
+            Gets the capacity allocated for a power.
+            </summary>
+            <param name="power">Power to check.</param>
+            <returns>Allocated capacity for the given power.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.GetTotalAllocatedByteCount">
+            <summary>
+            Computes the total number of bytes allocated from native memory in this buffer pool.
+            Includes allocated memory regardless of whether it currently has outstanding references.
+            </summary>
+            <returns>Total number of bytes allocated from native memory in this buffer pool.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.TakeAtLeast``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of elements of a given type. Capacity may be larger than requested.
+            </summary>
+            <typeparam name="T">Type of the elements in the buffer.</typeparam>
+            <param name="count">Desired minimum capacity of the buffer in typed elements.</param>
+            <param name="buffer">Buffer large enough to contain the requested number of elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Take``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a typed buffer of the requested size from the pool.
+            </summary>
+            <typeparam name="T">Type of the instances in the buffer.</typeparam>
+            <param name="count">Desired capacity of the buffer in typed elements.</param>
+            <param name="buffer">Typed buffer of the requested size.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.TakeForPower(System.Int32,BepuUtilities.Memory.Buffer{System.Byte}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of bytes given by a power, where the number of bytes is 2^power.
+            </summary>
+            <param name="power">Number of bytes that should fit within the buffer as an exponent, where the number of bytes is 2^power.</param>
+            <param name="buffer">Buffer that can hold the bytes.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.ReturnUnsafely(System.Int32)">
+            <inheritdoc/>       
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Return``1(BepuUtilities.Memory.Buffer{``0}@)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.ResizeToAtLeast``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Resize``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <inheritdoc/>  
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.AssertEmpty">
+            <summary>
+            Issues debug assertions that all pools are empty.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.Clear">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            The pool will remain in a usable state after clearing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.BufferPool.System#IDisposable#Dispose">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            Equivalent to <see cref="M:BepuUtilities.Memory.BufferPool.Clear"/> for <see cref="T:BepuUtilities.Memory.BufferPool"/>.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Memory.IdPool">
+            <summary>
+            Manages a pool of identifier values. Grabbing an id from the pool picks a number that has been picked and returned before, 
+            or if none of those are available, the minimum value greater than any existing id.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.HighestPossiblyClaimedId">
+            <summary>
+            Gets the highest value which any index claimed thus far could possibly have.
+            This is not necessarily the current highest claimed index; this value may represent an earlier claim that has already been released.
+            -1 if nothing has ever been claimed.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.AvailableIdCount">
+            <summary>
+            Gets the number of previously returned ids waiting in the pool.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.IdPool.Allocated">
+            <summary>
+            Gets whether the id pool has backing resources allocated to it and is ready to use.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns an id to the pool without checking if a resize is required on the available id stack.
+            </summary>
+            <param name="id">Id to return.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Clear">
+            <summary>
+            Resets the IdPool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.EnsureCapacity(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Ensures that the underlying id queue can hold at least a certain number of ids.
+            </summary>
+            <param name="count">Number of elements to preallocate space for in the available ids queue.</param>
+            <param name="pool">Pool to pull resized spans from.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Compact(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Shrinks the available ids queue to the smallest size that can fit the given count and the current available id count.
+            </summary>
+            <param name="minimumCount">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Resize(System.Int32,BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Resizes the underlying buffer to the smallest size required to hold the given count and the current available id count.
+            </summary>
+            <param name="count">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IdPool.Dispose(BepuUtilities.Memory.IUnmanagedMemoryPool)">
+            <summary>
+            Returns underlying memory to the pool.
+            </summary>
+            <remarks>The IdPool can be reused only if EnsureCapacity or Resize is called.</remarks>
+        </member>
+        <member name="T:BepuUtilities.Memory.IUnmanagedMemoryPool">
+            <summary>
+            Defines a type that is capable of rapidly serving requests for allocation and deallocation of unmanaged memory.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.TakeAtLeast``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a buffer large enough to contain a number of elements of a given type. Capacity may be larger than requested.
+            </summary>
+            <typeparam name="T">Type of the elements in the buffer.</typeparam>
+            <param name="count">Desired minimum capacity of the buffer in typed elements.</param>
+            <param name="buffer">Buffer large enough to contain the requested number of elements.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Take``1(System.Int32,BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Takes a typed buffer of the requested size from the pool.
+            </summary>
+            <typeparam name="T">Type of the instances in the buffer.</typeparam>
+            <param name="count">Desired capacity of the buffer in typed elements.</param>
+            <param name="buffer">Typed buffer of the requested size.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Return``1(BepuUtilities.Memory.Buffer{``0}@)">
+            <summary>
+            Returns a buffer to the pool.
+            </summary>
+            <typeparam name="T">Type of the buffer's elements.</typeparam>
+            <param name="buffer">Buffer to return to the pool. The reference will be cleared.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.GetCapacityForCount``1(System.Int32)">
+            <summary>
+            Gets the capacity of a buffer that would be returned by the pool if a given element count was requested from TakeAtLeast.
+            </summary>
+            <typeparam name="T">Type of the elements being requested.</typeparam>
+            <param name="count">Number of elements to request.</param>
+            <returns>Capacity of a buffer that would be returned if the given element count was requested.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns a buffer to the pool by id.
+            </summary>
+            <param name="id">Id of the buffer to return to the pool.</param>
+            <remarks>Pools zero out the passed-in buffer by convention. This costs very little and avoids a wide variety of bugs (either directly or by forcing fast failure).
+            This "Unsafe" overload should be used only in cases where there's a reason to bypass the clear; the naming is intended to dissuade casual use.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.ResizeToAtLeast``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Resizes a typed buffer to the smallest size available in the pool which contains the target size. Copies a subset of elements into the new buffer. 
+            Final buffer size is at least as large as the target size and may be larger.
+            </summary>
+            <typeparam name="T">Type of the buffer to resize.</typeparam>
+            <param name="buffer">Buffer reference to resize.</param>
+            <param name="targetSize">Number of elements to resize the buffer for.</param>
+            <param name="copyCount">Number of elements to copy into the new buffer from the old buffer. Contents of slots outside the copied range in the resized buffer are undefined.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Resize``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Resizes a buffer to the target size. Copies a subset of elements into the new buffer.
+            </summary>
+            <typeparam name="T">Type of the buffer to resize.</typeparam>
+            <param name="buffer">Buffer reference to resize.</param>
+            <param name="targetSize">Number of elements to resize the buffer for.</param>
+            <param name="copyCount">Number of elements to copy into the new buffer from the old buffer.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.Clear">
+            <summary>
+            Returns all allocations in the pool to sources. Any outstanding buffers will be invalidated silently.
+            The pool will remain in a usable state after clearing.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.IUnmanagedMemoryPool.GetTotalAllocatedByteCount">
+            <summary>
+            Computes the total number of bytes allocated from the memory source in this pool.
+            Includes allocated memory regardless of whether it currently has outstanding references.
+            </summary>
+            <returns>Total number of bytes allocated from the backing memory source in this pool.</returns>
+        </member>
+        <member name="T:BepuUtilities.Memory.ManagedIdPool">
+            <summary>
+            Manages a pool of identifier values. Grabbing an id from the pool picks a number that has been picked and returned before, 
+            or if none of those are available, the minimum value greater than any existing id.
+            </summary>
+            <remarks>This contrasts with the IdPool which operates on unmanaged memory. This version only exists to support use cases where the unmanaged version can't be used-
+            for example, in the BufferPool. While the implementation can be shared, doing so involves creating enough supporting infrastructure that it's simpler to have a managed-only version.</remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.ManagedIdPool.HighestPossiblyClaimedId">
+            <summary>
+            Gets the highest value which any index claimed thus far could possibly have.
+            This is not necessarily the current highest claimed index; this value may represent an earlier claim that has already been released.
+            -1 if nothing has ever been claimed.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.ManagedIdPool.AvailableIdCount">
+            <summary>
+            Gets the number of previously returned ids waiting in the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.#ctor(System.Int32)">
+            <summary>
+            Gets the capacity of the id pool for returned ids.
+            </summary>        
+            public int Capacity => availableIds.Length;
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.ReturnUnsafely(System.Int32)">
+            <summary>
+            Returns an id to the pool without checking if a resize is required on the available id stack.
+            </summary>
+            <param name="id">Id to return.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Clear">
+            <summary>
+            Resets the IdPool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.EnsureCapacity(System.Int32)">
+            <summary>
+            Ensures that the underlying id queue can hold at least a certain number of ids.
+            </summary>
+            <param name="count">Number of elements to preallocate space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Compact(System.Int32)">
+            <summary>
+            Shrinks the available ids queue to the smallest size that can fit the given count and the current available id count.
+            </summary>
+            <param name="minimumCount">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.ManagedIdPool.Resize(System.Int32)">
+            <summary>
+            Resizes the underlying buffer to the smallest size required to hold the given count and the current available id count.
+            </summary>
+            <param name="count">Number of elements to guarantee space for in the available ids queue.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.Pool`1">
+            <summary>
+            Manages a cache of a type of resource.
+            </summary>
+            <typeparam name="T">Type of object to pool.</typeparam>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.PooledElementCount">
+            <summary>
+            Gets the number of existing elements in the pool. This number of elements can be requested without creating any new ones.
+            </summary>
+            <remarks> 
+            Does not do any locking. Should not be used while elements may still be getting added to or removed from the pool.
+            </remarks>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Creator">
+            <summary>
+            Gets or sets the function used to create new objects when the pool has no existing objects available.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Initializer">
+            <summary>
+            Gets or sets the function used to initialize objects taken from the pool. Runs even if the object was just created by the Creator delegate.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.Memory.Pool`1.Cleaner">
+            <summary>
+            Gets or sets the action applied to an element when it is returned to the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Clear">
+            <summary>
+            Clears all elements from the pool.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Take">
+            <summary>
+            Takes an element from the pool. If the pool is empty, a new resource is created and returned.
+            </summary>
+            <returns>Element from the pool.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.Pool`1.Return(`0)">
+            <summary>
+            Returns the specified item to the pool. If a cleaner delegate is set, the item is cleaned.
+            </summary>
+            <param name="item">Item to give back to the pool.</param>
+        </member>
+        <member name="F:BepuUtilities.Memory.SpanHelper.MaximumSpanSizePower">
+            <summary>
+            The highest size span exponent. The largest span is 2^MaximumSpanSizePower. This avoids overflow.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.GetContainingPowerOf2(System.Int32)">
+            <summary>
+            Computes the lowest integer N such that 2^N >= i.
+            </summary>
+            <param name="i">Integer to compute the power of.</param>
+            <returns>Lowest integer N such that 2^N >= i.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.IsPrimitive``1">
+            <summary>
+            Tests if a generic parameter is primitive. Fast path; specialized compilation.
+            </summary>
+            <typeparam name="T">Type to check for primitiveness.</typeparam>
+            <returns>True if the type is one of the primitive types, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.IsPrimitive(System.Type)">
+            <summary>
+            Tests if a type is primitive. Slow path; unspecialized compilation.
+            </summary>
+            <param name="type">Type to check for primitiveness.</param>
+            <returns>True if the type is one of the primitive types, false otherwise.</returns>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from one buffer to another.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source buffer to pull elements from.</param>
+            <param name="sourceIndex">Index in the buffer to start pulling elements from.</param>
+            <param name="target">Target buffer to set values.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Span{``0},System.Int32,System.Int32)">
+            <summary>
+            Copies data from a buffer to a span.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source buffer to pull elements from.</param>
+            <param name="sourceIndex">Index in the buffer to start pulling elements from.</param>
+            <param name="target">Target span to set values.</param>
+            <param name="targetIndex">Index in the span to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(System.Span{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from a span to a buffer.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source span to pull elements from.</param>
+            <param name="sourceIndex">Index in the span to start pulling elements from.</param>
+            <param name="target">Target buffer to set values into.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.SpanHelper.Copy``1(System.ReadOnlySpan{``0}@,System.Int32,BepuUtilities.Memory.Buffer{``0}@,System.Int32,System.Int32)">
+            <summary>
+            Copies data from a span to a buffer.
+            </summary>
+            <typeparam name="T">Type of element being copied.</typeparam>
+            <param name="source">Source span to pull elements from.</param>
+            <param name="sourceIndex">Index in the span to start pulling elements from.</param>
+            <param name="target">Target buffer to set values into.</param>
+            <param name="targetIndex">Index in the buffer to start putting elements into.</param>
+            <param name="count">Number of elements to copy.</param>
+        </member>
+        <member name="T:BepuUtilities.Memory.WorkerBufferPools">
+            <summary>
+            Collection of pools used by worker threads.
+            </summary> 
+        </member>
+        <!-- Badly formed XML comment ignored for member "P:BepuUtilities.Memory.WorkerBufferPools.Item(System.Int32)" -->
+        <member name="P:BepuUtilities.Memory.WorkerBufferPools.DefaultBlockCapacity">
+            <summary>
+            Gets or sets the default block capacity for any newly created arena subpools.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new set of worker pools.
+            </summary>
+            <param name="initialWorkerCount">Initial number of workers to allocate space for.</param>
+            <param name="defaultBlockCapacity">Default block capacity in thread pools.</param>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.Clear">
+            <summary>
+            Clears all allocations from worker pools. Pools can still be used after being cleared.
+            </summary>
+            <remarks>This does not take any locks and should not be called if any other threads may be using any of the involved pools.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.Dispose">
+            <summary>
+            Disposes all worker pools. Pools cannot be used after being disposed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Memory.WorkerBufferPools.GetTotalAllocatedByteCount">
+            <summary>
+            Gets the total number of bytes allocated from native memory by all worker pools. Includes memory that is not currently in use by external allocators.
+            </summary>
+            <returns>Total number of bytes allocated from native memory by all worker pools. Includes memory that is not currently in use by external allocators.</returns>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Quaternion.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>Creates a quaternion from a unit vector and an angle to rotate around the vector.</summary>
+            <param name="axis">The unit vector to rotate around.</param>
+            <param name="angle">The angle, in radians, to rotate around the vector.</param>
+            <returns>The newly created quaternion.</returns>
+            <remarks><paramref name="axis" /> vector must be normalized before calling this method or the resulting <see cref="T:BepuUtilities.Numerics.Quaternion" /> will be incorrect.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Quaternion.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion)">
+            <summary>Concatenates two quaternions.</summary>
+            <param name="value1">The first quaternion rotation in the series.</param>
+            <param name="value2">The second quaternion rotation in the series.</param>
+            <returns>A new quaternion representing the concatenation of the <paramref name="value1" /> rotation followed by the <paramref name="value2" /> rotation.</returns>
+        </member>
+        <member name="M:BepuUtilities.Numerics.Vector3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>Transforms a vector by the specified Quaternion rotation value.</summary>
+            <param name="value">The vector to rotate.</param>
+            <param name="rotation">The rotation to apply.</param>
+            <returns>The transformed vector.</returns>
+        </member>
+        <member name="T:BepuUtilities.QuaternionEx">
+            <summary>
+            Provides additional functionality and some lower overhead function variants for Quaternions.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Add(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Adds two quaternions together.
+            </summary>
+            <param name="a">First quaternion to add.</param>
+            <param name="b">Second quaternion to add.</param>
+            <param name="result">Sum of the addition.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Scale(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Scales a quaternion.
+            </summary>
+            <param name="q">Quaternion to multiply.</param>
+            <param name="scale">Amount to multiply each component of the quaternion by.</param>
+            <param name="result">Scaled quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.ConcatenateWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            Assumes that neither input parameter overlaps the output parameter.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Concatenate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to multiply.</param>
+            <param name="b">Second quaternion to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="P:BepuUtilities.QuaternionEx.Identity">
+            <summary>
+            Quaternion representing the identity transform.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix3x3@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix3x3@)">
+            <summary>
+            Creates a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix used to create a new quaternion.</param>
+            <returns>Quaternion representing the same rotation as the matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromRotationMatrix(BepuUtilities.Matrix@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <returns>Quaternion based on the rotation matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Normalize(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Ensures the quaternion has unit length.
+            </summary>
+            <param name="quaternion">Quaternion to normalize.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.LengthSquared(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the squared length of the quaternion.
+            </summary>
+            <returns>Squared length of the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Length(BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the length of the quaternion.
+            </summary>
+            <returns>Length of the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Slerp(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Blends two quaternions together to get an intermediate state.
+            </summary>
+            <param name="start">Starting point of the interpolation.</param>
+            <param name="end">Ending point of the interpolation.</param>
+            <param name="interpolationAmount">Amount of the end point to use.</param>
+            <param name="result">Interpolated intermediate quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Slerp(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Number)">
+            <summary>
+            Blends two quaternions together to get an intermediate state.
+            </summary>
+            <param name="start">Starting point of the interpolation.</param>
+            <param name="end">Ending point of the interpolation.</param>
+            <param name="interpolationAmount">Amount of the end point to use.</param>
+            <returns>Interpolated intermediate quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Conjugate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <param name="result">Conjugated quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Conjugate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <returns>Conjugated quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Inverse(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the inverse of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to invert.</param>
+            <param name="result">Result of the inversion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Inverse(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the inverse of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to invert.</param>
+            <returns>Result of the inversion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Negate(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Negates the components of a quaternion.
+            </summary>
+            <param name="a">Quaternion to negate.</param>
+            <param name="b">Negated result.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Negate(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Negates the components of a quaternion.
+            </summary>
+            <param name="q">Quaternion to negate.</param>
+            <returns>Negated result.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformWithoutOverlap(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector using a quaternion, assuming that the output does not alias with the input.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitX(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit X direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitY(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit Y vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.TransformUnitZ(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms the unit Z vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Creates a quaternion from an axis and angle.
+            </summary>
+            <param name="axis">Axis of rotation.</param>
+            <param name="angle">Angle to rotate around the axis.</param>
+            <returns>Quaternion representing the axis and angle rotation.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromAxisAngle(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Creates a quaternion from an axis and angle.
+            </summary>
+            <param name="axis">Axis of rotation.</param>
+            <param name="angle">Angle to rotate around the axis.</param>
+            <param name="q">Quaternion representing the axis and angle rotation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromYawPitchRoll(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number)">
+            <summary>
+            Constructs a quaternion from yaw, pitch, and roll.
+            </summary>
+            <param name="yaw">Yaw of the rotation.</param>
+            <param name="pitch">Pitch of the rotation.</param>
+            <param name="roll">Roll of the rotation.</param>
+            <returns>Quaternion representing the yaw, pitch, and roll.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.CreateFromYawPitchRoll(BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Number,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Constructs a quaternion from yaw, pitch, and roll.
+            </summary>
+            <param name="yaw">Yaw of the rotation.</param>
+            <param name="pitch">Pitch of the rotation.</param>
+            <param name="roll">Roll of the rotation.</param>
+            <param name="q">Quaternion representing the yaw, pitch, and roll.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetAngleFromQuaternion(BepuUtilities.Numerics.Quaternion)">
+            <summary>
+            Computes the angle change represented by a normalized quaternion.
+            </summary>
+            <param name="q">Quaternion to be converted.</param>
+            <returns>Angle around the axis represented by the quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetAxisAngleFromQuaternion(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Vector3@,BepuUtilities.Numerics.Number@)">
+            <summary>
+            Computes the axis angle representation of a normalized quaternion.
+            </summary>
+            <param name="q">Quaternion to be converted.</param>
+            <param name="axis">Axis represented by the quaternion.</param>
+            <param name="angle">Angle around the axis represented by the quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Vector3,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <param name="q">Quaternion representing the rotation from v1 to v2.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetRelativeRotationWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Computes the rotation from the start orientation to the end orientation such that end = Quaternion.Concatenate(start, relative).
+            Assumes that neither input parameter overlaps with the output parameter.
+            </summary>
+            <param name="start">Starting orientation.</param>
+            <param name="end">Ending orientation.</param>
+            <param name="relative">Relative rotation from the start to the end orientation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionEx.GetLocalRotationWithoutOverlap(BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Transforms the rotation into the local space of the target basis such that rotation = Quaternion.Concatenate(localRotation, targetBasis)
+            Assumes that neither input parameter overlaps with the output parameter.
+            </summary>
+            <param name="rotation">Rotation in the original frame of reference.</param>
+            <param name="targetBasis">Basis in the original frame of reference to transform the rotation into.</param>
+            <param name="localRotation">Rotation in the local space of the target basis.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Rebroadcast(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Takes a slot from the source quaternion and broadcasts it into all slots of the target quaternion.
+            </summary>
+            <param name="source">Quaternion to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="broadcasted">Target quaternion to be filled with the selected data.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.CreateFromRotationMatrix(BepuUtilities.Matrix3x3Wide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Constructs a quaternion from a rotation matrix.
+            </summary>
+            <param name="r">Rotation matrix to create the quaternion from.</param>
+            <param name="q">Quaternion based on the rotation matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Add(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Adds the components of two quaternions together.
+            </summary>
+            <param name="a">First quaternion to add.</param>
+            <param name="b">Second quaternion to add.</param>
+            <param name="result">Sum of the two input quaternions.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <param name="q">Quaternion representing the rotation from v1 to v2.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetQuaternionBetweenNormalizedVectors(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the quaternion rotation between two normalized vectors.
+            </summary>
+            <param name="v1">First unit-length vector.</param>
+            <param name="v2">Second unit-length vector.</param>
+            <returns>Quaternion representing the rotation from v1 to v2.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.GetAxisAngleFromQuaternion(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Gets an axis and angle representation of the rotation stored in a quaternion.
+            </summary>
+            <param name="q">Quaternion to extract an axis-angle representation from.</param>
+            <param name="axis">Axis of rotation extracted from the quaternion.</param>
+            <param name="angle">Angle of rotation extracted from the quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the vector using a quaternion. Assumes that the memory backing the input and output do not overlap.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Transform(BepuUtilities.Vector3Wide@,BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <param name="result">Transformed vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Transform(BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformByConjugate(BepuUtilities.Vector3Wide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the vector using a quaternion.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitX(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit X direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitY(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit Y vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitZ(BepuUtilities.QuaternionWide)">
+            <summary>
+            Transforms the unit Z vector using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vector.</param>
+            <returns>Transformed vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitXY(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the unit X and unit Y direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vectors.</param>
+            <param name="x">Transformed unit X vector.</param>
+            <param name="y">Transformed unit Y vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.TransformUnitXZ(BepuUtilities.QuaternionWide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Transforms the unit X and unit Z direction using a quaternion.
+            </summary>
+            <param name="rotation">Rotation to apply to the vectors.</param>
+            <param name="x">Transformed unit X vector.</param>
+            <param name="z">Transformed unit Z vector.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ConcatenateWithoutOverlap(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b. Assumes that the memory backing the input and output do not overlap.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Concatenate(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <param name="result">Product of the concatenation.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.op_Multiply(BepuUtilities.QuaternionWide,BepuUtilities.QuaternionWide)">
+            <summary>
+            Concatenates the transforms of two quaternions together such that the resulting quaternion, applied as an orientation to a vector v, is equivalent to
+            transformed = (v * a) * b.
+            </summary>
+            <param name="a">First quaternion to concatenate.</param>
+            <param name="b">Second quaternion to concatenate.</param>
+            <returns>Product of the concatenation.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Conjugate(BepuUtilities.QuaternionWide@,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <param name="result">Conjugated quaternion.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.Conjugate(BepuUtilities.QuaternionWide@)">
+            <summary>
+            Computes the conjugate of the quaternion.
+            </summary>
+            <param name="quaternion">Quaternion to conjugate.</param>
+            <returns>Conjugated quaternion.</returns>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ReadFirst(BepuUtilities.QuaternionWide@,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Gathers values from the first slot of a wide quaternion and puts them into a narrow representation.
+            </summary>
+            <param name="source">Wide quaternion to copy values from.</param>
+            <param name="target">Narrow quaternion to place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.WriteFirst(BepuUtilities.Numerics.Quaternion,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Gathers values from a quaternion and places them into the first indices of the target wide quaternion.
+            </summary>
+            <param name="source">Quaternion to copy values from.</param>
+            <param name="targetSlot">Wide quaternion to place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.WriteSlot(BepuUtilities.Numerics.Quaternion,System.Int32,BepuUtilities.QuaternionWide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="M:BepuUtilities.QuaternionWide.ReadSlot(BepuUtilities.QuaternionWide@,System.Int32,BepuUtilities.Numerics.Quaternion@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="T:BepuUtilities.Symmetric2x2Wide">
+            <summary>
+            Stores the lower left triangle (including diagonal) of a 2x2 matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.SandwichScale(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes m * scale * mT. 
+            </summary>
+            <param name="m">Matrix to sandwich the scale with.</param>
+            <param name="scale">Scale to be sandwiched.</param>
+            <param name="result">Result of m * scale * mT.</param>
+            <remarks>This is a peculiar operation, but it's useful for computing linear effective mass contributions in 2DOF constraints.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.MultiplyTransposed(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric2x2Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = transpose(transpose(a) * b), assuming b is symmetric.
+            </summary>
+            <param name="a">Matrix to be transposed and multiplied.</param>
+            <param name="b">Symmetric matrix to multiply.</param>
+            <param name="result">Result of transpose(transpose(a) * b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric2x2Wide.CompleteMatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes a * transpose(b), assuming a = b * M for some symmetric matrix M. This is conceptually the second half of Triangular3x3Wide.MatrixSandwich.
+            </summary>
+            <param name="a">First matrix to multiply. Must be of the form a = b * M for some symmetric matrix M.</param>
+            <param name="b">Matrix to be transaposed and multiplied with a..</param>
+            <param name="result">Symmetric result of a * transpose(b), assuming a = b * M.</param>
+        </member>
+        <member name="T:BepuUtilities.Symmetric3x3">
+            <summary>
+            Lower left triangle (including diagonal) of a symmetric 3x3 matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.XX">
+            <summary>
+            First row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.YX">
+            <summary>
+            Second row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.YY">
+            <summary>
+            Second row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZX">
+            <summary>
+            Third row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZY">
+            <summary>
+            Third row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3.ZZ">
+            <summary>
+            Third row, third column of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.RotationSandwich(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes rT * m * r for a symmetric matrix m and a rotation matrix r.
+            </summary>
+            <param name="r">Rotation matrix to use as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of transpose(r) * m * r.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Determinant(BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Computes the determinant of a symmetric matrix.
+            </summary>
+            <param name="m">Matrix to intepret as symmetric.</param>
+            <returns>Determinant of the matrix interpreted as symmetric.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Invert(BepuUtilities.Symmetric3x3)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <returns>Inverted matrix.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Invert(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Inverts the given matix.
+            </summary>
+            <param name="m">Matrix to be inverted.</param>
+            <param name="inverse">Inverted matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Add(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Matrix with components equal to the components of the two input matrices added together.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Subtract(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <param name="result">Matrix with components equal to the components of the matrix a minus the components of matrix b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Add(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Matrix with components equal to the components of the two input matrices added together.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Addition(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Adds the components of two matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Matrix with components equal to the components of the two input matrices added together.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Subtract(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Subtracts the components of one matrix from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <param name="result">Matrix with components equal to the difference of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="a">Matrix to be subtracted from</param>
+            <param name="b">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Subtraction(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Subtracts the components of matrix b from matrix a.
+            </summary>
+            <param name="b">Matrix to be subtracted from</param>
+            <param name="a">Matrix to subtract from matrix a.</param>
+            <returns>Matrix with components equal to the components of the matrix a minus the components of matrix b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Scale(BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Number,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Multiplies every component in the matrix by the given scale.
+            </summary>
+            <param name="m">Matrix to be scaled.</param>
+            <param name="scale">Scale to apply to every component of the original matrix.</param>
+            <param name="scaled">Scaled result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Numerics.Number)">
+            <summary>
+            Multiplies every component in the matrix by the given scale.
+            </summary>
+            <param name="m">Matrix to be scaled.</param>
+            <param name="scale">Scale to apply to every component of the original matrix.</param>
+            <returns>Scaled result.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.MultiplyWithoutOverlap(BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Symmetric3x3@)">
+            <summary>
+            Multiplies the two matrices as if they were symmetric.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Multiplies the two matrices as if they were symmetric.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Multiply(BepuUtilities.Matrix3x3@,BepuUtilities.Symmetric3x3@,BepuUtilities.Matrix3x3@)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <param name="result">Product of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Matrix3x3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.op_Multiply(BepuUtilities.Symmetric3x3,BepuUtilities.Matrix3x3)">
+            <summary>
+            Multiplies the two matrices.
+            </summary>
+            <param name="a">First matrix to multiply.</param>
+            <param name="b">Second matrix to multiply.</param>
+            <returns>Product of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.TransformWithoutOverlap(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Transforms a vector by a symmetric matrix.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to interpret as symmetric transform.</param>
+            <param name="result">Result of transforming the vector by the given symmetric matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3.Transform(BepuUtilities.Numerics.Vector3,BepuUtilities.Symmetric3x3)">
+            <summary>
+            Transforms a vector by a symmetric matrix.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to interpret as symmetric transform.</param>
+            <returns>Result of transforming the vector by the given symmetric matrix.</returns>
+        </member>
+        <member name="T:BepuUtilities.Symmetric3x3Wide">
+            <summary>
+            Stores the lower left triangle (including diagonal) of a 3x3 matrix. Useful for symmetric matrices (and sometimes antisymmetric matrices).
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.XX">
+            <summary>
+            First row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.YX">
+            <summary>
+            Second row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.YY">
+            <summary>
+            Second row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZX">
+            <summary>
+            Third row, first column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZY">
+            <summary>
+            Third row, second column of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric3x3Wide.ZZ">
+            <summary>
+            Third row, third column of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Invert(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Inverts the matrix as if it is a symmetric matrix where M32 == M23, M13 == M31, and M21 == M12.
+            </summary>
+            <param name="m">Symmetric matrix to invert.</param>
+            <param name="inverse">Inverse of the symmetric matrix.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Add(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Adds the components of two symmetric matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <param name="result">Sum of the two input matrices.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Addition(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Adds the components of two symmetric matrices together.
+            </summary>
+            <param name="a">First matrix to add.</param>
+            <param name="b">Second matrix to add.</param>
+            <returns>Sum of the two input matrices.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Subtract(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Subtracts one symmetric matrix's components from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <param name="result">Result of a - b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Subtraction(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Subtracts one symmetric matrix's components from another.
+            </summary>
+            <param name="a">Matrix to be subtracted from.</param>
+            <param name="b">Matrix to subtract from the first matrix.</param>
+            <returns>Result of a - b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.SkewSandwichWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes skewSymmetric(v) * m * transpose(skewSymmetric(v)) for a symmetric matrix m. Assumes that the input and output matrices do not overlap.
+            </summary>
+            <param name="m">Symmetric matrix.</param>
+            <param name="v">Vector to create the skew symmetric matrix from to act as the sandwich bread.</param>
+            <param name="sandwich">Result of skewSymmetric(v) * m * transpose(skewSymmetric(v)).</param>
+            <remarks>This operation might have a formal name that isn't skew sandwich. But that's okay, its real name is skew sandwich.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.VectorSandwich(BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes v * m * transpose(v) for a symmetric matrix m. Assumes that the input and output do not overlap.
+            </summary>
+            <param name="v">Vector acting as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of v * m * transpose(v) for a symmetric matrix m.</param>
+            <remarks>Since I called the other one a skew sandwich, I really don't have a choice in the naming convention anymore.</remarks>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.RotationSandwich(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes rT * m * r for a symmetric matrix m and a rotation matrix R.
+            </summary>
+            <param name="r">Rotation matrix to use as the sandwich bread.</param>
+            <param name="m">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of v * m * transpose(v) for a symmetric matrix m.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyWithoutOverlap(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <returns>Result of multiplying a * b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyWithoutOverlap(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that b represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">First matrix of the pair to multiply.</param>
+            <param name="b">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <returns>Result of multiplying a * b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.Multiply(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that a represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="b">Second matrix of the pair to multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.op_Multiply(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * b, assuming that a represents a symmetric 3x3 matrix. Assumes that input parameters and output result do not overlap.
+            </summary>
+            <param name="a">Matrix to be reinterpreted as symmetric for the multiply.</param>
+            <param name="b">Second matrix of the pair to multiply.</param>
+            <param name="result">Result of multiplying a * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyByTransposed(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@)">
+            <summary>
+            Computes result = a * transpose(b).
+            </summary>
+            <param name="a">Matrix to multiply with the transposed matrix.</param>
+            <param name="b">Matrix to transpose and concatenate with the first matrix.</param>
+            <param name="result">Result of a * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MultiplyByTransposed(BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@)">
+            <summary>
+            Computes result = transpose(a * transpose(b)).
+            </summary>
+            <param name="a">Matrix to multiply with the transposed matrix.</param>
+            <param name="b">Matrix to transpose and concatenate with the first matrix.</param>
+            <param name="result">Result of transpose(a * transpose(b)).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.MatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Symmetric2x2Wide@)">
+            <summary>
+            Computes m * t * mT for a symmetric matrix t and a matrix m.
+            </summary>
+            <param name="m">Matrix to use as the sandwich bread.</param>
+            <param name="t">Succulent interior symmetric matrix.</param>
+            <param name="sandwich">Result of m * t * mT for a symmetric matrix t.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwich(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * b, where a = transpose(b) * M for some symmetric matrix M.
+            </summary>
+            <param name="a">Some matrix equal to transpose(b) * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M.</param>
+            <param name="result">Complete result of transpose(b) * M * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwich(BepuUtilities.Matrix2x3Wide@,BepuUtilities.Matrix2x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = tranpose(a) * b, where a = transpose(transpose(b) * M) for some symmetric matrix M. In other words, we're just treating matrix a as a 3x2 matrix.
+            </summary>
+            <param name="a">Some matrix equal to transpose(b) * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M.</param>
+            <param name="result">Complete result of transpose(b) * M * b.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwichByTranspose(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = a * transpose(b), where a = b * M for some symmetric matrix M.
+            </summary>
+            <param name="a">Some matrix equal to b * M for some symmetric matrix M.</param>
+            <param name="b">Matrix used to sandwich the original matrix M, to be transposed.</param>
+            <param name="result">Complete result of b * M * transpose(b).</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric3x3Wide.CompleteMatrixSandwichTranspose(BepuUtilities.Matrix3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@)">
+            <summary>
+            Computes result = transpose(a) * b, where b = M * a for some symmetric matrix M.
+            </summary>
+            <param name="a">Matrix used to sandwich the original matrix M.</param>
+            <param name="b">Some matrix equal to M * a for some symmetric matrix M.</param>
+            <param name="result">Complete result of transpose(a) * M * a.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.GetUpperLeft3x3Block(BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Returns a reference to the upper left 3x3 block of the matrix.
+            </summary>
+            <param name="m">Matrix to pull a block from.</param>
+            <returns>Reference to the requested block.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.GetUpperRight3x1Block(BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Returns a reference to the upper right 3x1 (or lower left 1x3) block of the matrix. 
+            </summary>
+            <param name="m">Matrix to pull a block from.</param>
+            <returns>Reference to the requested block.</returns>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.Scale(BepuUtilities.Symmetric4x4Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric4x4Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric4x4Wide.TransformWithoutOverlap(BepuUtilities.Vector4Wide@,BepuUtilities.Symmetric4x4Wide,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes result = v * m.
+            </summary>
+            <param name="v">Vector to transform.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result">Result of the transform.</param>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.A">
+            <summary>
+            Upper left 3x3 block of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.B">
+            <summary>
+            Lower left 2x3 block of the matrix.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Symmetric5x5Wide.D">
+            <summary>
+            Lower right 2x2 block of the matrix.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Symmetric5x5Wide.Scale(BepuUtilities.Symmetric5x5Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric5x5Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric5x5Wide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector2Wide@,BepuUtilities.Symmetric5x5Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Computes result = v * m, where v and result are 1x5 vectors which are split into two subvectors.
+            </summary>
+            <param name="v0">First half of the a vector.</param>
+            <param name="v1">Second half of the a vector.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result0">First half of the result.</param>
+            <param name="result1">Second half of the result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.Scale(BepuUtilities.Symmetric6x6Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Symmetric6x6Wide@)">
+            <summary>
+            Scales each component of m by the given scale.
+            </summary>
+            <param name="m">Matrix to scale.</param>
+            <param name="scale">Scale to apply to the components of m.</param>
+            <param name="result">Result of scaling each component of m by scale.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.TransformWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric6x6Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes result = v * m, where v and result are 1x6 vectors which are split into two 1x3 values.
+            </summary>
+            <param name="v0">First half of the a vector.</param>
+            <param name="v1">Second half of the a vector.</param>
+            <param name="m">Matrix to transform with.</param>
+            <param name="result0">First half of the result.</param>
+            <param name="result1">Second half of the result.</param>
+        </member>
+        <member name="M:BepuUtilities.Symmetric6x6Wide.LDLTSolve(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Matrix3x3Wide@,BepuUtilities.Symmetric3x3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Solves [vLower, vUpper] = [resultLower, resultUpper] * [[a, b], [bT, d]] for [resultLower, resultUpper] using LDLT decomposition.
+            [[a, b], [bT, d]] should be positive semidefinite.
+            </summary>
+            <param name="v0">First 3 values of the 6 component input vector.</param>
+            <param name="v1">Second 3 values of the 6 component input vector.</param>
+            <param name="a">Upper left 3x3 region of the matrix.</param>
+            <param name="b">Upper right 3x3 region of the matrix. Also the lower left 3x3 region of the matrix, transposed.</param>
+            <param name="d">Lower right 3x3 region of the matrix.</param>
+            <param name="result0">First 3 values of the result vector.</param>
+            <param name="result1">Second 3 values of the result vector.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.ContinuationBlock">
+            <summary>
+            Stores a block of task continuations that maintains a pointer to previous blocks. 
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.ContinuationHandle">
+            <summary>
+            Refers to a continuation within a <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/>.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Completed">
+            <summary>
+            Gets whether the tasks associated with this continuation have completed. If the continuation has not been initialized, this will always return false.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Continuation">
+            <summary>
+            Retrieves a pointer to the continuation data for <see cref="T:BepuUtilities.TaskScheduling.ContinuationHandle"/>.
+            </summary>
+            <returns>Pointer to the continuation backing the given handle.</returns>
+            <remarks>This should not be used if the continuation handle is not known to be valid. The data pointed to by the data could become invalidated if the continuation completes.</remarks>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Null">
+            <summary>
+            Gets a null continuation handle.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.ContinuationHandle.Initialized">
+            <summary>
+            Gets whether this handle ever represented an allocated handle. This does not guarantee that the continuation's associated tasks are active in the <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/> that it was allocated from.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.ContinuationHandle.NotifyTaskCompleted(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Notifies the continuation that one task was completed.
+            </summary>
+            <param name="workerIndex">Worker index to pass to the continuation's delegate, if any.</param>
+            <param name="dispatcher">Dispatcher to pass to the continuation's delegate, if any.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.IJobFilter">
+            <summary>
+            Determines which jobs are allowed to serve a <see cref="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)"/> request.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.IJobFilter.AllowJob(System.UInt64)">
+            <summary>
+            Determines whether a job with the given tag should be allowed to serve a <see cref="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)"/> request.
+            </summary>
+            <param name="jobTag">Tag of the candidate job.</param>
+            <returns>True if the job should be allowed to serve a request, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.AllowAllJobs">
+            <summary>
+            A filter that will allow pops from any jobs.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.AllowAllJobs.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.DelegateJobFilter">
+            <summary>
+            A job filter that wraps a managed delegate.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.DelegateJobFilter.Filter">
+            <summary>
+            Delegate to use as the filter.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.DelegateJobFilter.#ctor(System.Func{System.UInt64,System.Boolean})">
+            <summary>
+            Creates a job filter that wraps a delegate.
+            </summary>
+            <param name="filter">Delegate to use as the filter.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.DelegateJobFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.FunctionPointerJobFilter">
+            <summary>
+            A job filter that wraps a function pointer.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.Filter">
+            <summary>
+            Delegate to use as the filter.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.#ctor()">
+            <summary>
+            Creates a job filter that wraps a delegate.
+            </summary>
+            <param name="filter">Delegate to use as the filter.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.FunctionPointerJobFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.MinimumTagFilter">
+            <summary>
+            A job filter that requires the job tag to meet or exceed a threshold value.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.MinimumTagFilter.MinimumTagValue">
+            <summary>
+            Value that a job must match or exceed to be allowed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.MinimumTagFilter.#ctor(System.UInt64)">
+            <summary>
+            Creates a job filter that requires the job tag to meet or exceed a threshold value.
+            </summary>
+            <param name="minimumTagValue">Value that a job must match or exceed to be allowed.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.MinimumTagFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.EqualTagFilter">
+            <summary>
+            A job filter that requires the job tag to match a specific value.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.EqualTagFilter.RequiredTag">
+            <summary>
+            Tag value required to allow a job.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.EqualTagFilter.#ctor(System.UInt64)">
+            <summary>
+            Creates a job filter that requires the job tag to match a specific value.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.EqualTagFilter.AllowJob(System.UInt64)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Job.TryPop(BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task from the job.
+            </summary>
+            <param name="task">Task popped from the job, if any.</param>
+            <returns>True if a task was available to pop, false otherwise.</returns>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.PopTaskResult">
+            <summary>
+            Describes the result status of a pop attempt.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Success">
+            <summary>
+            A task was successfully popped.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Empty">
+            <summary>
+            The stack was empty, but may have more tasks in the future.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.PopTaskResult.Stop">
+            <summary>
+            The stack has been terminated and all threads seeking work should stop.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.Task">
+            <summary>
+            Description of a task to be submitted to a <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/>.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Function">
+            <summary>
+            Function to be executed by the task. Takes as arguments the <see cref="F:BepuUtilities.TaskScheduling.Task.Id"/>, <see cref="F:BepuUtilities.TaskScheduling.Task.Context"/> pointer, and executing worker index.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Context">
+            <summary>
+            Context to be passed into the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Continuation">
+            <summary>
+            Continuation to be notified after this task completes, if any.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.Task.Id">
+            <summary>
+            User-provided identifier of this task.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.#ctor(,System.Void*,System.Int64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Creates a new task.
+            </summary>
+            <param name="function">Function to be executed by the task. Takes as arguments the <see cref="F:BepuUtilities.TaskScheduling.Task.Id"/>, <see cref="F:BepuUtilities.TaskScheduling.Task.Context"/> pointer, executing worker index, and executing <see cref="T:BepuUtilities.IThreadDispatcher"/>.</param>
+            <param name="context">Context pointer to pass to the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.</param>
+            <param name="taskId">Id of this task to be passed into the <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/>.</param>
+            <param name="continuation">Continuation to notify after the completion of this task, if any.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.op_Implicit()~BepuUtilities.TaskScheduling.Task">
+            <summary>
+            Creates a task from a function.
+            </summary>
+            <param name="function">Function to turn into a task.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Task.Run(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Runs the task and, if necessary, notifies the associated continuation of its completion.
+            </summary>
+            <param name="workerIndex">Worker index to pass to the function.</param> 
+            <param name="dispatcher">Dispatcher running this task.</param>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.TaskContinuation">
+            <summary>
+            Stores data relevant to tracking task completion and reporting completion for a continuation.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskContinuation.OnCompleted">
+            <summary>
+            Task to run upon completion of the associated task.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskContinuation.RemainingTaskCounter">
+            <summary>
+            Number of tasks not yet reported as complete in the continuation.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.TaskScheduling.TaskStack">
+            <summary>
+            Manages a linked stack of tasks.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.TaskScheduling.TaskStack.head">
+            <summary>
+            Most recently pushed job on the stack. May be null if the stack is empty.
+            </summary>
+            <remarks>Pointers and generics don't play well, alas.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.#ctor(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher,System.Int32,System.Int32,System.Int32)">
+            <summary>
+            Constructs a new parallel task stack.
+            </summary>
+            <param name="pool">Buffer pool to allocate non-thread allocated resources from.</param>
+            <param name="dispatcher">Thread dispatcher to pull thread pools from for thread allocations.</param>
+            <param name="workerCount">Number of workers to allocate space for.</param>
+            <param name="initialWorkerJobCapacity">Initial number of jobs (groups of tasks submitted together) to allocate space for in each worker.</param>
+            <param name="continuationBlockCapacity">Number of slots to allocate in each block of continuations in each worker.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Reset(BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Returns the stack to a fresh state without reallocating.
+            </summary>
+            <param name="dispatcher">Dispatcher whose thread pools should be used to return any thread allocated resources.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Dispose(BepuUtilities.Memory.BufferPool,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Returns unmanaged resources held by the <see cref="T:BepuUtilities.TaskScheduling.TaskStack"/> to a pool.
+            </summary>
+            <param name="pool">Buffer pool to return resources to.</param>
+            <param name="dispatcher">Dispatcher whose thread pools should be used to return any thread allocated resources.</param>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.TaskStack.ApproximateTaskCount">
+            <summary>
+            Gets the approximate number of active tasks. This is not guaranteed to actually measure the true number of tasks at any one point in time.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.TaskScheduling.TaskStack.ApproximateContinuationCount">
+            <summary>
+            Gets the approximate number of active continuations. This is not guaranteed to actually measure the true number of continuations at any one point in time; it checks each worker in sequence, and the continuation counts could vary arbitrarily as the checks proceed.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.AllocateContinuation(System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Attempts to allocate a continuation for a set of tasks.
+            </summary>
+            <param name="taskCount">Number of tasks associated with the continuation.</param>
+            <param name="workerIndex">Worker index to allocate the continuation on.</param>
+            <param name="dispatcher">Dispatcher to use for any per-thread allocations if necessary.</param>
+            <param name="onCompleted">Function to execute upon completing all associated tasks, if any. Any task with a null <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/> will not be executed.</param>
+            <returns>Handle of the continuation.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPop``1(``0@,BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task.
+            </summary>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="task">Popped task, if any.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPop(BepuUtilities.TaskScheduling.Task@)">
+            <summary>
+            Attempts to pop a task.
+            </summary>
+            <param name="task">Popped task, if any.</param>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPopAndRun``1(``0@,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Attempts to pop a task and run it.
+            </summary>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="workerIndex">Index of the worker to pass into the task function.</param>
+            <param name="dispatcher">Thread dispatcher running this task stack.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.TryPopAndRun(System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Attempts to pop a task and run it.
+            </summary>
+            <param name="workerIndex">Index of the worker to pass into the task function.</param>
+            <param name="dispatcher">Thread dispatcher running this task stack.</param>
+            <returns>Result status of the pop attempt.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushUnsafely(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks onto the task stack. This function is not thread safe.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User-defined tag data for the submitted job.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushUnsafely(BepuUtilities.TaskScheduling.Task,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a task onto the task stack. This function is not thread safe.
+            </summary>
+            <param name="task">Task to push.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.Push(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks onto the task stack.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User-defined tag data for the submitted job.</param>
+            <returns>True if the push succeeded, false if it was contested.</returns>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.AllocateContinuationAndPush(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Pushes a set of tasks to the stack with a created continuation.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <param name="onComplete">Task to run upon completion of all the submitted tasks, if any.</param>
+            <returns>Handle of the continuation created for these tasks.</returns>
+            <remarks>Note that this will keep trying until task submission succeeds.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.WaitForCompletion``1(``0@,BepuUtilities.TaskScheduling.ContinuationHandle,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Waits for a continuation to be completed.
+            </summary>
+            <remarks>Instead of spinning the entire time, this may pop and execute pending tasks to fill the gap.</remarks>
+            <param name="filter">Filter to apply to jobs. Only allowed jobs can have tasks popped from them.</param>
+            <param name="continuation">Continuation to wait on.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the executing worker.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.WaitForCompletion(BepuUtilities.TaskScheduling.ContinuationHandle,System.Int32,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Waits for a continuation to be completed.
+            </summary>
+            <remarks>Instead of spinning the entire time, this may pop and execute pending tasks to fill the gap.</remarks>
+            <param name="continuation">Continuation to wait on.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the executing worker.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RunTasks``1(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,``0@,System.UInt64)">
+            <summary>
+            Pushes a set of tasks to the worker stack and returns when all tasks are complete.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="workerIndex">Index of the worker executing this function.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="filter">Filter applied to jobs considered for filling the calling thread's wait for other threads to complete.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+            <remarks>Note that this will keep working until all tasks are run. It may execute tasks unrelated to the requested tasks while waiting on other workers to complete constituent tasks.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RunTasks(System.Span{BepuUtilities.TaskScheduling.Task},System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Pushes a set of tasks to the worker stack and returns when all tasks are complete.
+            </summary>
+            <param name="tasks">Tasks composing the job. A continuation will be assigned internally; no continuation should be present on any of the provided tasks.</param>
+            <param name="workerIndex">Index of the worker executing this function.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>Note that this will keep working until all tasks are run. It may execute tasks unrelated to the requested tasks while waiting on other workers to complete constituent tasks.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.RequestStop">
+            <summary>
+            Requests that all workers stop. The next time a worker runs out of tasks to run, if it sees a stop command, it will be reported.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushForUnsafely(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Pushes a for loop onto the task stack. Does not take a lock.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each task execution.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <param name="continuation">Continuation associated with the loop tasks, if any.</param>
+            <remarks>This must not be used while other threads could be performing task pushes or pops that could affect the specified worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.PushFor(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64,BepuUtilities.TaskScheduling.ContinuationHandle)">
+            <summary>
+            Pushes a for loop onto the task stack.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each task execution.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param> 
+            <param name="continuation">Continuation associated with the loop tasks, if any.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <remarks>This function will not attempt to run any iterations of the loop itself.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.For``1(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,``0@,System.UInt64)">
+            <summary>
+            Submits a set of tasks representing a for loop over the given indices and returns when all loop iterations are complete.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each iteration of the loop.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="filter">Filter applied to jobs considered for filling the calling thread's wait for other threads to complete.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+            <typeparam name="TJobFilter">Type of the job filter used in the pop.</typeparam>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.TaskStack.For(,System.Void*,System.Int32,System.Int32,System.Int32,BepuUtilities.IThreadDispatcher,System.UInt64)">
+            <summary>
+            Submits a set of tasks representing a for loop over the given indices and returns when all loop iterations are complete.
+            </summary>
+            <param name="function">Function to execute on each iteration of the loop.</param>
+            <param name="context">Context pointer to pass into each iteration of the loop.</param>
+            <param name="inclusiveStartIndex">Inclusive start index of the loop range.</param>
+            <param name="iterationCount">Number of iterations to perform.</param>
+            <param name="workerIndex">Index of the worker stack to push the tasks onto.</param>
+            <param name="dispatcher">Thread dispatcher to allocate thread data from if necessary.</param>
+            <param name="tag">User tag associated with the job spanning the submitted tasks.</param>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Worker.AllocateJob(System.Span{BepuUtilities.TaskScheduling.Task},System.UInt64,BepuUtilities.IThreadDispatcher)">
+            <summary>
+            Pushes a set of tasks onto the stack.
+            </summary>
+            <param name="tasks">Tasks composing the job.</param>
+            <param name="tag">User tag associated with the job.</param>
+            <param name="dispatcher">Dispatcher used to pull thread allocations if necessary.</param>
+            <remarks>If the worker associated with this stack might be active, this function can only be called by the worker.</remarks>
+        </member>
+        <member name="M:BepuUtilities.TaskScheduling.Worker.AllocateContinuation(System.Int32,BepuUtilities.IThreadDispatcher,BepuUtilities.TaskScheduling.Task)">
+            <summary>
+            Allocates a continuation for a set of tasks.
+            </summary>
+            <param name="taskCount">Number of tasks associated with the continuation.</param>
+            <param name="dispatcher">Dispatcher from which to pull a buffer pool if needed for resizing.</param>
+            <param name="onCompleted">Function to execute upon completing all associated tasks, if any. Any task with a null <see cref="F:BepuUtilities.TaskScheduling.Task.Function"/> will not be executed.</param>
+            <returns>Handle of the continuation.</returns>
+        </member>
+        <member name="T:BepuUtilities.ThreadDispatcher">
+            <summary>
+            Provides a <see cref="T:BepuUtilities.IThreadDispatcher"/> implementation. Not reentrant.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.ThreadCount">
+            <summary>
+            Gets the number of threads to dispatch work on.
+            </summary>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.WorkerPools">
+            <inheritdoc/>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.UnmanagedContext">
+            <inheritdoc/>
+        </member>
+        <member name="P:BepuUtilities.ThreadDispatcher.ManagedContext">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Creates a new thread dispatcher with the given number of threads.
+            </summary>
+            <param name="threadCount">Number of threads to dispatch on each invocation.</param>
+            <param name="threadPoolBlockAllocationSize">Size of memory blocks to allocate for thread pools.</param>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.DispatchWorkers(,System.Int32,System.Void*,System.Object)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.DispatchWorkers(System.Action{System.Int32},System.Int32,System.Void*,System.Object)">
+            <inheritdoc/>
+        </member>
+        <member name="M:BepuUtilities.ThreadDispatcher.Dispose">
+            <summary>
+            Waits for all pending work to complete and then disposes all workers.
+            </summary>
+        </member>
+        <member name="T:BepuUtilities.Vector2Wide">
+            <summary>
+            Two dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector2Wide.X">
+            <summary>
+            First component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector2Wide.Y">
+            <summary>
+            Second component of the vector.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.Add(BepuUtilities.Vector2Wide@,BepuUtilities.Vector2Wide@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Vector2Wide,BepuUtilities.Vector2Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Vector2Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector2Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.ReadFirst(BepuUtilities.Vector2Wide@,BepuUtilities.Numerics.Vector2@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.ReadSlot(BepuUtilities.Vector2Wide@,System.Int32,BepuUtilities.Numerics.Vector2@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.WriteFirst(BepuUtilities.Numerics.Vector2@,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector2Wide.WriteSlot(BepuUtilities.Numerics.Vector2@,System.Int32,BepuUtilities.Vector2Wide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="T:BepuUtilities.Vector3Wide">
+            <summary>
+            Three dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.X">
+            <summary>
+            First component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.Y">
+            <summary>
+            Second component of the vector.
+            </summary>
+        </member>
+        <member name="F:BepuUtilities.Vector3Wide.Z">
+            <summary>
+            Third component of the vector.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.#ctor(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Creates a vector by populating each component with the given scalar.
+            </summary>
+            <param name="s">Scalar to copy into all lanes of the vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.#ctor(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Creates a vector by populating each component with the given scalar.
+            </summary>
+            <param name="s">Scalar to copy into all lanes of the vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Add(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Add(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <param name="result">Vector with components equal to the input vector added to the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Subtracts one vector from another.
+            </summary>
+            <param name="a">Vector to subtract from.</param>
+            <param name="b">Vector to subtract from the first vector.</param>
+            <param name="result">Vector with components equal the input scalar subtracted from the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of subtracting a scalar from every component of a vector.
+            </summary>
+            <param name="v">Vector to subtract from.</param>
+            <param name="s">Scalar to subtract from every component of the vector.</param>
+            <param name="result">Vector with components equal the input scalar subtracted from the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Subtraction(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Subtracts one vector from another.
+            </summary>
+            <param name="a">Vector to subtract from.</param>
+            <param name="b">Vector to subtract from the first vector.</param>
+            <returns>Vector with components equal the input scalar subtracted from the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Subtract(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Finds the result of subtracting the components of a vector from a scalar.
+            </summary>
+            <param name="v">Vector to subtract from the scalar.</param>
+            <param name="s">Scalar to subtract from.</param>
+            <param name="result">Vector with components equal the input vector subtracted from the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Subtraction(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of subtracting the components of a vector from a scalar.
+            </summary>
+            <param name="v">Vector to subtract from the scalar.</param>
+            <param name="s">Scalar to subtract from.</param>
+            <returns>Vector with components equal the input vector subtracted from the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Dot(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the inner product between two vectors.
+            </summary>
+            <param name="a">First vector to dot.</param>
+            <param name="b">Second vector to dot.</param>
+            <param name="result">Dot product of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Dot(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the inner product between two vectors.
+            </summary>
+            <param name="a">First vector to dot.</param>
+            <param name="b">Second vector to dot.</param>
+            <returns>Dot product of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component minimum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the scalar value and the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component minimum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <returns>Vector with components matching the smaller of the scalar value and the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Min(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <returns>Vector with components matching the smaller of the two input vectors.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component maximum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the scalar value and the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component maximum between a scalar value and the components of a vector.
+            </summary>
+            <param name="s">Scalar to compare to each vector component.</param>
+            <param name="v">Vector whose components will be compared.</param>
+            <returns>Vector with components matching the larger of the scalar value and the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Max(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <returns>Vector with components matching the larger of the two input vectors.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Scale(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <param name="result">Scaled result vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Division(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Divides each component of the vector by the scalar.
+            </summary>
+            <param name="vector">Vector to divide.</param>
+            <param name="scalar">Scalar to divide the vector by.</param>
+            <returns>Value of the vector divided by the scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Vector3Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <returns>Scaled result vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector3Wide)">
+            <summary>
+            Scales a vector by a scalar.
+            </summary>
+            <param name="vector">Vector to scale.</param>
+            <param name="scalar">Scalar to apply to the vector.</param>
+            <returns>Scaled result vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Abs(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the absolute value of a vector.
+            </summary>
+            <param name="vector">Vector to take the absolute value of.</param>
+            <param name="result">Absolute value of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Abs(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the absolute value of a vector.
+            </summary>
+            <param name="vector">Vector to take the absolute value of.</param>
+            <returns>Absolute value of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Negate(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Negates a vector.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <param name="result">Negated vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Negate(BepuUtilities.Vector3Wide@)">
+            <summary>
+            Negates a vector in place and returns a reference to it.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <returns>Reference to the input parameter, mutated.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_UnaryNegation(BepuUtilities.Vector3Wide)">
+            <summary>
+            Negates a vector.
+            </summary>
+            <param name="v">Vector to negate.</param>
+            <returns>Negated vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Reference to the vector to be conditionally negated.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Vector to be conditionally negated.</param>
+            <param name="negated">Conditionally negated result.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionallyNegate(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide)">
+            <summary>
+            Conditionally negates lanes of the vector.
+            </summary>
+            <param name="shouldNegate">Mask indicating which lanes should be negated.</param>
+            <param name="v">Vector to be conditionally negated.</param>
+            <returns>Conditionally negated vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.CrossWithoutOverlap(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the cross product between two vectors, assuming that the vector references are not aliased.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <param name="result">Result of the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Cross(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes the cross product between two vectors.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <param name="result">Result of the cross product.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Cross(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the cross product between two vectors.
+            </summary>
+            <param name="a">First vector to cross.</param>
+            <param name="b">Second vector to cross.</param>
+            <returns>Result of the cross product.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the squared length of a vector.
+            </summary>
+            <param name="v">Vector to compute the squared length of.</param>
+            <param name="lengthSquared">Squared length of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the length of a vector.
+            </summary>
+            <param name="v">Vector to compute the length of.</param>
+            <param name="length">Length of the input vector.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the squared length of a vector.
+            </summary>
+            <param name="v">Vector to compute the squared length of.</param>
+            <returns>Squared length of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the length of a vector.
+            </summary>
+            <param name="v">Vector to compute the length of.</param>
+            <returns>Length of the input vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.LengthSquared">
+            <summary>
+            Computes the squared length of the vector.
+            </summary>
+            <returns>Squared length of this vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Length">
+            <summary>
+            Computes the length of the vector.
+            </summary>
+            <returns>Length of this vector.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Distance(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <param name="distance">Distance between a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.DistanceSquared(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number}@)">
+            <summary>
+            Computes the squared distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <param name="distanceSquared">Squared distance between a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Distance(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <returns>Distance between a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.DistanceSquared(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes the squared distance between two vectors.
+            </summary>
+            <param name="a">First vector in the pair.</param>
+            <param name="b">Second vector in the pair.</param>
+            <returns>Squared distance between a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Normalize(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Computes a unit length vector pointing in the same direction as the input.
+            </summary>
+            <param name="v">Vector to normalize.</param>
+            <param name="result">Vector pointing in the same direction as the input, but with unit length.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Normalize(BepuUtilities.Vector3Wide)">
+            <summary>
+            Computes a unit length vector pointing in the same direction as the input.
+            </summary>
+            <param name="v">Vector to normalize.</param>
+            <returns>Vector pointing in the same direction as the input, but with unit length.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionalSelect(BepuUtilities.Numerics.Vector{System.Int32}@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Selects the left or right input for each lane depending on a mask.
+            </summary>
+            <param name="condition">Mask to use to decide between the left and right value for each lane..</param>
+            <param name="left">Value to choose if the condition mask is set.</param>
+            <param name="right">Value to choose if the condition mask is unset.</param>
+            <param name="result">Blended result.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ConditionalSelect(BepuUtilities.Numerics.Vector{System.Int32},BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Selects the left or right input for each lane depending on a mask.
+            </summary>
+            <param name="condition">Mask to use to decide between the left and right value for each lane..</param>
+            <param name="left">Value to choose if the condition mask is set.</param>
+            <param name="right">Value to choose if the condition mask is unset.</param>
+            <returns>Blended result.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Multiply(BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Multiplies the components of one vector with another.
+            </summary>
+            <param name="a">First vector to multiply.</param>
+            <param name="b">Second vector to multiply.</param>
+            <param name="result">Result of the multiplication.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.op_Multiply(BepuUtilities.Vector3Wide,BepuUtilities.Vector3Wide)">
+            <summary>
+            Multiplies the components of one vector with another.
+            </summary>
+            <param name="a">First vector to multiply.</param>
+            <param name="b">Second vector to multiply.</param>
+            <returns>Result of the multiplication.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ReadSlot(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.ReadFirst(BepuUtilities.Vector3Wide@,BepuUtilities.Numerics.Vector3@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.WriteFirst(BepuUtilities.Numerics.Vector3,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.WriteSlot(BepuUtilities.Numerics.Vector3,System.Int32,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Writes a value into a slot of the target bundle.
+            </summary>
+            <param name="source">Source of the value to write.</param>
+            <param name="slotIndex">Index of the slot to write into.</param>
+            <param name="target">Bundle to write the value into.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Broadcast(BepuUtilities.Numerics.Vector3,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Expands each scalar value to every slot of the bundle.
+            </summary>
+            <param name="source">Source value to write to every bundle slot.</param>
+            <param name="broadcasted">Bundle containing the source's components in every slot.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Broadcast(BepuUtilities.Numerics.Vector3)">
+            <summary>
+            Expands each scalar value to every slot of the bundle.
+            </summary>
+            <param name="source">Source value to write to every bundle slot.</param>
+            <returns>Bundle containing the source's components in every slot.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Rebroadcast(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Vector3Wide@)">
+            <summary>
+            Takes a slot from the source vector and broadcasts it into all slots of the target vector.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="broadcasted">Target vector to be filled with the selected data.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.Rebroadcast(BepuUtilities.Vector3Wide,System.Int32)">
+            <summary>
+            Takes a slot from the source vector and broadcasts it into all slots of the target vector.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="slotIndex">Slot in the source vectors to pull values from.</param>
+            <returns>Target vector to be filled with the selected data.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector3Wide.CopySlot(BepuUtilities.Vector3Wide@,System.Int32,BepuUtilities.Vector3Wide@,System.Int32)">
+            <summary>
+            Takes a slot from the source vector and places it into a slot of the target.
+            </summary>
+            <param name="source">Vector to pull values from.</param>
+            <param name="sourceSlotIndex">Slot in the source vectors to pull values from.</param>
+            <param name="target">Target vector whose slot will be filled with the selected data.</param>
+            <param name="targetSlotIndex">Slot in the target vectors to write values into.</param>
+        </member>
+        <member name="T:BepuUtilities.Vector4Wide">
+            <summary>
+            Four dimensional vector with <see cref="F:BepuUtilities.Numerics.Vector`1.Count"/> (with generic type argument of <see cref="T:BepuUtilities.Numerics.Number"/>) SIMD lanes.
+            </summary>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Add(BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <param name="result">Sum of a and b.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Add(BepuUtilities.Vector4Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector4Wide@)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <param name="result">Vector with components equal to the input vector added to the input scalar.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Vector4Wide,BepuUtilities.Vector4Wide)">
+            <summary>
+            Performs a componentwise add between two vectors.
+            </summary>
+            <param name="a">First vector to add.</param>
+            <param name="b">Second vector to add.</param>
+            <returns>Sum of a and b.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Vector4Wide,BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number})">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.op_Addition(BepuUtilities.Numerics.Vector{BepuUtilities.Numerics.Number},BepuUtilities.Vector4Wide)">
+            <summary>
+            Finds the result of adding a scalar to every component of a vector.
+            </summary>
+            <param name="v">Vector to add to.</param>
+            <param name="s">Scalar to add to every component of the vector.</param>
+            <returns>Vector with components equal to the input vector added to the input scalar.</returns>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Min(BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes the per-component minimum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the smaller of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.Max(BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Computes the per-component maximum of two vectors.
+            </summary>
+            <param name="a">First vector whose components will be compared.</param>
+            <param name="b">Second vector whose components will be compared.</param>
+            <param name="result">Vector with components matching the larger of the two input vectors.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.ReadSlot(BepuUtilities.Vector4Wide@,System.Int32,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="wide">Source of the lane.</param>
+            <param name="slotIndex">Index of the lane within the wide representation to read.</param>
+            <param name="narrow">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.ReadFirst(BepuUtilities.Vector4Wide@,BepuUtilities.Numerics.Vector4@)">
+            <summary>
+            Pulls one lane out of the wide representation.
+            </summary>
+            <param name="source">Source of the lane.</param>
+            <param name="target">Non-SIMD type to store the lane in.</param>
+        </member>
+        <member name="M:BepuUtilities.Vector4Wide.WriteFirst(BepuUtilities.Numerics.Vector4@,BepuUtilities.Vector4Wide@)">
+            <summary>
+            Gathers values from a vector and places them into the first indices of the target vector.
+            </summary>
+            <param name="source">Vector to copy values from.</param>
+            <param name="targetSlot">Wide vectorto place values into.</param>
+        </member>
+    </members>
+</doc>