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(); 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; } } }