using System; using System.Collections; using System.Collections.Generic; using Mirror; using UnityEngine; /* Documentation: https://mirror-networking.gitbook.io/docs/components/network-authenticators API Reference: https://mirror-networking.com/docs/api/Mirror.NetworkAuthenticator.html */ public class #SCRIPTNAME# : NetworkAuthenticator { #region Messages public struct AuthRequestMessage : NetworkMessage { } public struct AuthResponseMessage : NetworkMessage { } #endregion #region Server /// <summary> /// Called on server from StartServer to initialize the Authenticator /// <para>Server message handlers should be registered in this method.</para> /// </summary> public override void OnStartServer() { // register a handler for the authentication request we expect from client NetworkServer.RegisterHandler<AuthRequestMessage>(OnAuthRequestMessage, false); } /// <summary> /// Called on server from OnServerConnectInternal when a client needs to authenticate /// </summary> /// <param name="conn">Connection to client.</param> public override void OnServerAuthenticate(NetworkConnectionToClient conn) { } /// <summary> /// Called on server when the client's AuthRequestMessage arrives /// </summary> /// <param name="conn">Connection to client.</param> /// <param name="msg">The message payload</param> public void OnAuthRequestMessage(NetworkConnectionToClient conn, AuthRequestMessage msg) { AuthResponseMessage authResponseMessage = new AuthResponseMessage(); conn.Send(authResponseMessage); // Accept the successful authentication ServerAccept(conn); } #endregion #region Client /// <summary> /// Called on client from StartClient to initialize the Authenticator /// <para>Client message handlers should be registered in this method.</para> /// </summary> public override void OnStartClient() { // register a handler for the authentication response we expect from server NetworkClient.RegisterHandler<AuthResponseMessage>(OnAuthResponseMessage, false); } /// <summary> /// Called on client from OnClientConnectInternal when a client needs to authenticate /// </summary> public override void OnClientAuthenticate() { AuthRequestMessage authRequestMessage = new AuthRequestMessage(); NetworkClient.Send(authRequestMessage); } /// <summary> /// Called on client when the server's AuthResponseMessage arrives /// </summary> /// <param name="msg">The message payload</param> public void OnAuthResponseMessage(AuthResponseMessage msg) { // Authentication has been accepted ClientAccept(); } #endregion }