本文整理汇总了PHP中pocketmine\utils\Random::nextInt方法的典型用法代码示例。如果您正苦于以下问题:PHP Random::nextInt方法的具体用法?PHP Random::nextInt怎么用?PHP Random::nextInt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\utils\Random
的用法示例。
在下文中一共展示了Random::nextInt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: generateCaveBranch
private function generateCaveBranch(ChunkManager $level, Vector3 $chunk, Vector3 $target, $horizontalScale, $verticalScale, $horizontalAngle, $verticalAngle, int $startingNode, int $nodeAmount, Random $random)
{
$middle = new Vector3($chunk->getX() + 8, 0, $chunk->getZ() + 8);
$horizontalOffset = 0;
$verticalOffset = 0;
if ($nodeAmount <= 0) {
$size = 7 * 16;
$nodeAmount = $size - $random->nextBoundedInt($size / 4);
}
$intersectionMode = $random->nextBoundedInt($nodeAmount / 2) + $nodeAmount / 4;
$extraVerticalScale = $random->nextBoundedInt(6) == 0;
if ($startingNode == -1) {
$startingNode = $nodeAmount / 2;
$lastNode = true;
} else {
$lastNode = false;
}
for (; $startingNode < $nodeAmount; $startingNode++) {
$horizontalSize = 1.5 + sin($startingNode * pi() / $nodeAmount) * $horizontalScale;
$verticalSize = $horizontalSize * $verticalScale;
$target = $target->add(VectorMath::getDirection3D($horizontalAngle, $verticalAngle));
if ($extraVerticalScale) {
$verticalAngle *= 0.92;
} else {
$verticalScale *= 0.7;
}
$verticalAngle += $verticalOffset * 0.1;
$horizontalAngle += $horizontalOffset * 0.1;
$verticalOffset *= 0.9;
$horizontalOffset *= 0.75;
$verticalOffset += ($random->nextFloat() - $random->nextFloat()) * $random->nextFloat() * 2;
$horizontalOffset += ($random->nextFloat() - $random->nextFloat()) * $random->nextFloat() * 4;
if (!$lastNode) {
if ($startingNode == $intersectionMode and $horizontalScale > 1 and $nodeAmount > 0) {
$this->generateCaveBranch($level, $chunk, $target, $random->nextFloat() * 0.5 + 0.5, 1, $horizontalAngle - pi() / 2, $verticalAngle / 3, $startingNode, $nodeAmount, new Random($random->nextInt()));
$this->generateCaveBranch($level, $chunk, $target, $random->nextFloat() * 0.5 + 0.5, 1, $horizontalAngle - pi() / 2, $verticalAngle / 3, $startingNode, $nodeAmount, new Random($random->nextInt()));
return;
}
if ($random->nextBoundedInt(4) == 0) {
continue;
}
}
$xOffset = $target->getX() - $middle->getX();
$zOffset = $target->getZ() - $middle->getZ();
$nodesLeft = $nodeAmount - $startingNode;
$offsetHorizontalScale = $horizontalScale + 18;
if ($xOffset * $xOffset + $zOffset * $zOffset - $nodesLeft * $nodesLeft > $offsetHorizontalScale * $offsetHorizontalScale) {
return;
}
if ($target->getX() < $middle->getX() - 16 - $horizontalSize * 2 or $target->getZ() < $middle->getZ() - 16 - $horizontalSize * 2 or $target->getX() > $middle->getX() + 16 + $horizontalSize * 2 or $target->getZ() > $middle->getZ() + 16 + $horizontalSize * 2) {
continue;
}
$start = new Vector3(floor($target->getX() - $horizontalSize) - $chunk->getX() - 1, floor($target->getY() - $verticalSize) - 1, floor($target->getZ() - $horizontalSize) - $chunk->getZ() - 1);
$end = new Vector3(floor($target->getX() + $horizontalSize) - $chunk->getX() + 1, floor($target->getY() + $verticalSize) + 1, floor($target->getZ() + $horizontalSize) - $chunk->getZ() + 1);
$node = new CaveNode($level, $chunk, $start, $end, $target, $verticalSize, $horizontalSize);
if ($node->canPlace()) {
$node->place();
}
if ($lastNode) {
break;
}
}
}