/// <summary> /// Loads the scene file from the specified file, discards current hierarchy and configures the loaded scene objects using the provided renderer. /// </summary> /// <param name="absolutePath">Absolute path to the scene file.</param> /// <param name="renderer">The renderer to use when configuring the loaded scene objects.</param> public static void LoadAndReplaceHierarchyAbsolute(string absolutePath, Renderer renderer) { SceneManager.currentRenderer = renderer; string jsonString = File.ReadAllText(absolutePath); var scene = JsonSerializer.Deserialize <SerializableScene>(jsonString); Hierarchy.Dispose(); foreach (var savedObject in scene.SavedSceneObjects) { Hierarchy.Add(new SceneObject(savedObject)); } for (int i = 0; i < Hierarchy.sceneObjects.Count; i++) { if (scene.SavedSceneObjects[i].Transform.ParentId != null) { Hierarchy.sceneObjects[i].transform.parent = Hierarchy.sceneObjects.Find(so => so.transform.Id == scene.SavedSceneObjects[i].Transform.ParentId)?.transform; } } }
public SceneObject() { Id = Guid.NewGuid().ToString(); Hierarchy.Add(this); }