public void RemoveInvalidKeys() { var newRefId = new ES3RefIdDictionary(); foreach (var kvp in refId) { var obj = kvp.Key; if (obj == null) { continue; } if ((((obj.hideFlags & HideFlags.DontSave) == HideFlags.DontSave) || ((obj.hideFlags & HideFlags.DontSaveInBuild) == HideFlags.DontSaveInBuild) || ((obj.hideFlags & HideFlags.DontSaveInEditor) == HideFlags.DontSaveInEditor) || ((obj.hideFlags & HideFlags.HideAndDontSave) == HideFlags.HideAndDontSave))) { var type = obj.GetType(); // Meshes are marked with HideAndDontSave, but shouldn't be ignored. if (type != typeof(Mesh) && type != typeof(Material)) { continue; } } newRefId.Add(obj, kvp.Value); } refId = newRefId; }
public void GeneratePrefabReferences() { if (this.gameObject.scene.name != null) { return; } // Create a new reference list so that any objects which are no longer dependencies are removed. var tempLocalRefs = new ES3RefIdDictionary(); // Add the GameObject's dependencies to the reference list. foreach (var obj in ES3ReferenceMgr.CollectDependencies(this.gameObject)) { var dependency = (UnityEngine.Object)obj; if (obj == null || !ES3ReferenceMgr.CanBeSaved(dependency)) { continue; } var id = Get(dependency); // If we're adding a new reference, do an Undo.RecordObject to ensure it persists. if (id == -1) { Undo.RecordObject(this, "Update Easy Save 3 Prefab"); EditorUtility.SetDirty(this); } tempLocalRefs.Add(dependency, id == -1 ? GetNewRefID() : id); } localRefs = tempLocalRefs; }
public void GeneratePrefabReferences() { #if UNITY_2018_3_OR_NEWER if (this.gameObject.scene.name != null || UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage() != null) #else if (this.gameObject.scene.name != null) #endif { return; } // Create a new reference list so that any objects which are no longer dependencies are removed. var tempLocalRefs = new ES3RefIdDictionary(); // Get dependencies of children also. var transforms = GetComponentsInChildren <Transform>(); var gos = new GameObject[transforms.Length]; for (int i = 0; i < transforms.Length; i++) { gos[i] = transforms[i].gameObject; } bool addedNewReference = false; // Add the GameObject's dependencies to the reference list. foreach (var obj in ES3ReferenceMgr.CollectDependencies(gos)) { var dependency = (UnityEngine.Object)obj; if (obj == null || !ES3ReferenceMgr.CanBeSaved(dependency)) { continue; } var id = Get(dependency); // If we're adding a new reference, do an Undo.RecordObject to ensure it persists. if (id == -1) { addedNewReference = true; Undo.RecordObject(this, "Update Easy Save 3 Prefab"); EditorUtility.SetDirty(this); } tempLocalRefs.Add(dependency, id == -1 ? GetNewRefID() : id); } if (addedNewReference || tempLocalRefs.Count != localRefs.Count) { localRefs = tempLocalRefs; } }
public void GeneratePrefabReferences() { #if UNITY_2018_3_OR_NEWER var prefabType = PrefabUtility.GetPrefabInstanceStatus(this.gameObject); if (prefabType != PrefabInstanceStatus.NotAPrefab && prefabType != PrefabInstanceStatus.MissingAsset) { return; } #else var prefabType = PrefabUtility.GetPrefabType(this.gameObject); if (prefabType != PrefabType.Prefab && prefabType != PrefabType.MissingPrefabInstance) { return; } #endif // Create a new reference list so that any objects which are no longer dependencies are removed. var tempLocalRefs = new ES3RefIdDictionary(); // Add the GameObject's dependencies to the reference list. foreach (var obj in ES3ReferenceMgr.CollectDependencies(this.gameObject)) { var dependency = (UnityEngine.Object)obj; if (obj == null || !ES3ReferenceMgr.CanBeSaved(dependency)) { continue; } var id = Get(dependency); // If we're adding a new reference, do an Undo.RecordObject to ensure it persists. if (id == -1) { Undo.RecordObject(this, "Update Easy Save 3 Prefab"); EditorUtility.SetDirty(this); } tempLocalRefs.Add(dependency, id == -1 ? GetNewRefID() : id); } localRefs = tempLocalRefs; }
public void ChangeId(long oldId, long newId) { idRef.ChangeKey(oldId, newId); // Empty the refId so it has to be refreshed. refId = null; }