using System; using UnityEngine; using System.Collections.Generic; namespace Mirror { /// /// Component that limits visibility of networked objects to the authority client. /// Any object with this component on it will only be visible to the client that has been assigned authority for it. /// This would be used for spawning a non-player networked object for single client to interact with, e.g. in-game puzzles. /// // Deprecated 2021-09-06 [Obsolete(NetworkVisibilityObsoleteMessage.Message)] [DisallowMultipleComponent] [AddComponentMenu("Network/NetworkOwnerChecker")] [RequireComponent(typeof(NetworkIdentity))] [HelpURL("https://mirror-networking.gitbook.io/docs/components/network-owner-checker")] public class NetworkOwnerChecker : NetworkVisibility { /// /// Callback used by the visibility system to determine if an observer (player) can see this object. /// If this function returns true, the network connection will be added as an observer. /// /// Network connection of a player. /// True if the client is the owner of this object. public override bool OnCheckObserver(NetworkConnection conn) { // Debug.Log($"OnCheckObserver {netIdentity.connectionToClient} {conn}"); return (netIdentity.connectionToClient == conn); } /// /// Callback used by the visibility system to (re)construct the set of observers that can see this object. /// /// The new set of observers for this object. /// True if the set of observers is being built for the first time. public override void OnRebuildObservers(HashSet observers, bool initialize) { // Do nothing here because the authority client is always added as an observer internally. } } }