/// <summary> /// Deserialize the specified serializedSelection and optionally destroy the originals. /// </summary> /// <param name="serializedSelection">Serialized selection.</param> /// <param name="destroyOriginals">If set to <c>true</c> destroy originals.</param> /// <returns>Returns the root level restored GameObjects</returns> public static GameObject[] Deserialize(SerializedSelection serializedSelection, bool destroyOriginals) { Deserializer deserializer = new Deserializer(serializedSelection, destroyOriginals); var clonedGameObjects = deserializer.Deserialize(); return(clonedGameObjects); }
public SerializedSelection Serialize() { rootGameObjectsToCopy = GetRootGameObjects(rawGameObjects); allGameObjectsToCopy = new List <GameObject>(); rootGameObjectsToCopy.ForEach(x => { List <GameObject> tree = new List <GameObject>(); GetTree(x, ref tree); allGameObjectsToCopy.AddRange(tree); }); allComponentsInGameObjectsToCopyHierarchy = GetAllObjects(rootGameObjectsToCopy); serializedSelection = new SerializedSelection(); Serialize(rootGameObjectsToCopy); return(serializedSelection); }
// Checks if this data can be deserialized public static bool CanDeserialize(SerializedSelection serializedSelection) { if (serializedSelection.foundStatic) { return(false); } foreach (int index in serializedSelection.indexOfRootGOs) { var serializedGameObject = serializedSelection.serializedGameObjects [index]; Scene scene = EditorSceneManager.GetSceneByPath(serializedGameObject.scenePath); if (scene.isLoaded) { return(true); } } return(false); }
public Deserializer(SerializedSelection serializedSelection, bool destroyOriginals) { this.serializedSelection = serializedSelection; this.destroyOriginals = destroyOriginals; }
// Checks if this data can be deserialized public static bool CanDeserialize(SerializedSelection serializedSelection) => !serializedSelection.foundStatic && serializedSelection.indexOfRootGOs .Select(index => serializedSelection.serializedGameObjects[index]).Select( serializedGameObject => SceneManager.GetSceneByPath(serializedGameObject.scenePath)) .Any(scene => scene.isLoaded);