0.3.0
This is a feature release, featuring significant API changes compared to 0.2.x.
Changes since 0.2.x
New features
- Added
Facing
class, which allows using and manipulating 3DFacing
values.Vector3::SIDE_*
constants are removed and replaced withFacing::*
constants.Vector3::getOppositeSide()
is replaced byFacing::opposite()
.- Additional utilities like
Facing::axis()
,Facing::isPositive()
,Facing::rotate()
etc are provided.
- Added
Axis
class.
Vector3
- Removed the following API methods:
getOppositeSide()
: useFacing::opposite()
insteadsetComponents()
: mutatingVector3
is now discouraged, and in the futureVector3
will become immutable.
Vector3::SIDE_*
constants have been removed (useFacing
instead).- Added the following static API methods:
maxComponents()
: returns aVector3
with the highest x, y and z values of all the vectors given.minComponents()
: returns aVector3
with the lowest x, y and z values of all the vectors given.sum()
: returns aVector3
with x, y and z equalling the sums of the x, y and z values of the given vectors respectively.
- Added the following dynamic API methods:
- Added
Vector3->sides()
, which returns aGenerator<Facing, Vector3>
for all axis-aligned sides of the vector. - Added
Vector3->sidesArray()
, which returnsarray<Facing, Vector3>
for all axis-aligned sides of the vector. - Added
Vector3->sidesAroundAxis()
, which returnsGenerator<Facing, Vector3>
for axis-aligned sides of the vector not on the given axis. - Added
Vector3->withComponents()
, which allows easily creating a copy of aVector3
while replacing one or more components of it.
- Added
Vector3->add()
is split into two functions:Vector3->add()
now requiresfloat, float, float
and has no optional parameters.Vector3->addVector()
acceptsVector3
, replacing the overloaded functionality ofVector3->add()
.
Vector3->subtract()
is split into two functions:Vector3->subtract()
now requiresfloat, float, float
and has no optional parameters.Vector3->subtractVector()
acceptsVector3
, replacing the overloaded functionality ofVector3->subtract()
.
AxisAlignedBB
AxisAlignedBB->__construct()
now throwsInvalidArgumentException
if any of themin
components are larger than their correspondingmax
components.- Removed the following API methods:
setBounds()
: modifyingAxisAlignedBB
is now discouraged andAxisAlignedBB
will become immutable in the futuresetBB()
- Added the following dynamic API methods:
extend()
: adds a length of distance to the given face of the bounding boxextendedCopy()
trim()
: removes a length of distance from the given face of the bounding boxtrimmedCopy()
stretch()
: adds a length of distance to both sides of the bounding box on the given axisstretchedCopy()
squash()
: removes a length of distance from both sides of the bounding box on the given axissquashedCopy()
getXLength()
: returns the difference betweenminX
andmaxX
getYLength()
: returns the difference betweenminY
andmaxY
getZLength()
: returns the difference betweenminZ
andmaxZ
isCube()
: returns whether the bounding box's edges are all of approximately equal lengthgetVolume()
: returns the amount of space inside the bounding box in cubic units
- Added the following static API methods:
one()
: returns a newAxisAlignedBB
with min bounds0,0,0
and max bounds1,1,1