public void OnPlayerUpdate(Player player)
 {
     // is player in area?
     if (IsInside(player.Position))
     {
         // if not on list, add them and update listeners
         if (!PlayersInArea.Contains(player))
         {
             PlayersInArea.Add(player);
             PlayerEnteredArea.Invoke(player, new AreaEventArgs {
                 AreaBeingWatched = this
             });
         }
     }
     else
     {
         // if on list, remove them and update listeners
         if (PlayersInArea.Contains(player))
         {
             PlayersInArea.Remove(player);
             PlayerLeftArea.Invoke(player, new AreaEventArgs {
                 AreaBeingWatched = this
             });
         }
     }
 }
 public virtual void OnTriggerExit(Collider other)
 {
     if (other.gameObject == player)
     {
         PlayerLeftArea?.Invoke();
         //PlayerInRange = false;
         //PlayerIsInteracting = false;
         //PlayerHeldInteractKeyUponEntering = false;
     }
 }