void UpdateAttemptToConnect() { if (LocalIsClient || LocalIsHost) { return; } if (DebugPlayAsClient) { LocalIsClient = true; EnableDisableConnectionObjects(2); return; } // We connected if (vnet.m_netSession.GetNumConnectedClients() > 0 && vnet.m_netSession.GetSessionUID() == AttemptingToConnectGUID) { AttemptingToConnectGUID = VNetCommon.NET_SESSION_INVALID_UID; AttemptToConnectTimer = 0; LocalIsClient = true; NoConnection = false; EnableDisableConnectionObjects(AttemptingToConnectRole); return; } if (AttemptToConnectTimer > 0) { if (vnet.m_availableSessions.m_openSessions.Count > 0) { foreach (ulong key in vnet.m_availableSessions.m_openSessions.Keys) { AttemptingToConnectGUID = key; break; } // Figure out a valid role you can take VNetOpenSession sess = vnet.m_availableSessions.m_openSessions[AttemptingToConnectGUID]; AttemptingToConnectRole = 3 - sess.host.role; vnet.m_netSession.AttemptToJoinSession(AttemptingToConnectGUID, AttemptingToConnectRole); } AttemptToConnectTimer -= VNetTimer.Inst.GetFrameTimeFloat(); } // Become the host of a new game since you failed to previously connect else if (AttemptingToConnectGUID == VNetCommon.NET_SESSION_INVALID_UID) { LocalIsHost = true; NoConnection = false; int hostRole = LocalHostIsScientist ? 1 : 2; EnableDisableConnectionObjects(hostRole); vnet.StartHosting(hostRole); } }
// Use this for initialization void Start() { vnet = new VNet(); vnet.Init(); vnet.StartHosting(0); }