mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 08:44:01 +00:00
Added some documentation to AxisAlignedBB
This commit is contained in:
parent
7e9b89e48a
commit
cc7ed7a28f
@ -60,6 +60,17 @@ class AxisAlignedBB{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new AxisAlignedBB extended by the specified X, Y and Z.
|
||||
* If each of X, Y and Z are positive, the relevant max bound will be increased. If negative, the relevant min
|
||||
* bound will be decreased.
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return AxisAlignedBB
|
||||
*/
|
||||
public function addCoord(float $x, float $y, float $z) : AxisAlignedBB{
|
||||
$minX = $this->minX;
|
||||
$minY = $this->minY;
|
||||
@ -89,10 +100,27 @@ class AxisAlignedBB{
|
||||
return new AxisAlignedBB($minX, $minY, $minZ, $maxX, $maxY, $maxZ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new AxisAlignedBB with bounds outset by the specified X, Y and Z.
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return AxisAlignedBB
|
||||
*/
|
||||
public function grow(float $x, float $y, float $z) : AxisAlignedBB{
|
||||
return new AxisAlignedBB($this->minX - $x, $this->minY - $y, $this->minZ - $z, $this->maxX + $x, $this->maxY + $y, $this->maxZ + $z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the same operation as grow() but operates on itself instead of returning a new object.
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function expand(float $x, float $y, float $z){
|
||||
$this->minX -= $x;
|
||||
$this->minY -= $y;
|
||||
@ -104,6 +132,15 @@ class AxisAlignedBB{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the same operation as getOffsetBoundingBox(), but operates on itself instead of returning a new object.
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function offset(float $x, float $y, float $z){
|
||||
$this->minX += $x;
|
||||
$this->minY += $y;
|
||||
@ -115,10 +152,28 @@ class AxisAlignedBB{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new AxisAlignedBB with bounds inset by the specified X, Y and Z.
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return AxisAlignedBB
|
||||
*/
|
||||
public function shrink(float $x, float $y, float $z) : AxisAlignedBB{
|
||||
return new AxisAlignedBB($this->minX + $x, $this->minY + $y, $this->minZ + $z, $this->maxX - $x, $this->maxY - $y, $this->maxZ - $z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the same operation as shrink(), but operates on itself instead of returning a new object.
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function contract(float $x, float $y, float $z){
|
||||
$this->minX += $x;
|
||||
$this->minY += $y;
|
||||
@ -130,6 +185,12 @@ class AxisAlignedBB{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the bounding box's bounds from another AxisAlignedBB, and returns itself
|
||||
*
|
||||
* @param AxisAlignedBB $bb
|
||||
* @return $this
|
||||
*/
|
||||
public function setBB(AxisAlignedBB $bb){
|
||||
$this->minX = $bb->minX;
|
||||
$this->minY = $bb->minY;
|
||||
@ -140,7 +201,16 @@ class AxisAlignedBB{
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getOffsetBoundingBox($x, $y, $z) : AxisAlignedBB{
|
||||
/**
|
||||
* Returns a new AxisAlignedBB shifted by the specified X, Y and Z
|
||||
*
|
||||
* @param float $x
|
||||
* @param float $y
|
||||
* @param float $z
|
||||
*
|
||||
* @return AxisAlignedBB
|
||||
*/
|
||||
public function getOffsetBoundingBox(float $x, float $y, float $z) : AxisAlignedBB{
|
||||
return new AxisAlignedBB($this->minX + $x, $this->minY + $y, $this->minZ + $z, $this->maxX + $x, $this->maxY + $y, $this->maxZ + $z);
|
||||
}
|
||||
|
||||
@ -213,6 +283,12 @@ class AxisAlignedBB{
|
||||
return $z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether any part of the specified AABB is inside (intersects with) this one.
|
||||
*
|
||||
* @param AxisAlignedBB $bb
|
||||
* @return bool
|
||||
*/
|
||||
public function intersectsWith(AxisAlignedBB $bb) : bool{
|
||||
if($bb->maxX > $this->minX and $bb->minX < $this->maxX){
|
||||
if($bb->maxY > $this->minY and $bb->minY < $this->maxY){
|
||||
@ -223,6 +299,12 @@ class AxisAlignedBB{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the specified vector is within the bounds of this AABB on all axes.
|
||||
*
|
||||
* @param Vector3 $vector
|
||||
* @return bool
|
||||
*/
|
||||
public function isVectorInside(Vector3 $vector) : bool{
|
||||
if($vector->x <= $this->minX or $vector->x >= $this->maxX){
|
||||
return false;
|
||||
@ -234,23 +316,49 @@ class AxisAlignedBB{
|
||||
return $vector->z > $this->minZ and $vector->z < $this->maxZ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the mean average of the AABB's X, Y and Z lengths.
|
||||
* @return float
|
||||
*/
|
||||
public function getAverageEdgeLength() : float{
|
||||
return ($this->maxX - $this->minX + $this->maxY - $this->minY + $this->maxZ - $this->minZ) / 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the specified vector is within the Y and Z bounds of this AABB.
|
||||
*
|
||||
* @param Vector3 $vector
|
||||
* @return bool
|
||||
*/
|
||||
public function isVectorInYZ(Vector3 $vector) : bool{
|
||||
return $vector->y >= $this->minY and $vector->y <= $this->maxY and $vector->z >= $this->minZ and $vector->z <= $this->maxZ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the specified vector is within the X and Z bounds of this AABB.
|
||||
*
|
||||
* @param Vector3 $vector
|
||||
* @return bool
|
||||
*/
|
||||
public function isVectorInXZ(Vector3 $vector) : bool{
|
||||
return $vector->x >= $this->minX and $vector->x <= $this->maxX and $vector->z >= $this->minZ and $vector->z <= $this->maxZ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the specified vector is within the X and Y bounds of this AABB.
|
||||
*
|
||||
* @param Vector3 $vector
|
||||
* @return bool
|
||||
*/
|
||||
public function isVectorInXY(Vector3 $vector) : bool{
|
||||
return $vector->x >= $this->minX and $vector->x <= $this->maxX and $vector->y >= $this->minY and $vector->y <= $this->maxY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs a ray-trace and calculates the point on the AABB's edge nearest the start position that the ray-trace
|
||||
* collided with. Returns a MovingObjectPosition with colliding vector closest to the start position.
|
||||
* Returns null if no colliding point was found.
|
||||
*
|
||||
* @param Vector3 $pos1
|
||||
* @param Vector3 $pos2
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user