48 lines
1.1 KiB
C#
48 lines
1.1 KiB
C#
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<CinemachineBrain>();
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|