/// <summary> /// Moves a unit across x tiles. /// </summary> private IEnumerator MoveToTiles() { Vector3 oldTile = _pathfinder.GetGeneratedPathAt(0); Vector3 newTile = Vector3.zero; int index = 0; while (_pathfinder.GetGeneratedPath() != null && index < _pathfinder.GetGeneratedPath().Count - 1) { newTile = _pathfinder.GetGeneratedPathAt(index + 1); Vector3 startingPosition = TileMapUtil.TileMapToWorldCentered(_pathfinder.GetGeneratedPathAt(index), tileMap.TileSize); Vector3 endingPosition = TileMapUtil.TileMapToWorldCentered(newTile, tileMap.TileSize); yield return(StartCoroutine(MoveToTile(controller.HighlightedUnit, startingPosition, endingPosition))); index++; yield return(null); } _pathfinder.Clear(); // After move is finished, swap out tile unit is standing on if (!TileMapUtil.IsInvalidTile(oldTile)) { TileMapData tileMapData = tileMap.GetTileMapData(); TileData oldTileData = tileMapData.GetTileDataAt(oldTile); oldTileData.SwapUnits(tileMapData.GetTileDataAt(newTile)); controller.HighlightedUnit.Tile = newTile; } yield break; }
public void StopMoving() { lock (mMovementSyncRoot) { mPathfinder.Clear(); } }
void DoSelection() //left click { UpdateCurrentTile(); if (currentTile == null) //didnt click on a tile, return { return; } else if (isPathfinding) //if pathfinding is on, turn off pathfinding and hide pathfinding preview. (and reshow unit path) { isPathfinding = false; Pathfinder.Clear(); if (SelectedUnit.PathTrail != null) { SelectedUnit.PathTrail.ShowPath(); } } else if (!isPathfinding && !SelectedUnit.Moving && SelectedUnit.PathTrail != null && !SelectedUnit.PathTrail.ContainsTile(currentTile)) //else unselecting unit. { SelectedUnit.PathTrail.HidePath(); SelectedUnit.PathTrail = null; Pathfinder.Clear(); } }
public void TestClear() { _validStraightPathfinder.Clear(); Assert.AreEqual(0, _validStraightPathfinder.GetGeneratedPath().Count); }