/// <summary> /// Callback used by the visibility system to (re)construct the set of observers /// that can see this object. /// <para> /// Implementations of this callback should add network connections of /// players that can see this object to the observers set. /// </para> /// </summary> /// <param name="observers">The new set of observers for this object.</param> /// <param name="initialize">True if the set of observers is being built for the first time.</param> public override void OnRebuildObservers( HashSet <NetworkConnection> observers, bool initialize) { if (_team == TeamName.UNDEFINED) { return; } foreach (NetworkConnectionToClient conn in NetworkServer.connections.Values) { NetworkedPlayerData data = conn.identity.GetComponent <NetworkedPlayerData>(); if (data.Team == _team) { observers.Add(conn); } } }
void OnPlayerJoin(NetworkConnection conn, PlayerJoinMessage message) { // playerPrefab is the one assigned in the inspector in Network // Manager but you can use different prefabs per race for example GameObject gameobject = Instantiate(playerPrefab); // Apply data from the message however appropriate for your game // Typically Player would be a component you write with syncvars or properties NetworkedPlayerData player = gameobject.GetComponent <NetworkedPlayerData>(); player.Team = message.Team; // TODO sync decks // call this to use this gameobject as the primary controller NetworkServer.AddPlayerForConnection(conn, gameobject); }
/// <summary> /// Callback used by the visibility system to determine if /// an observer (player) can see this object. /// <para> /// If this function returns true, the network connection /// will be added as an observer. /// </para> /// </summary> /// <param name="conn">Network connection of a player.</param> /// <returns>True if the player can see this object.</returns> public override bool OnCheckObserver(NetworkConnection conn) { NetworkedPlayerData data = conn.identity.GetComponent <NetworkedPlayerData>(); return(data.Team == _team); }