using Unity.Netcode; using UnityEngine; namespace Northbound { /// /// 플레이어의 시야 제공 컴포넌트 /// public class PlayerVisionProvider : NetworkBehaviour, IVisionProvider { private PlayerStats _playerStats; private NetworkPlayerController _playerController; public override void OnNetworkSpawn() { _playerStats = GetComponent(); _playerController = GetComponent(); 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()); } } }