Struct CylinderWide
- Namespace
- BepuPhysics.Collidables
- Assembly
- BepuPhysics.dll
public struct CylinderWide : IShapeWide<Cylinder>
- Implements
- Inherited Members
Fields
HalfLength
public Vector<float> HalfLength
Field Value
Radius
public Vector<float> Radius
Field Value
Properties
AllowOffsetMemoryAccess
Gets whether this type supports accessing its memory by lane offsets. If false, WriteSlot must be used instead of WriteFirst.
public bool AllowOffsetMemoryAccess { get; }
Property Value
InternalAllocationSize
Gets the number of bytes required for allocations within the wide shape.
public int InternalAllocationSize { get; }
Property Value
MinimumWideRayCount
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.
public static int MinimumWideRayCount { get; }
Property Value
Methods
Broadcast(in Cylinder)
Broadcasts a scalar shape into a bundle containing the same shape in every lane.
public void Broadcast(in Cylinder shape)
Parameters
shape
CylinderScalar shape to broadcast.
GetBounds(ref QuaternionWide, int, out Vector<float>, out Vector<float>, out Vector3Wide, out Vector3Wide)
Computes the bounds of all shapes in the bundle.
public void GetBounds(ref QuaternionWide orientations, int countInBundle, out Vector<float> maximumRadius, out Vector<float> maximumAngularExpansion, out Vector3Wide min, out Vector3Wide max)
Parameters
orientations
QuaternionWideOrientations of the shapes in the bundle.
countInBundle
intNumber of lanes filled in the bundle.
maximumRadius
Vector<float>Computed maximum radius of the shapes in the bundle.
maximumAngularExpansion
Vector<float>Computed maximum bounds expansion that can be caused by angular motion.
min
Vector3WideMinimum bounds of the shapes.
max
Vector3WideMaximum bounds of the shapes.
Initialize(in Buffer<byte>)
For types with a nonzero internal allocation size, provides memory to the shape for internal allocations. Memory should be assumed to be stack allocated.
public void Initialize(in Buffer<byte> memory)
Parameters
memory
Buffer<byte>Memory to use for internal allocations in the wide shape.
RayTest(ref RigidPoseWide, ref RayWide, out Vector<int>, out Vector<float>, out Vector3Wide)
Tests a ray against the shape.
public void RayTest(ref RigidPoseWide pose, ref RayWide ray, out Vector<int> intersected, out Vector<float> t, out Vector3Wide normal)
Parameters
pose
RigidPoseWideray
RayWideintersected
Vector<int>Mask representing hit state in each lane. -1 means the ray in that lane hit, 0 means a miss.
t
Vector<float>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.
normal
Vector3WideNormal of the impact surface, if any.
WriteFirst(in Cylinder)
Places the specified AOS-formatted shape into the first lane of the wide 'this' reference.
public void WriteFirst(in Cylinder source)
Parameters
source
CylinderAOS-formatted shape to gather from.
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.
WriteSlot(int, in Cylinder)
Places the specified AOS-formatted shape into the selected slot of the wide 'this' reference.
public void WriteSlot(int index, in Cylinder source)