void CreateScenario(string scenarioName) { if (PhotonNetwork.isMasterClient) { if (scenarioCreated) { return; } scenarioCreated = true; Debug.Log("CreateScenario " + scenarioName); ScenarioSceneInfo scenarioToCreate = null; foreach (ScenarioSceneInfo scenario in scenarios) { if (scenario.name == scenarioName) { scenarioToCreate = scenario; break; } } if (scenarioToCreate != null) { GameObject scenarioGO = PhotonNetwork.InstantiateSceneObject(scenarioToCreate.scenarioScene.name, Vector3.zero, Quaternion.identity, 0, null); ScenarioScene scene = scenarioGO.GetComponent <ScenarioScene>(); currentScenario = new ScenarioSceneInfo(scenarioToCreate.name, scene); if (onCreateScene != null) { onCreateScene(currentScenario.scenarioScene); } } } }
void OnCreateSceneRPC() { if (currentScene == null) { currentScene = GameObject.FindObjectOfType <ScenarioScene>(); } CreatePlayer(); }
void OnCreateScene(ScenarioScene scene) { if (PhotonNetwork.isMasterClient) { photonView.RPC("OnCreateSceneRPC", PhotonTargets.Others); currentScene = scene; //Now we can create players CreatePlayer(); } }
IEnumerator WaitToCreatePlayerCoroutine() { do { yield return(new WaitForSeconds(0.5f)); currentScene = GameObject.FindObjectOfType <ScenarioScene>(); if (currentScene != null && localPlayerController == null) { //Scene was already created and OcCreateSceneRPC was missed CreatePlayer(); RestoreRemotePlayers(); yield break; } } while (localPlayerController == null); }
public ScenarioSceneInfo(string name, ScenarioScene prefab) { this.name = name; this.scenarioScene = prefab; }