Net.Like.Xue.Tokyo/Packages-Local/Com.Project.B.Unity/WorldCameraService.cs

52 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Security;
using BITKit.Entities;
using Cysharp.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using ParadoxNotion;
using Project.B.CharacterController;
using Project.B.Entities;
using UnityEngine;
namespace Net.Project.B.World
{
public class WorldCameraService
{
private readonly IPlayerFactory _playerFactory;
private Camera _camera;
private int _defaultLayerMask;
public WorldCameraService(IPlayerFactory playerFactory)
{
_playerFactory = playerFactory;
_playerFactory.OnEntityCreated += OnEntityCreated;
}
private UniTask OnEntityCreated(string arg1, IEntity arg2)
{
_camera = Camera.main!;
_defaultLayerMask = _camera.cullingMask;
var playerCharacterController = arg2.ServiceProvider.GetRequiredService<IPlayerCharacterController>();
playerCharacterController.AllowTpsCamera.AddListener(OnToggleTps);
return UniTask.CompletedTask;
}
private void OnToggleTps(bool obj)
{
var mask = (LayerMask)_defaultLayerMask;
mask = obj ? mask.RemoveFromMask("FPS") : mask.AddToMask("FPS");
_camera.cullingMask = mask;
}
}
}