public void SwapGridSpace(GridUnit allyToSwap) { if (allyToSwap == null) { Debug.LogWarning("WARNING: Tried to swap places with Unit that did not exist!"); return; } Vector3 originalTransform = transform.position; Vector3 pos = allyToSwap.transform.position; if (allyToSwap.gridSpace != null) { pos = allyToSwap.gridSpace.transform.position; } pos.y = transform.position.y; transform.position = pos; pos = originalTransform; pos.y = allyToSwap.transform.position.y; allyToSwap.transform.position = pos; GridSpace currentSpace = gridSpace; GridSpace allySpace = allyToSwap.gridSpace; currentSpace.UnoccupySpace(); allySpace.UnoccupySpace(); currentSpace.OccupySpace(allyToSwap); allySpace.OccupySpace(this); if (allyToSwap.knockedback) { allyToSwap.StopAllCoroutines(); } gridSpace = allySpace; allyToSwap.gridSpace = currentSpace; //Activate the tile on Enter in case its a lava tile gridSpace.OnTileEnter(); }