private IEnumerator HandleTeleportToRoom(PlayerController targetPlayer, Vector2 targetPoint) { // if (targetPlayer.transform.position.GetAbsoluteRoom() != null) { StunEnemiesForTeleport(targetPlayer.transform.position.GetAbsoluteRoom(), 0.25f); } CameraController cameraController = GameManager.Instance.MainCameraController; Vector2 offsetVector = (cameraController.transform.position - targetPlayer.transform.position); offsetVector -= cameraController.GetAimContribution(); cameraController.SetManualControl(true, false); cameraController.OverridePosition = cameraController.transform.position; yield return(new WaitForSeconds(0.1f)); targetPlayer.transform.position = targetPoint; targetPlayer.specRigidbody.Reinitialize(); targetPlayer.specRigidbody.RecheckTriggers = true; if (GameManager.Instance.CurrentGameType == GameManager.GameType.COOP_2_PLAYER) { cameraController.OverridePosition = cameraController.GetIdealCameraPosition(); } else { cameraController.OverridePosition = (targetPoint + offsetVector).ToVector3ZUp(0f); } targetPlayer.WarpFollowersToPlayer(); targetPlayer.WarpCompanionsToPlayer(false); ExpandCombatRoomManager CombatManager = null; if (targetPlayer.transform.position.GetAbsoluteRoom() != null) { StunEnemiesForTeleport(targetPlayer.transform.position.GetAbsoluteRoom(), 1.8f); GameObject RoomManager = new GameObject("Room Manager") { layer = 0 }; RoomManager.transform.position = targetPlayer.transform.position; RoomManager.transform.parent = targetPlayer.transform.position.GetAbsoluteRoom().hierarchyParent; CombatManager = RoomManager.AddComponent <ExpandCombatRoomManager>(); CombatManager.ParentRoom = targetPlayer.transform.position.GetAbsoluteRoom(); } Pixelator.Instance.MarkOcclusionDirty(); yield return(null); if (CombatManager) { CombatManager.Activated = true; } cameraController.SetManualControl(false, true); yield return(new WaitForSeconds(0.15f)); targetPlayer.DoVibration(Vibration.Time.Normal, Vibration.Strength.Medium); PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(targetPlayer.specRigidbody, null, false); m_IsTeleporting = false; yield break; }
private IEnumerator HandleTeleportToRoom(PlayerController targetPlayer, Vector2 targetPoint) { if (targetPlayer.transform.position.GetAbsoluteRoom() != null) { StunEnemiesForTeleport(targetPlayer.transform.position.GetAbsoluteRoom(), 1f); } targetPlayer.healthHaver.IsVulnerable = false; CameraController cameraController = GameManager.Instance.MainCameraController; Vector2 offsetVector = (cameraController.transform.position - targetPlayer.transform.position); offsetVector -= cameraController.GetAimContribution(); Minimap.Instance.ToggleMinimap(false, false); cameraController.SetManualControl(true, false); cameraController.OverridePosition = cameraController.transform.position; targetPlayer.CurrentInputState = PlayerInputState.NoInput; yield return(new WaitForSeconds(0.1f)); DoTentacleVFX(targetPlayer); // yield return new WaitForSeconds(0.4f); yield return(new WaitForSeconds(1)); targetPlayer.ToggleRenderer(false, "arbitrary teleporter"); targetPlayer.ToggleGunRenderers(false, "arbitrary teleporter"); targetPlayer.ToggleHandRenderers(false, "arbitrary teleporter"); yield return(new WaitForSeconds(1)); Pixelator.Instance.FadeToBlack(0.15f, false, 0f); yield return(new WaitForSeconds(0.15f)); // targetPlayer.specRigidbody.Position = new Position(targetPoint); targetPlayer.transform.position = targetPoint; targetPlayer.specRigidbody.Reinitialize(); targetPlayer.specRigidbody.RecheckTriggers = true; if (GameManager.Instance.CurrentGameType == GameManager.GameType.COOP_2_PLAYER) { cameraController.OverridePosition = cameraController.GetIdealCameraPosition(); } else { cameraController.OverridePosition = (targetPoint + offsetVector).ToVector3ZUp(0f); } targetPlayer.WarpFollowersToPlayer(); targetPlayer.WarpCompanionsToPlayer(false); ExpandCombatRoomManager CombatManager = null; if (targetPlayer.transform.position.GetAbsoluteRoom() != null) { StunEnemiesForTeleport(targetPlayer.transform.position.GetAbsoluteRoom(), 1.8f); GameObject RoomManager = new GameObject("Room Manager") { layer = 0 }; RoomManager.transform.position = targetPlayer.transform.position; RoomManager.transform.parent = targetPlayer.transform.position.GetAbsoluteRoom().hierarchyParent; CombatManager = RoomManager.AddComponent <ExpandCombatRoomManager>(); CombatManager.ParentRoom = targetPlayer.transform.position.GetAbsoluteRoom(); } Pixelator.Instance.MarkOcclusionDirty(); Pixelator.Instance.FadeToBlack(0.15f, true, 0f); yield return(null); if (CombatManager) { CombatManager.Activated = true; } cameraController.SetManualControl(false, true); // yield return new WaitForSeconds(0.75f); yield return(new WaitForSeconds(0.15f)); DoTentacleVFX(targetPlayer); targetPlayer.DoVibration(Vibration.Time.Normal, Vibration.Strength.Medium); // yield return new WaitForSeconds(0.25f); yield return(new WaitForSeconds(1.7f)); targetPlayer.ToggleRenderer(true, "arbitrary teleporter"); targetPlayer.ToggleGunRenderers(true, "arbitrary teleporter"); targetPlayer.ToggleHandRenderers(true, "arbitrary teleporter"); PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(targetPlayer.specRigidbody, null, false); targetPlayer.CurrentInputState = PlayerInputState.AllInput; targetPlayer.healthHaver.IsVulnerable = true; m_IsTeleporting = false; yield break; }