public bool Populate(NetWorker socket)
{
List<SimpleNetworkedMonoBehavior> allBehaviors = new List<SimpleNetworkedMonoBehavior>(startNetworkedSceneBehaviors);
// Find all objects in the scene that have SNMB
SimpleNetworkedMonoBehavior[] behaviors = FindObjectsOfType<SimpleNetworkedMonoBehavior>();
foreach (SimpleNetworkedMonoBehavior behavior in behaviors)
{
if (!allBehaviors.Contains(behavior))
allBehaviors.Add(behavior);
}
if (Networking.Sockets == null)
{
Debug.LogWarning("No connection has been established for this network scene, preparing offline play...");
IsSetup = true;
foreach (Action execute in setupActions)
execute();
return false;
}
ControllingSocket = socket;
OwningNetWorker = ControllingSocket;
if (!OwningNetWorker.Connected)
{
NetWorker.BasicEvent handler = null;
handler = () =>
{
SetupObjects(allBehaviors.ToArray(), OwningNetWorker);
foreach (Action execute in setupActions)
execute();
OwningNetWorker.connected -= handler;
};
OwningNetWorker.connected += handler;
}
else
{
SetupObjects(allBehaviors.ToArray(), OwningNetWorker);
foreach (Action execute in setupActions)
execute();
}
OwningNetWorker.AddCustomDataReadEvent(WriteCustomMapping.NETWORKING_MANAGER_POLL_PLAYERS, PollPlayersResponse, true);
return true;
}