Axis-Aligned Bounding Box.
``````    [Serializable]
public struct AABB : IEquatable<AABB>
``````

AABB consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.

### Constructors

``````    public AABB(Vector3 position, Vector3 size)
``````

Optional constructor, accepts position and size.

``````    public AABB(Vector3 position, float width, float height, float depth)
``````

``````    public AABB(float x, float y, float z, Vector3 size)
``````

``````    public AABB(float x, float y, float z, float width, float height, float depth)
``````

``````    public AABB()
``````

### Properties

``````    public Vector3 End { get; set; }
``````

Ending corner.

``````    public Vector3 Position { get; set; }
``````

Beginning corner.

``````    public Vector3 Size { get; set; }
``````

Size from position to end.

### Methods

``````    public bool Encloses(AABB with)
``````

Returns `true` if this AABB completely encloses another one.

``````    public override bool Equals(object obj)
``````

``````    public bool Equals(AABB other)
``````

``````    public AABB Expand(Vector3 point)
``````

Returns this AABB expanded to include a given point.

``````    public float GetArea()
``````

Gets the area of the AABB.

``````    public Vector3 GetEndpoint(int idx)
``````

Gets the position of the 8 endpoints of the AABB in space.

``````    public override int GetHashCode()
``````

``````    public Vector3 GetLongestAxis()
``````

Returns the normalized longest axis of the AABB.

``````    public Vector3.Axis GetLongestAxisIndex()
``````

Returns the index of the longest axis of the AABB (according to Vector3::AXIS* enum).

``````    public float GetLongestAxisSize()
``````

Returns the scalar length of the longest axis of the AABB.

``````    public Vector3 GetShortestAxis()
``````

Returns the normalized shortest axis of the AABB.

``````    public Vector3.Axis GetShortestAxisIndex()
``````

Returns the index of the shortest axis of the AABB (according to Vector3::AXIS* enum).

``````    public float GetShortestAxisSize()
``````

Returns the scalar length of the shortest axis of the AABB.

``````    public Vector3 GetSupport(Vector3 dir)
``````

Returns the support point in a given direction. This is useful for collision detection algorithms.

``````    public AABB Grow(float by)
``````

Returns a copy of the AABB grown a given amount of units towards all the sides.

``````    public bool HasNoArea()
``````

Returns `true` if the AABB is flat or empty.

``````    public bool HasNoSurface()
``````

Returns `true` if the AABB is empty.

``````    public bool HasPoint(Vector3 point)
``````

Returns `true` if the AABB contains a point.

``````    public AABB Intersection(AABB with)
``````

Returns the intersection between two AABB. An empty AABB (size 0,0,0) is returned on failure.

``````    public bool Intersects(AABB with)
``````

Returns `true` if the AABB overlaps with another.

``````    public bool IntersectsPlane(Plane plane)
``````

Returns `true` if the AABB is on both sides of a plane.

``````    public bool IntersectsSegment(Vector3 from, Vector3 to)
``````

Returns `true` if the AABB intersects the line segment between `from` and `to`.

``````    public AABB Merge(AABB with)
``````

Returns a larger AABB that contains this AABB and `with`.

``````    public override string ToString()
``````

``````    public string ToString(string format)
``````

### Operators

``````    public static bool operator ==(AABB left, AABB right)
``````

``````    public static bool operator !=(AABB left, AABB right)
``````
Tags: