52 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|