Files
Northbound/Assets/Scripts/PlayerVisionProvider.cs

47 lines
1.5 KiB
C#

using Unity.Netcode;
using UnityEngine;
namespace Northbound
{
/// <summary>
/// 플레이어의 시야 제공 컴포넌트
/// </summary>
public class PlayerVisionProvider : NetworkBehaviour, IVisionProvider
{
private PlayerStats _playerStats;
private NetworkPlayerController _playerController;
public override void OnNetworkSpawn()
{
_playerStats = GetComponent<PlayerStats>();
_playerController = GetComponent<NetworkPlayerController>();
if (IsServer)
{
FogOfWarSystem.Instance?.RegisterVisionProvider(this);
}
}
public override void OnNetworkDespawn()
{
if (IsServer)
{
FogOfWarSystem.Instance?.UnregisterVisionProvider(this);
}
}
// NetworkPlayerController.OwnerPlayerId 사용 (실제 플레이어 ID)
// OwnerClientId는 서버 소유권이므로 잘못된 ID 반환
public ulong GetOwnerId() => _playerController?.OwnerPlayerId ?? OwnerClientId;
public float GetVisionRange() => _playerStats?.GetSight() ?? 10f;
public Transform GetTransform() => transform;
public bool IsActive() => IsSpawned;
public TeamType GetTeam() => _playerController?.GetTeam() ?? TeamType.Player;
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, GetVisionRange());
}
}
}