/// <summary> /// Describes the events happening once the initial fade in is complete /// </summary> protected virtual void AfterFadeOut(Collider2D collider) { if (AddToDestinationIgnoreList) { Destination.AddToIgnoreList(collider.transform); } if (CameraMode == CameraModes.CinemachinePriority) { MMCameraEvent.Trigger(MMCameraEventTypes.ResetPriorities); MMCinemachineBrainEvent.Trigger(MMCinemachineBrainEventTypes.ChangeBlendDuration, DelayBetweenFades); } if (CurrentRoom != null) { CurrentRoom.PlayerExitsRoom(); } if (TargetRoom != null) { TargetRoom.PlayerEntersRoom(); TargetRoom.VirtualCamera.Priority = 10; MMSpriteMaskEvent.Trigger(MoveMaskMethod, (Vector2)TargetRoom.RoomCollider.bounds.center + TargetRoom.RoomCollider.offset, TargetRoom.RoomCollider.bounds.size, MoveMaskDuration, MoveMaskCurve); } AfterFadeOutFeedback?.PlayFeedbacks(); }
/// <summary> /// Looks for the level start position and if it's inside the room, makes this room the current one /// </summary> protected virtual void HandleLevelStartDetection() { if (!_initialized) { Initialization(); } if (AutoDetectFirstRoomOnStart) { if (LevelManager.Instance != null) { if (_roomCollider2D.bounds.Contains(LevelManager.Instance.Players[0].transform.position)) { MMCameraEvent.Trigger(MMCameraEventTypes.ResetPriorities); MMCinemachineBrainEvent.Trigger(MMCinemachineBrainEventTypes.ChangeBlendDuration, 0f); VirtualCamera.Priority = 10; MMSpriteMaskEvent.Trigger(MMSpriteMaskEvent.MMSpriteMaskEventTypes.MoveToNewPosition, (Vector2)_roomCollider2D.bounds.center + _roomCollider2D.offset, _roomCollider2D.bounds.size, 0f, MMTween.MMTweenCurve.LinearTween); PlayerEntersRoom(); } } } }