Typehinted AxisAlignedBB

This commit is contained in:
Dylan K. Taylor 2017-07-15 18:43:10 +01:00
parent 57e7c3d91f
commit 3150c50cac

View File

@ -27,14 +27,20 @@ use pocketmine\level\MovingObjectPosition;
class AxisAlignedBB{ class AxisAlignedBB{
/** @var float */
public $minX; public $minX;
/** @var float */
public $minY; public $minY;
/** @var float */
public $minZ; public $minZ;
/** @var float */
public $maxX; public $maxX;
/** @var float */
public $maxY; public $maxY;
/** @var float */
public $maxZ; public $maxZ;
public function __construct($minX, $minY, $minZ, $maxX, $maxY, $maxZ){ public function __construct(float $minX, float $minY, float $minZ, float $maxX, float $maxY, float $maxZ){
$this->minX = $minX; $this->minX = $minX;
$this->minY = $minY; $this->minY = $minY;
$this->minZ = $minZ; $this->minZ = $minZ;
@ -43,7 +49,7 @@ class AxisAlignedBB{
$this->maxZ = $maxZ; $this->maxZ = $maxZ;
} }
public function setBounds($minX, $minY, $minZ, $maxX, $maxY, $maxZ){ public function setBounds(float $minX, float $minY, float $minZ, float $maxX, float $maxY, float $maxZ){
$this->minX = $minX; $this->minX = $minX;
$this->minY = $minY; $this->minY = $minY;
$this->minZ = $minZ; $this->minZ = $minZ;
@ -54,7 +60,7 @@ class AxisAlignedBB{
return $this; return $this;
} }
public function addCoord($x, $y, $z) : AxisAlignedBB{ public function addCoord(float $x, float $y, float $z) : AxisAlignedBB{
$minX = $this->minX; $minX = $this->minX;
$minY = $this->minY; $minY = $this->minY;
$minZ = $this->minZ; $minZ = $this->minZ;
@ -83,11 +89,11 @@ class AxisAlignedBB{
return new AxisAlignedBB($minX, $minY, $minZ, $maxX, $maxY, $maxZ); return new AxisAlignedBB($minX, $minY, $minZ, $maxX, $maxY, $maxZ);
} }
public function grow($x, $y, $z) : 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); return new AxisAlignedBB($this->minX - $x, $this->minY - $y, $this->minZ - $z, $this->maxX + $x, $this->maxY + $y, $this->maxZ + $z);
} }
public function expand($x, $y, $z){ public function expand(float $x, float $y, float $z){
$this->minX -= $x; $this->minX -= $x;
$this->minY -= $y; $this->minY -= $y;
$this->minZ -= $z; $this->minZ -= $z;
@ -98,7 +104,7 @@ class AxisAlignedBB{
return $this; return $this;
} }
public function offset($x, $y, $z){ public function offset(float $x, float $y, float $z){
$this->minX += $x; $this->minX += $x;
$this->minY += $y; $this->minY += $y;
$this->minZ += $z; $this->minZ += $z;
@ -109,11 +115,11 @@ class AxisAlignedBB{
return $this; return $this;
} }
public function shrink($x, $y, $z) : 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); return new AxisAlignedBB($this->minX + $x, $this->minY + $y, $this->minZ + $z, $this->maxX - $x, $this->maxY - $y, $this->maxZ - $z);
} }
public function contract($x, $y, $z){ public function contract(float $x, float $y, float $z){
$this->minX += $x; $this->minX += $x;
$this->minY += $y; $this->minY += $y;
$this->minZ += $z; $this->minZ += $z;
@ -138,7 +144,7 @@ class AxisAlignedBB{
return new AxisAlignedBB($this->minX + $x, $this->minY + $y, $this->minZ + $z, $this->maxX + $x, $this->maxY + $y, $this->maxZ + $z); return new AxisAlignedBB($this->minX + $x, $this->minY + $y, $this->minZ + $z, $this->maxX + $x, $this->maxY + $y, $this->maxZ + $z);
} }
public function calculateXOffset(AxisAlignedBB $bb, $x){ public function calculateXOffset(AxisAlignedBB $bb, float $x) : float{
if($bb->maxY <= $this->minY or $bb->minY >= $this->maxY){ if($bb->maxY <= $this->minY or $bb->minY >= $this->maxY){
return $x; return $x;
} }
@ -161,7 +167,7 @@ class AxisAlignedBB{
return $x; return $x;
} }
public function calculateYOffset(AxisAlignedBB $bb, $y){ public function calculateYOffset(AxisAlignedBB $bb, float $y) : float{
if($bb->maxX <= $this->minX or $bb->minX >= $this->maxX){ if($bb->maxX <= $this->minX or $bb->minX >= $this->maxX){
return $y; return $y;
} }
@ -184,7 +190,7 @@ class AxisAlignedBB{
return $y; return $y;
} }
public function calculateZOffset(AxisAlignedBB $bb, $z){ public function calculateZOffset(AxisAlignedBB $bb, float $z) : float{
if($bb->maxX <= $this->minX or $bb->minX >= $this->maxX){ if($bb->maxX <= $this->minX or $bb->minX >= $this->maxX){
return $z; return $z;
} }
@ -228,7 +234,7 @@ class AxisAlignedBB{
return $vector->z > $this->minZ and $vector->z < $this->maxZ; return $vector->z > $this->minZ and $vector->z < $this->maxZ;
} }
public function getAverageEdgeLength(){ public function getAverageEdgeLength() : float{
return ($this->maxX - $this->minX + $this->maxY - $this->minY + $this->maxZ - $this->minZ) / 3; return ($this->maxX - $this->minX + $this->maxY - $this->minY + $this->maxZ - $this->minZ) / 3;
} }