New pathfinding implementation on separate thread

This commit is contained in:
Anuken
2019-09-20 22:01:27 -04:00
parent bd1ea41c0d
commit 025386af53
10 changed files with 279 additions and 139 deletions
@@ -71,7 +71,7 @@ public abstract class FlyingUnit extends BaseUnit{
public void update(){
if(retarget()){
targetClosest();
targetClosestEnemyFlag(BlockFlag.target);
targetClosestEnemyFlag(BlockFlag.core);
if(target != null && !Units.invalidateTarget(target, team, x, y)){
setState(attack);
@@ -6,6 +6,7 @@ import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.*;
import io.anuke.mindustry.ai.Pathfinder.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.bullet.*;
import io.anuke.mindustry.entities.units.*;
@@ -223,7 +224,7 @@ public abstract class GroundUnit extends BaseUnit{
protected void moveToCore(){
Tile tile = world.tileWorld(x, y);
if(tile == null) return;
Tile targetTile = pathfinder.getTargetTile(team, tile);
Tile targetTile = pathfinder.getTargetTile(tile, team, PathTarget.enemyCores);
if(tile == targetTile) return;
@@ -246,7 +247,7 @@ public abstract class GroundUnit extends BaseUnit{
Tile tile = world.tileWorld(x, y);
if(tile == null) return;
Tile targetTile = pathfinder.getTargetTile(enemy, tile);
Tile targetTile = pathfinder.getTargetTile(tile, team, PathTarget.enemyCores);
TileEntity core = getClosestCore();
if(tile == targetTile || core == null || dst(core) < 120f) return;