// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GameLogic; /// /// Interface of an object which is observing other objects on its current map. /// public interface IBucketMapObserver { /// /// Gets the maximum distance of which buckets in range the observer is interested in. /// int InfoRange { get; } /// /// Gets the observing buckets. /// IList> ObservingBuckets { get; } /// /// This method is called, when another locateable is moving into the observing zones. /// /// The item which got added. ValueTask LocateableAddedAsync(ILocateable item); /// /// This method is called, when another locateable is moving out of the observing zones. /// /// The item which got removed. ValueTask LocateableRemovedAsync(ILocateable item); /// /// This method is called, when this object is moving to another zone, and old objects are getting out of range. /// /// The objects which are out of range. ValueTask LocateablesOutOfScopeAsync(IEnumerable oldObjects); /// /// This method is called, when this object is moving to another zone, and new objects are getting into range. /// /// The objects which are getting into range. ValueTask NewLocateablesInScopeAsync(IEnumerable newObjects); }