using System; using Cinemachine; using UnityEngine; [RequireComponent(typeof(CinemachineBrain))] public class CinemachineCullingMaskSwitcher : MonoBehaviour { [Serializable] public class VCamCullingMask { public CinemachineVirtualCameraBase virtualCamera; public LayerMask cullingMask; } [Tooltip("Lista wirtualnych kamer i odpowiadajÄ…cych im culling mask")] public VCamCullingMask[] vcamMasks; private Camera mainCamera; private CinemachineBrain brain; private void Awake() { mainCamera = Camera.main; brain = GetComponent(); brain.m_CameraActivatedEvent.AddListener(OnCameraActivated); } private void OnDestroy() { brain.m_CameraActivatedEvent.RemoveListener(OnCameraActivated); } private void OnCameraActivated(ICinemachineCamera activatedCam, ICinemachineCamera vcam) { VCamCullingMask[] array = vcamMasks; foreach (VCamCullingMask vCamCullingMask in array) { if (vCamCullingMask.virtualCamera != null && vCamCullingMask.virtualCamera.VirtualCameraGameObject == activatedCam.VirtualCameraGameObject) { mainCamera.cullingMask = vCamCullingMask.cullingMask; break; } } } }