using System;
using System.Collections.ObjectModel;
namespace Unity.VisualScripting
{
public class WatchedList<T> : Collection<T>, INotifyCollectionChanged<T>
{
public event Action<T> ItemAdded;
public event Action<T> ItemRemoved;
public event Action CollectionChanged;
protected override void InsertItem(int index, T item)
{
base.InsertItem(index, item);
ItemAdded?.Invoke(item);
CollectionChanged?.Invoke();
}
protected override void RemoveItem(int index)
{
if (index < Count)
{
var item = this[index];
base.RemoveItem(index);
ItemRemoved?.Invoke(item);
CollectionChanged?.Invoke();
}
}
protected override void ClearItems()
{
while (Count > 0)
{
RemoveItem(0);
}
}
}
}