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); }
private void HandleOnCreatedLocalPlayer(IAvatar avatar, IRemotePlayer remotePlayer) { ISpatialAnchor anchor = _anchorSystem.GetOrCreateAnchor(remotePlayer.PlayerID); _anchorSystem.CreateTuner(); anchor.AddTransform(avatar.Root); }
/// <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); }