async public Task PerformMovement(int nextNodeID) { Vector3 nextLocation = pathService.GetNodeLocation(nextNodeID); if (pathService.CheckIfTeleportable(playerNodeID, nextNodeID)) { pathService.HighlightTeleportNodes(nextNodeID); } //else { // pathService.UnhighlightTeleportableNodes(); //} await MoveToLocation(nextLocation); playerNodeID = nextNodeID; if (interactableService.CheckForInteractable(nextNodeID)) { IInteractableController interactableController = interactableService.ReturnInteractableController(nextNodeID); PerformInteractableAction(interactableController); } if (IsGameFinished()) { playerService.FireLevelFinishedSignal(); } else if (GetPlayerState() != PlayerStates.WAIT_FOR_INPUT) { gameService.ChangeToEnemyState(); } }