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); } }
public IEnumerator CheckCollisions() { Collider = TemporaryShipBase.GetComponentInChildren <ObstaclesStayDetectorForced>(); Collider.TheShip = (Phases.CurrentSubPhase as BarrelRollPlanningSubPhase).TheShip; Collider.ReCheckCollisionsStart(); yield return(Tools.WaitForFrames(3)); }
private void TryConfirmBarrelRollPosition() { obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
private void CheckImmediateDetonation() { collisionChecker = BombObject.GetComponentInChildren <ObstaclesStayDetectorForced>(); collisionChecker.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
public void TryConfirmBoostPosition(System.Action <bool> canBoostCallback = null) { ShowBoosterHelper(); obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(() => UpdateColisionDetection(canBoostCallback)); }
private void CheckImmediateDetonation() { foreach (var mineObject in CurrentBombObjects) { ObstaclesStayDetectorForced collisionChecker = mineObject.GetComponentInChildren <ObstaclesStayDetectorForced>(); collisionChecker.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(delegate { return(UpdateColisionDetection(collisionChecker)); }); } }
public void TryConfirmDecloakPosition() { obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate = GetDecloakHelperByName(SelectedDecloakHelper).GetComponentInChildren <ObstaclesStayDetectorForced>(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
public void TryConfirmBoostPosition() { ShowBoosterHelper(); obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); GameManagerScript Game = GameObject.Find("GameManager").GetComponent <GameManagerScript>(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }
private IEnumerator CheckCollisions() { foreach (var temporaryShipBase in TemporaryShipBases.Values) { ObstaclesStayDetectorForced detector = temporaryShipBase.transform.Find("ShipBase").Find("ObstaclesStayDetector").gameObject.AddComponent <ObstaclesStayDetectorForced>(); detector.ReCheckCollisionsStart(); yield return(new WaitForFixedUpdate()); detector.ReCheckCollisionsFinish(); } }
private IEnumerator CheckBombPlacement() { ObstaclesStayDetectorForced detector = BombGO.GetComponentInChildren <ObstaclesStayDetectorForced>(); detector.ReCheckCollisionsStart(); yield return(WaitForFrames(2)); detector.ReCheckCollisionsFinish(); if (detector.OverlapsCurrentShipNow) { GameCommand command = GeneratePlaceBombCommand(BombGO.transform.position, BombGO.transform.eulerAngles); GameMode.CurrentGameMode.ExecuteCommand(command); } else { Messages.ShowError("The bomb must be touching ship's base"); IsInReposition = true; } }
private IEnumerator CheckBoostTemplate(ObstaclesStayDetectorForced obstaclesStayDetectorMovementTemplate) { obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); yield return(Tools.WaitForFrames(3)); }
private void TryConfirmBoostPosition() { obstaclesStayDetectorBase.ReCheckCollisionsStart(); obstaclesStayDetectorMovementTemplate.ReCheckCollisionsStart(); Game.Movement.FuncsToUpdate.Add(UpdateColisionDetection); }