Documentation
¶
Overview ¶
Package cube provides types and functions to handle positions and rotations of voxel-based objects in a 3D world.
Index ¶
- func AnyIntersections(boxes []BBox, search BBox) bool
- type Axis
- type BBox
- func (box BBox) Extend(vec mgl64.Vec3) BBox
- func (box BBox) ExtendTowards(f Face, x float64) BBox
- func (box BBox) Grow(x float64) BBox
- func (box BBox) GrowVec3(vec mgl64.Vec3) BBox
- func (box BBox) Height() float64
- func (box BBox) IntersectsWith(other BBox) bool
- func (box BBox) Length() float64
- func (box BBox) Max() mgl64.Vec3
- func (box BBox) Min() mgl64.Vec3
- func (box BBox) Stretch(a Axis, x float64) BBox
- func (box BBox) Translate(vec mgl64.Vec3) BBox
- func (box BBox) TranslateTowards(f Face, x float64) BBox
- func (box BBox) Vec3Within(vec mgl64.Vec3) bool
- func (box BBox) Vec3WithinXY(vec mgl64.Vec3) bool
- func (box BBox) Vec3WithinXZ(vec mgl64.Vec3) bool
- func (box BBox) Vec3WithinYZ(vec mgl64.Vec3) bool
- func (box BBox) Width() float64
- func (box BBox) XOffset(nearby BBox, deltaX float64) float64
- func (box BBox) YOffset(nearby BBox, deltaY float64) float64
- func (box BBox) ZOffset(nearby BBox, deltaZ float64) float64
- type Direction
- type Face
- type Orientation
- type Pos
- func (p Pos) Add(pos Pos) Pos
- func (p Pos) Face(other Pos) Face
- func (p Pos) Neighbours(f func(neighbour Pos), r Range)
- func (p Pos) OutOfBounds(r Range) bool
- func (p Pos) Side(face Face) Pos
- func (p Pos) String() string
- func (p Pos) Sub(pos Pos) Pos
- func (p Pos) Vec3() mgl64.Vec3
- func (p Pos) Vec3Centre() mgl64.Vec3
- func (p Pos) Vec3Middle() mgl64.Vec3
- func (p Pos) X() int
- func (p Pos) Y() int
- func (p Pos) Z() int
- type Range
- type Rotation
- func (r Rotation) Add(r2 Rotation) Rotation
- func (r Rotation) Direction() Direction
- func (r Rotation) Elem() (yaw, pitch float64)
- func (r Rotation) Opposite() Rotation
- func (r Rotation) Orientation() Orientation
- func (r Rotation) Pitch() float64
- func (r Rotation) Vec3() mgl64.Vec3
- func (r Rotation) Yaw() float64
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AnyIntersections ¶
AnyIntersections checks if any of boxes1 have intersections with any of boxes2 and returns true if this happens to be the case.
Types ¶
type Axis ¶
type Axis int
Axis represents the axis that a block may be directed in. Most blocks do not have an axis, but blocks such as logs or pillars do.
func (Axis) RotateLeft ¶
RotateLeft rotates an Axis from X to Z or from Z to X.
func (Axis) RotateRight ¶
RotateRight rotates an Axis from X to Z or from Z to X.
type BBox ¶
type BBox struct {
// contains filtered or unexported fields
}
BBox represents an Axis Aligned Bounding Box in a 3D space. It is defined as two Vec3s, of which one is the minimum and one is the maximum.
func Box ¶
Box creates a new axis aligned bounding box with the minimum and maximum coordinates provided. The returned box has minimum and maximum coordinates swapped if necessary so that it is well-formed.
func (BBox) Extend ¶
Extend expands the BBox on all axes as represented by the Vec3 passed. Negative coordinates result in an expansion towards the negative axis, and vice versa for positive coordinates.
func (BBox) ExtendTowards ¶
ExtendTowards extends the bounding box by x in a given direction.
func (BBox) Grow ¶
Grow grows the bounding box in all directions by x and returns the new bounding box.
func (BBox) GrowVec3 ¶
GrowVec3 grows the BBox on all axes as represented by the Vec3 passed. The vec values are subtracted from the minimum values of the BBox and added to the maximum values of the BBox.
func (BBox) IntersectsWith ¶
IntersectsWith checks if the BBox intersects with another BBox, returning true if this is the case.
func (BBox) Translate ¶
Translate moves the entire BBox with the Vec3 given. The (minimum and maximum) x, y and z coordinates are moved by those in the Vec3 passed.
func (BBox) TranslateTowards ¶
TranslateTowards moves the entire AABB by x in the direction of a Face passed.
func (BBox) Vec3Within ¶
Vec3Within checks if the BBox has a Vec3 within it, returning true if it does.
func (BBox) Vec3WithinXY ¶
Vec3WithinXY checks if the BBox has a Vec3 within its X and Y bounds, returning true if it does.
func (BBox) Vec3WithinXZ ¶
Vec3WithinXZ checks if the BBox has a Vec3 within its X and Z bounds, returning true if it does.
func (BBox) Vec3WithinYZ ¶
Vec3WithinYZ checks if the BBox has a Vec3 within its Y and Z bounds, returning true if it does.
func (BBox) XOffset ¶
XOffset calculates the offset on the X axis between two bounding boxes, returning a delta always smaller than or equal to deltaX if deltaX is bigger than 0, or always bigger than or equal to deltaX if it is smaller than 0.
func (BBox) YOffset ¶
YOffset calculates the offset on the Y axis between two bounding boxes, returning a delta always smaller than or equal to deltaY if deltaY is bigger than 0, or always bigger than or equal to deltaY if it is smaller than 0.
type Direction ¶
type Direction int
Direction represents a direction towards one of the horizontal axes of the world.
const ( // North represents the north direction, towards the negative Z. North Direction = iota // South represents the south direction, towards the positive Z. South // West represents the west direction, towards the negative X. West // East represents the east direction, towards the positive X. East )
func Directions ¶
func Directions() []Direction
Directions returns a list of all directions, going from North to West.
func (Direction) RotateLeft ¶
RotateLeft rotates the direction 90 degrees to the left horizontally and returns the new direction.
func (Direction) RotateRight ¶
RotateRight rotates the direction 90 degrees to the right horizontally and returns the new direction.
type Face ¶
type Face int
Face represents the face of a block or entity.
const ( // FaceDown represents the bottom face of a block. FaceDown Face = iota // FaceUp represents the top face of a block. FaceUp // FaceNorth represents the north face of a block. FaceNorth // FaceSouth represents the south face of a block. FaceSouth // FaceWest represents the west face of the block. FaceWest // FaceEast represents the east face of the block. FaceEast )
func Faces ¶
func Faces() []Face
Faces returns a list of all faces, starting with down, then up, then north to west.
func HorizontalFaces ¶
func HorizontalFaces() []Face
HorizontalFaces returns a list of all horizontal faces, from north to west.
func (Face) Axis ¶
Axis returns the axis the face is facing. FaceEast and west correspond to the x-axis, north and south to the z axis and up and down to the y-axis.
func (Face) Direction ¶
Direction converts the Face to a Direction and returns it, assuming the Face is horizontal and not FaceUp or FaceDown.
func (Face) Opposite ¶
Opposite returns the opposite face. FaceDown will return up, north will return south and west will return east, and vice versa.
func (Face) RotateLeft ¶
RotateLeft rotates the face 90 degrees to the left horizontally and returns the new face.
func (Face) RotateRight ¶
RotateRight rotates the face 90 degrees to the right horizontally and returns the new face.
type Orientation ¶
type Orientation int
Orientation represents the orientation of a sign
func OrientationFromYaw ¶
func OrientationFromYaw(yaw float64) Orientation
OrientationFromYaw returns an Orientation value that (roughly) matches the yaw passed.
func (Orientation) Opposite ¶
func (o Orientation) Opposite() Orientation
Opposite returns the opposite orientation value of the Orientation.
func (Orientation) RotateLeft ¶
func (o Orientation) RotateLeft() Orientation
RotateLeft rotates the orientation left by 90 degrees and returns it.
func (Orientation) RotateRight ¶
func (o Orientation) RotateRight() Orientation
RotateRight rotates the orientation right by 90 degrees and returns it.
func (Orientation) Yaw ¶
func (o Orientation) Yaw() float64
Yaw returns the yaw value that matches the orientation.
type Pos ¶
type Pos [3]int
Pos holds the position of a block. The position is represented of an array with an x, y and z value, where the y value is positive.
func PosFromVec3 ¶
PosFromVec3 returns a block position by a Vec3, rounding the values down adequately.
func (Pos) Add ¶
Add adds two block positions together and returns a new one with the combined values.
func (Pos) Face ¶
Face returns the face that the other Pos was on compared to the current Pos. The other Pos is assumed to be a direct neighbour of the current Pos.
func (Pos) Neighbours ¶
Neighbours calls the function passed for each of the block position's neighbours. If the Y value is out of bounds, the function will not be called for that position.
func (Pos) OutOfBounds ¶
OutOfBounds checks if the Y value is either bigger than r[1] or smaller than r[0].
func (Pos) Vec3Centre ¶
Vec3Centre returns a Vec3 holding the coordinates of the block position with 0.5 added on all axes.
func (Pos) Vec3Middle ¶
Vec3Middle returns a Vec3 holding the coordinates of the block position with 0.5 added on both horizontal axes.
type Range ¶
type Range [2]int
Range represents the height range of a Dimension in blocks. The first value of the Range holds the minimum Y value, the second value holds the maximum Y value.
func (Range) Height ¶
Height returns the total height of the Range, the difference between Max and Min.
type Rotation ¶
type Rotation [2]float64
Rotation describes the rotation of an object in the world. It holds a yaw (r[0]) and pitch value (r[1]). Yaw is in the range (-180, 180) while pitch is in the range (-90, 90). A positive pitch implies an entity is looking downwards, while a negative pitch implies it is looking upwards.
func (Rotation) Add ¶
Add adds the values of two Rotations element-wise and returns a new Rotation. If the yaw or pitch would otherwise exceed their respective range as described, they are 'overflown' to the other end of the allowed range.
func (Rotation) Direction ¶
Direction returns the horizontal Direction that r points towards based on the yaw of r.
func (Rotation) Opposite ¶
Opposite returns the Rotation opposite r, so that r.Vec3().Add(r.Opposite().Vec3()).Len() is equal to 0.
func (Rotation) Orientation ¶
func (r Rotation) Orientation() Orientation
Orientation returns an Orientation value that most closely matches the yaw of r.