// Start is called before the first frame update void Start() { // finds gameplay manager if not set. if (gameManager == null) { gameManager = FindObjectOfType <GameplayManager>(); } // if the item spawenr has not been set, search for it. if (itemSpawner == null) { itemSpawner = FindObjectOfType <ItemSpawner>(); } // if server hasn't been set. if (server == null) { server = FindObjectOfType <UdpServerX>(); // no server object exists, so make one (if applicable) if (server == null && generateServer) { server = new UdpServerX(); } } // server is set, so add endpoints. if (server != null) { // set blocking sockets value server.SetBlockingSockets(blocking); // adds remote clients for (int i = 0; i < startupEndpoints; i++) { server.AddEndPoint(serverBufferSize); } } // if the client hasn't been set. if (client == null) { client = FindObjectOfType <UdpClient>(); // makes client if one does not exist (if applicable) if (client == null && generateClient) { client = new UdpClient(); } } // set blocking sockets value if (client != null) { client.SetBlockingSockets(blocking); } // if the server or client should be run on start. // note that if either one is set to 'true' by default, they will override this. if (runHostOnStart) { if (isMaster) { server.RunServer(); } else { client.RunClient(); } } // interval setter { // if the interval timer is not set, look for it on the object. if (intervalTimer == null) { intervalTimer = GetComponent <IntervalTimer>(); } // interval timer found if (intervalTimer != null) { intervalTimer.startOnInterval = false; intervalTimer.intervalLength = intervalLength; intervalTimer.countdown = 0; // send immediately } } // timer not set. if (timer == null) { timer = FindObjectOfType <TimerObject>(); } // TODO: when the game is starting, this is getting ahold of the players that are about to be deleted. // this needs to either change how it operates, or have a delay for getting remote players. // if the list hasn't had anything put into it. if (findPlayers) { if (players.Count == 0) { // only pulls from players with the remote player component active. RemotePlayer[] arr = FindObjectsOfType <RemotePlayer>(false); // adds players to list. foreach (RemotePlayer rp in arr) { players.Add(rp); } } } // finds controlled player foreach (RemotePlayer rp in players) { if (rp.player.controllablePlayer) { localPlayer = rp; break; } } }