matze / pathfinder
PocketMine-MP Pathfinder
dev-V3-PM5
2024-04-26 13:51 UTC
Requires
- pocketmine/pocketmine-mp: ^5.0.0
This package is auto-updated.
Last update: 2024-09-26 14:36:46 UTC
README
当前VIRION处于alpha阶段!
待办事项
- 更多默认规则(欢迎帮助!)
功能
- 异步路径搜索
- 同步路径搜索
- 路径平滑化
- 易于使用的API
关于异步路径搜索
由于异步路径搜索具有巨大的性能优势,我总是推荐使用这种方法。但您必须考虑,在另一个线程上进行路径搜索可能会导致路径错误,因为路径搜索期间可能会发生阻塞更新。此外,异步路径搜索比在主线程上运行路径搜索要慢一些(取决于距离和需要计算路径的区块)。但另一方面,主线程甚至不会识别任何路径计算。如果您需要计算多条路径,还应该考虑添加队列,否则类似区块加载和包压缩的任务会花费更长的时间。
代码示例
在两点之间寻找路径
// Set some settings $settings = \matze\pathfinder\setting\Settings::get() ->setPathSmoothing(false) ->setMaxTravelDistanceDown(2) ->setMaxTravelDistanceUp(1); // Initialize pathfinder $pathfinder = new \matze\pathfinder\Pathfinder([ // Rules will be executed from PRIORITY_HIGHEST to PRIORITY_LOWEST new \matze\pathfinder\rule\default\EntitySizeRule(new \pocketmine\entity\EntitySizeInfo(2, 1), \matze\pathfinder\rule\Rule::PRIORITY_NORMAL),//Define rules and set priorities ], $settings); // Find path synchron $result = $pathfinder->findPath($from, $to, $world, $timeout); if($result === null) { //Path not found } else { //Path found } // Find path asynchron $pathfinder->findPathAsync($from, $to, $world, function(?\matze\pathfinder\result\PathResult $result): void { if($result === null) { //Path not found } else { //Path found } }, $timeout);
欢迎您贡献!
联系我
Discord: matze998