cube

package
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2022 License: MIT Imports: 3 Imported by: 125

Documentation

Overview

Package cube provides types and functions to handle positions and rotations of voxel-based objects in a 3D world.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

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.

const (
	// Y represents the vertical Y axis.
	Y Axis = iota
	// Z represents the horizontal Z axis.
	Z
	// X represents the horizontal X axis.
	X
)

func Axes

func Axes() []Axis

Axes return all possible axes. (x, y, z)

func (Axis) RotateLeft added in v0.2.0

func (a Axis) RotateLeft() Axis

RotateLeft rotates an Axis from X to Z or from Z to X.

func (Axis) RotateRight added in v0.2.0

func (a Axis) RotateRight() Axis

RotateRight rotates an Axis from X to Z or from Z to X.

func (Axis) String

func (a Axis) String() string

String converts an Axis into either x, y or z, depending on which axis it is.

type Direction

type Direction int

Direction represents a direction towards one of the horizontal axes of the world.

const (
	// North represents the north direction.
	North Direction = iota
	// South represents the south direction.
	South
	// West represents the west direction.
	West
	// East represents the east direction.
	East
)

func Directions

func Directions() []Direction

Directions returns a list of all directions, going from North to West.

func (Direction) Face

func (d Direction) Face() Face

Face converts the direction to a Face and returns it.

func (Direction) Opposite

func (d Direction) Opposite() Direction

Opposite returns Direction opposite to the current one.

func (Direction) RotateLeft added in v0.2.0

func (d Direction) RotateLeft() Direction

RotateLeft rotates the direction 90 degrees to the left horizontally and returns the new direction.

func (Direction) RotateRight added in v0.2.0

func (d Direction) RotateRight() Direction

RotateRight rotates the direction 90 degrees to the right horizontally and returns the new direction.

func (Direction) String

func (d Direction) String() string

String returns the Direction as a string.

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 added in v0.2.0

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

func (f Face) Axis() 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

func (f Face) Direction() Direction

Direction converts the Face to a Direction and returns it, assuming the Face is horizontal and not FaceUp or FaceDown.

func (Face) Opposite

func (f Face) Opposite() Face

Opposite returns the opposite face. FaceDown will return up, north will return south and west will return east, and vice versa.

func (Face) RotateLeft added in v0.2.0

func (f Face) RotateLeft() Face

RotateLeft rotates the face 90 degrees to the left horizontally and returns the new face.

func (Face) RotateRight added in v0.2.0

func (f Face) RotateRight() Face

RotateRight rotates the face 90 degrees to the right horizontally and returns the new face.

func (Face) String

func (f Face) String() string

String returns the Face as a string.

type Orientation added in v0.2.0

type Orientation int

Orientation represents the orientation of a sign

func OrientationFromYaw added in v0.2.0

func OrientationFromYaw(yaw float64) Orientation

OrientationFromYaw returns an Orientation value that (roughly) matches the yaw passed.

func (Orientation) Opposite added in v0.2.0

func (o Orientation) Opposite() Orientation

Opposite returns the opposite orientation value of the Orientation.

func (Orientation) RotateLeft added in v0.2.0

func (o Orientation) RotateLeft() Orientation

RotateLeft rotates the orientation left by 90 degrees and returns it.

func (Orientation) RotateRight added in v0.2.0

func (o Orientation) RotateRight() Orientation

RotateRight rotates the orientation right by 90 degrees and returns it.

func (Orientation) Yaw added in v0.2.0

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

func PosFromVec3(vec3 mgl64.Vec3) Pos

PosFromVec3 returns a block position by a Vec3, rounding the values down adequately.

func (Pos) Add

func (p Pos) Add(pos Pos) Pos

Add adds two block positions together and returns a new one with the combined values.

func (Pos) Face

func (p Pos) Face(other 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

func (p Pos) Neighbours(f func(neighbour Pos), r Range)

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

func (p Pos) OutOfBounds(r Range) bool

OutOfBounds checks if the Y value is either bigger than r[1] or smaller than r[0].

func (Pos) Side

func (p Pos) Side(face Face) Pos

Side returns the position on the side of this block position, at a specific face.

func (Pos) String added in v0.4.1

func (p Pos) String() string

String converts the Pos to a string in the format (1,2,3) and returns it.

func (Pos) Subtract

func (p Pos) Subtract(pos Pos) Pos

Subtract subtracts two block positions together and returns a new one with the combined values.

func (Pos) Vec3

func (p Pos) Vec3() mgl64.Vec3

Vec3 returns a vec3 holding the same coordinates as the block position.

func (Pos) Vec3Centre

func (p Pos) Vec3Centre() mgl64.Vec3

Vec3Centre returns a Vec3 holding the coordinates of the block position with 0.5 added on all axes.

func (Pos) Vec3Middle

func (p Pos) Vec3Middle() mgl64.Vec3

Vec3Middle returns a Vec3 holding the coordinates of the block position with 0.5 added on both horizontal axes.

func (Pos) X

func (p Pos) X() int

X returns the X coordinate of the block position.

func (Pos) Y

func (p Pos) Y() int

Y returns the Y coordinate of the block position.

func (Pos) Z

func (p Pos) Z() int

Z returns the Z coordinate of the block position.

type Range added in v0.5.0

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 added in v0.5.0

func (r Range) Height() int

Height returns the total height of the Range, the difference between Max and Min.

func (Range) Max added in v0.5.0

func (r Range) Max() int

Max returns the maximum Y value of a Range. It is equivalent to Range[1].

func (Range) Min added in v0.5.0

func (r Range) Min() int

Min returns the minimum Y value of a Range. It is equivalent to Range[0].

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL