private void CreatedRemotePlayer(IRemotePlayer remotePlayer, object args)
        {
            PlayerID pid = _infra.ResolvePlayerID(args);

            NetworkArgs nargs = null;

            if (args is object[] argList)
            {
                if (argList.Length >= 2)
                {
                    if (argList[1] is NetworkArgs result)
                    {
                        nargs = result;
                    }
                }
            }

            IAvatar avatar = GetOrCreateAvatar(pid, nargs);

            avatar.SetAvatarController(remotePlayer);

            remotePlayer.PlayerID = pid;
            remotePlayer.OnDestroyingRemotePlayer += HandleRemotePlayerDestroying;

            OnCreatedRemotePlayer?.Invoke(avatar, remotePlayer);
        }
示例#2
0
        private void HandleOnCreatedLocalPlayer(IAvatar avatar, IRemotePlayer remotePlayer)
        {
            ISpatialAnchor anchor = _anchorSystem.GetOrCreateAnchor(remotePlayer.PlayerID);

            _anchorSystem.CreateTuner();

            anchor.AddTransform(avatar.Root);
        }
示例#3
0
        /// <summary>
        /// Determines whether the given <paramref name="player"/> is from the specified <paramref name="endpoint"/>
        /// </summary>
        ///
        /// <param name="player">The player to check</param>
        /// <param name="endpoint">The endpoint to check</param>
        ///
        /// <returns>True if the <paramref name="player"/> is from the <paramref name="endpoint"/>, false otherwise</returns>
        private static bool IsPlayerFromConnection(IRemotePlayer player, IPEndPoint endpoint)
        {
            if (player?.Endpoint == null || endpoint == null)
            {
                return(false);
            }

            return(player.Endpoint.Address.Equals(endpoint.Address) &&
                   player.Endpoint.Port == endpoint.Port);
        }
        private void HandleRemotePlayerDestroying(IRemotePlayer remotePlayer)
        {
            remotePlayer.OnDestroyingRemotePlayer -= HandleRemotePlayerDestroying;

            AvatarID avatarID = _infra.GetAvatarID(remotePlayer.PlayerID);
            IAvatar  avatar   = _avatarService.Find(avatarID);

            OnDestroyedRemotePlayer?.Invoke(avatar, remotePlayer);

            RemoveRemotePlayer(remotePlayer.PlayerID);
        }
        private void CreatedRemotePlayer(IRemotePlayer remotePlayer, object args)
        {
            PlayerID pid    = _infra.ResolvePlayerID(args);
            IAvatar  avatar = GetOrCreateAvatar(pid);

            avatar.SetAvatarController(remotePlayer);

            remotePlayer.PlayerID = pid;
            remotePlayer.OnDestroyingRemotePlayer += HandleRemotePlayerDestroying;

            OnCreatedRemotePlayer?.Invoke(avatar, remotePlayer);
        }
        private void CreateRemotePlayerLocalPlayer(IRemotePlayer remotePlayer, object args)
        {
            PlayerID pid    = _infra.ResolvePlayerID(args);
            IAvatar  avatar = _avatarService.GetMain();

            remotePlayer.PlayerID = pid;
            remotePlayer.OnDestroyingRemotePlayer += HandleRemotePlayerDestroying;
            remotePlayer.SetTargetAvatarController(_mainAvatarController);
            avatar.SetAvatarController(remotePlayer);

            OnCreatedLocalPlayer?.Invoke(avatar, remotePlayer);
        }
        private void HandleRemotePlayerDestroying(IRemotePlayer remotePlayer)
        {
            remotePlayer.OnDestroyingRemotePlayer -= HandleRemotePlayerDestroying;

            if (_infra == null)
            {
                return;
            }

            if (_infra is MonoBehaviour missingCheck)
            {
                if (missingCheck == null)
                {
                    return;
                }
            }

            AvatarID avatarID = _infra.GetAvatarID(remotePlayer.PlayerID);
            IAvatar  avatar   = _avatarService.Find(avatarID);

            OnDestroyedRemotePlayer?.Invoke(avatar, remotePlayer);

            RemoveRemotePlayer(remotePlayer.PlayerID);
        }
 void IMultiplayerNetworkSystem.RemoveRemotePlayer(IRemotePlayer remotePlayer) => RemoveRemotePlayer(remotePlayer.PlayerID);
 void IMultiplayerNetworkSystem.CreateRemotePlayerLocalPlayer(IRemotePlayer remotePlayer, object args) => CreateRemotePlayerLocalPlayer(remotePlayer, args);
 public BattleShipGameEngine(ILocalPlayer localPlayer, IRemotePlayer remotePlayer)
 {
     _localPlayer  = localPlayer;
     _remotePlayer = remotePlayer;
 }
 public void ReceivedRemotePlayerCustomData(IRemotePlayer remotePlayer, NetworkArgs args)
 {
     OnReceivedRemotePlayerCustomData?.Invoke(remotePlayer, args);
 }