57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using FishNet.Managing;
|
|
using FishNet.Object;
|
|
using FishNet.Transporting;
|
|
using FishNet.Transporting.Multipass;
|
|
using FishNet.Transporting.Tugboat;
|
|
using log4net;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class StartUp : MonoBehaviour
|
|
{
|
|
#region Fields
|
|
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
[SerializeField] private NetworkObject lobbyNetworkPrefab;
|
|
private NetworkManager networkManager;
|
|
#endregion
|
|
|
|
private void Start()
|
|
{
|
|
networkManager = GetComponent<NetworkManager>();
|
|
Multipass mp = GetComponent<Multipass>();
|
|
#if UNITY_WEBGL && !UNITY_EDITOR
|
|
mp.SetClientTransport<Bayou>();
|
|
#else
|
|
mp.SetClientTransport<Tugboat>();
|
|
#endif
|
|
networkManager.ServerManager.OnServerConnectionState += ServerStateChanged;
|
|
|
|
}
|
|
|
|
#region Events
|
|
private void ServerStateChanged(ServerConnectionStateArgs args)
|
|
{
|
|
if (args.ConnectionState != LocalConnectionState.Started)
|
|
{
|
|
Log.Debug("Server not yet started.");
|
|
return;
|
|
}
|
|
if (!networkManager.ServerManager.OneServerStarted())
|
|
{
|
|
Log.Info("More than one server available.");
|
|
return;
|
|
}
|
|
|
|
Log.Debug("Instantiating networked lobby.");
|
|
|
|
NetworkObject nob = Instantiate(lobbyNetworkPrefab);
|
|
// TODO: Might not be necessary
|
|
Scene scene = SceneManager.GetSceneByName("OnlineLobby");
|
|
SceneManager.MoveGameObjectToScene(nob.gameObject, scene);
|
|
networkManager.ServerManager.Spawn(nob.gameObject);
|
|
}
|
|
#endregion
|
|
} |