RizzeBattleRoyale/Assets/TPSBR/Scripts/Gameplay/Agent/AgentInterestProvider.cs
2025-09-24 11:24:38 +05:00

86 lines
2.0 KiB
C#

namespace TPSBR
{
using System;
using System.Collections.Generic;
using UnityEngine;
using Fusion.Addons.InterestManagement;
public class AgentInterestProvider : MonoBehaviour, IInterestProvider
{
public int SortOrder;
public EInterestMode InterestMode;
public List<InterestShape> Shapes = new List<InterestShape>();
public Transform Transform { get { if (ReferenceEquals(_transform, null) == true) { _transform = transform; } return transform; } }
int IInterestProvider.Version => _version;
int IInterestProvider.SortOrder => SortOrder;
EInterestMode IInterestProvider.InterestMode => InterestMode;
private Transform _transform;
private int _version;
public void Release()
{
++_version;
}
public bool RegisterProvider(IInterestProvider interestProvider, float duration = 0)
{
throw new NotImplementedException();
}
public bool UnregisterProvider(IInterestProvider interestProvider, bool recursive)
{
throw new NotImplementedException();
}
public void GetProviders(InterestProviderSet interestProviders, bool recursive)
{
}
public bool IsPlayerInterested(PlayerInterestView playerView)
{
return true;
}
public void GetProvidersForPlayer(PlayerInterestView playerView, InterestProviderSet interestProviders, bool recursive)
{
}
public void GetCellsForPlayer(PlayerInterestView playerView, HashSet<int> cells)
{
if (InterestMode == EInterestMode.Override)
{
cells.Clear();
}
for (int i = 0, count = Shapes.Count; i < count; ++i)
{
InterestShape shape = Shapes[i];
if (shape != null)
{
shape.GetCells(playerView, cells, InterestMode);
}
}
}
public void DrawGizmosForPlayer(PlayerInterestView playerView)
{
for (int i = 0, count = Shapes.Count; i < count; ++i)
{
InterestShape shape = Shapes[i];
if (shape != null)
{
shape.DrawGizmo(playerView);
}
}
}
private void OnDestroy()
{
Release();
}
}
}