Struct Box
- Namespace
- BepuPhysics.Collidables
- Assembly
- BepuPhysics.dll
Collision shape representing a solid cuboid.
public struct Box : IConvexShape, IShape
- Implements
- Inherited Members
Constructors
Box(float, float, float)
Creates a Box shape.
public Box(float width, float height, float length)
Parameters
width
floatWidth of the box along the local X axis.
height
floatHeight of the box along the local Y axis.
length
floatLength of the box along the local Z axis.
Fields
HalfHeight
Half of the box's height along its local Y axis.
public float HalfHeight
Field Value
HalfLength
Half of the box's length along its local Z axis.
public float HalfLength
Field Value
HalfWidth
Half of the box's width along its local X axis.
public float HalfWidth
Field Value
Id
Type id of box shapes.
public const int Id = 2
Field Value
Properties
Height
Gets or sets the height of the box along its local Y axis.
public float Height { get; set; }
Property Value
Length
Gets or sets the length of the box along its local Z axis.
public float Length { get; set; }
Property Value
TypeId
Unique type id for this shape type.
public static int TypeId { get; }
Property Value
Width
Gets or sets the width of the box along its local X axis.
public float Width { get; set; }
Property Value
Methods
ComputeAngularExpansionData(out float, out float)
Computes information about how the bounding box should be expanded in response to angular velocity.
public readonly void ComputeAngularExpansionData(out float maximumRadius, out float maximumAngularExpansion)
Parameters
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.
ComputeBounds(Quaternion, out Vector3, out Vector3)
Computes the bounding box of a shape given an orientation.
public readonly void ComputeBounds(Quaternion orientation, out Vector3 min, out Vector3 max)
Parameters
orientation
QuaternionOrientation of the shape to use when computing the bounding box.
min
Vector3Minimum corner of the bounding box.
max
Vector3Maximum corner of the bounding box.
ComputeInertia(float)
Computes the inertia for a body given a mass.
public readonly BodyInertia ComputeInertia(float mass)
Parameters
mass
floatMass to use to compute the body's inertia.
Returns
- BodyInertia
Inertia for the body.
Remarks
Note that the 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.
CreateShapeBatch(BufferPool, int, Shapes)
Creates a shape batch for this type of shape.
public static ShapeBatch CreateShapeBatch(BufferPool pool, int initialCapacity, Shapes shapeBatches)
Parameters
pool
BufferPoolBuffer pool used to create the batch.
initialCapacity
intInitial capacity to allocate within the batch.
shapeBatches
ShapesThe set of shapes to contain this batch.
Returns
- ShapeBatch
Shape batch for the shape type.
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.
RayTest(in RigidPose, Vector3, Vector3, out float, out Vector3)
Tests a ray against the shape.
public readonly bool RayTest(in RigidPose pose, Vector3 origin, Vector3 direction, out float t, out Vector3 normal)
Parameters
pose
RigidPosePose of the shape during the ray test.
origin
Vector3Origin of the ray to test against the shape relative to the shape.
direction
Vector3Direction of the ray to test against the shape.
t
floatDistance 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
Vector3Normal of the impact surface, if any.
Returns
- bool
True if the ray intersected the shape, false otherwise.