ProjectDDD/Assets/_DDD/_Scripts/CameraSystem/CameraManager.cs

45 lines
1.4 KiB
C#

using System.Collections.Generic;
using Sirenix.OdinInspector;
using Unity.Cinemachine;
namespace DDD
{
public class CameraManager : Singleton<CameraManager>, IManager
{
[ShowInInspector, ReadOnly]
private Dictionary<string, CameraGameObject> _cameraGameObjects;
private CinemachineBrain _cinemachineBrain;
public void Init()
{
_cameraGameObjects = new Dictionary<string, CameraGameObject>();
_cinemachineBrain = GetComponent<CinemachineBrain>();
}
public void PostInit()
{
}
public void RegisterCamera(CameraGameObject cameraGameObject)
{
_cameraGameObjects.TryAdd(cameraGameObject.Id, cameraGameObject);
}
public void UnRegisterCamera(CameraGameObject cameraGameObject)
{
_cameraGameObjects.Remove(cameraGameObject.Id);
}
public void SwitchCamera(CameraGameObject cameraGameObject, CinemachineBlendDefinition.Styles blendStyle = CinemachineBlendDefinition.Styles.Cut, float blendDuration = 1f)
{
_cinemachineBrain.DefaultBlend = new CinemachineBlendDefinition(blendStyle, blendDuration);
foreach (var item in _cameraGameObjects)
{
int newPriority = item.Value.Id == cameraGameObject.Id ? 10 : 0;
item.Value.SetPriority(newPriority);
}
}
}
}