void Update()
{
try {
// Get an instance of the SessionManager if one does not exist.
if (sessionManager == null && SharingStage.Instance != null && SharingStage.Instance.Manager != null)
{
this.sessionManager = SharingStage.Instance.Manager.GetSessionManager();
}
// If we are a Primary Client and can join sessions...
if (this.sessionManager != null && sessionManager.GetSessionCount() > 0)
{
// Check to see if we aren't already in the desired session
Session currentSession = this.sessionManager.GetCurrentSession();
if (currentSession == null || // We aren't in any session
currentSession.GetName().GetString() != this.SessionName || // We're in the wrong session
currentSession.GetMachineSessionState() == MachineSessionState.DISCONNECTED) // We aren't joined or joining the right session
{
Debug.Log("Session conn " + sessionManager.IsServerConnected() + " sessions: " + sessionManager.GetSessionCount());
Debug.Log("Looking for " + SessionName);
bool sessionFound = false;
for (int i = 0; i < this.sessionManager.GetSessionCount(); ++i)
{
Session s = this.sessionManager.GetSession(i);
Debug.Log(string.Format("session {0}", s.GetName().GetString()));
if (s.GetName().GetString() == this.SessionName)
{
s.Join();
sessionFound = true;
break;
}
}
if (sessionManager.IsServerConnected() && !sessionFound)
{
Debug.Log("Didn't find session, making a new one");
sessionManager.CreateSession(new XString(SessionName));
for (int i = 0; i < this.sessionManager.GetSessionCount(); ++i)
{
Session s = this.sessionManager.GetSession(i);
if (s.GetName().GetString() == this.SessionName)
{
s.Join();
Debug.Log("Joining our new session");
sessionFound = true;
break;
}
}
}
}
}
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e);
}
}