forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			356 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			356 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
 | 
						|
//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
 | 
						|
 | 
						|
 | 
						|
//    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
//} |