//using FishNet.Managing.Scened.Data; //using System; //using UnityEngine; //using UnityEngine.SceneManagement; //namespace FishNet.Managing.Scened //{ // public static class SceneSpawner // { // #region Prefab. // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(Scene scene, GameObject prefab) // { // return Instantiate<GameObject>(scene, prefab); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(Scene scene, GameObject prefab) // { // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(SceneReferenceData sceneReferenceData, GameObject prefab) // { // return Instantiate<GameObject>(sceneReferenceData, prefab); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(SceneReferenceData sceneReferenceData, GameObject prefab) // { // Scene scene = SceneManager.ReturnScene(sceneReferenceData); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(int sceneHandle, GameObject prefab) // { // return Instantiate<GameObject>(sceneHandle, prefab, prefab.transform.position, prefab.transform.rotation, null); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(int sceneHandle, GameObject prefab) // { // Scene scene = SceneManager.ReturnScene(sceneHandle); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(string sceneName, GameObject prefab) // { // return Instantiate<GameObject>(sceneName, prefab); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(string sceneName, GameObject prefab) // { // Scene scene = SceneManager.ReturnScene(sceneName); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, null, true); // } // #endregion // #region Prefab, Parent, WorldSpace // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(Scene scene, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // return Instantiate<GameObject>(scene, prefab, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(Scene scene, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(SceneReferenceData sceneReferenceData, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // return Instantiate<GameObject>(sceneReferenceData, prefab, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(SceneReferenceData sceneReferenceData, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // Scene scene = SceneManager.ReturnScene(sceneReferenceData); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(int sceneHandle, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // return Instantiate<GameObject>(sceneHandle, prefab, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(int sceneHandle, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // Scene scene = SceneManager.ReturnScene(sceneHandle); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(string sceneName, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // return Instantiate<GameObject>(sceneName, prefab, parent, instantiateInWorldSpace); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(string sceneName, GameObject prefab, Transform parent, bool instantiateInWorldSpace = true) // { // Scene scene = SceneManager.ReturnScene(sceneName); // return Instantiate<T>(scene, prefab, prefab.transform.position, prefab.transform.rotation, parent, instantiateInWorldSpace); // } // #endregion // #region Prefab, Position, Rotation. // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(Scene scene, GameObject prefab, Vector3 position, Quaternion rotation) // { // return Instantiate<GameObject>(scene, prefab, position, rotation); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(Scene scene, GameObject prefab, Vector3 position, Quaternion rotation) // { // return Instantiate<T>(scene, prefab, position, rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(SceneReferenceData sceneReferenceData, GameObject prefab, Vector3 position, Quaternion rotation) // { // return Instantiate<GameObject>(sceneReferenceData, prefab, position, rotation); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(SceneReferenceData sceneReferenceData, GameObject prefab, Vector3 position, Quaternion rotation) // { // Scene scene = SceneManager.ReturnScene(sceneReferenceData); // return Instantiate<T>(scene, prefab, position, rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(int sceneHandle, GameObject prefab, Vector3 position, Quaternion rotation) // { // return Instantiate<GameObject>(sceneHandle, prefab, position, rotation); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(int sceneHandle, GameObject prefab, Vector3 position, Quaternion rotation) // { // Scene scene = SceneManager.ReturnScene(sceneHandle); // return Instantiate<T>(scene, prefab, position, rotation, null, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(string sceneName, GameObject prefab, Vector3 position, Quaternion rotation) // { // return Instantiate<GameObject>(sceneName, prefab, position, rotation); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(string sceneName, GameObject prefab, Vector3 position, Quaternion rotation) // { // Scene scene = SceneManager.ReturnScene(sceneName); // return Instantiate<T>(scene, prefab, position, rotation, null, true); // } // #endregion // #region Prefab, Position, Rotation, Parent. // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(Scene scene, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // return Instantiate<GameObject>(scene, prefab, position, rotation, parent); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(Scene scene, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // return Instantiate<T>(scene, prefab, position, rotation, parent, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(SceneReferenceData sceneReferenceData, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // return Instantiate<GameObject>(sceneReferenceData, prefab, position, rotation, parent); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(SceneReferenceData sceneReferenceData, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // Scene scene = SceneManager.ReturnScene(sceneReferenceData); // return Instantiate<T>(scene, prefab, position, rotation, parent, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(int sceneHandle, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // return Instantiate<GameObject>(sceneHandle, prefab, position, rotation, parent); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(int sceneHandle, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // Scene scene = SceneManager.ReturnScene(sceneHandle); // return Instantiate<T>(scene, prefab, position, rotation, parent, true); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static GameObject Instantiate(string sceneName, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // return Instantiate<GameObject>(sceneName, prefab, position, rotation, parent); // } // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // public static T Instantiate<T>(string sceneName, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent) // { // Scene scene = SceneManager.ReturnScene(sceneName); // return Instantiate<T>(scene, prefab, position, rotation, parent, true); // } // #endregion // #region Instantiator. // /// <summary> // /// Instantiates a prefab and moves it to a scene. // /// </summary> // /// <returns>Instantiated prefab or script.</returns> // private static T Instantiate<T>(Scene scene, GameObject prefab, Vector3 position, Quaternion rotation, Transform parent, bool instantiateInWorldSpace) // { // if (string.IsNullOrEmpty(scene.name)) // { // Debug.LogWarning("Scene does not exist. Prefab cannot be instantiated."); // return default(T); // } // GameObject result = MonoBehaviour.Instantiate(prefab, position, rotation); // if (result != null) // { // //Move to new scene first. // UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(result, scene); // //Set parent and spaces. // if (parent != null) // { // result.transform.SetParent(parent); // //If to not instantiate in world space then update pos/rot to localspace. // if (!instantiateInWorldSpace) // { // result.transform.localPosition = position; // result.transform.localRotation = rotation; // } // } // //If was a gameobject then return as GO. // if (typeof(T) == typeof(GameObject)) // return (T)Convert.ChangeType(result, typeof(GameObject)); // //Otherwise use getcomponent on the type. // else // return result.GetComponent<T>(); // } // //Couldn't be instantiated, return default of T. // else // { // return default(T); // } // } // #endregion // } //}