private IEnumerator CheckPositions() { DisableRenderers(); OldPosition = HostShip.GetPositionInfo(); ObstaclesStayDetectorForced collisionDetector = HostShip.Model.GetComponentInChildren <ObstaclesStayDetectorForced>(); RelocateToFrontGuides(); collisionDetector.ReCheckCollisionsStart(); yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame()); bool canBePlacedFront = NoCollisionsWithObjects(collisionDetector); collisionDetector.ReCheckCollisionsFinish(); RelocateToRearGuides(); collisionDetector.ReCheckCollisionsStart(); yield return(new WaitForEndOfFrame()); yield return(new WaitForEndOfFrame()); bool canBePlacedRear = NoCollisionsWithObjects(collisionDetector); collisionDetector.ReCheckCollisionsFinish(); HostShip.SetPositionInfo(OldPosition); RestoreRenderers(); if (!canBePlacedFront && !canBePlacedRear) { Messages.ShowInfo("Buzz Droid Swarm cannot be relocated without overlapping"); DealDamageToBothShips(); } else if (canBePlacedFront && canBePlacedRear) { StartDecisionSubphase(); } else if (canBePlacedFront && !canBePlacedRear) { RelocateToFrontGuidesAndFinish(Triggers.FinishTrigger); } else if (!canBePlacedFront && canBePlacedRear) { RelocateToRearGuidesAndFinish(Triggers.FinishTrigger); } }