// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.GameLogic; using Nito.AsyncEx; /// /// Interface for an observable object. /// public interface IObservable { /// /// Gets the observers. /// ISet Observers { get; } /// /// Gets the lock for . /// AsyncReaderWriterLock ObserverLock { get; } /// /// Adds the observer. /// /// The observer. ValueTask AddObserverAsync(IWorldObserver observer); /// /// Removes the observer. /// /// The observer. ValueTask RemoveObserverAsync(IWorldObserver observer); }