/// <summary> /// Marks the state dirty flag; if the state is a prefab instance then disconnects the m_NodeSerialization property. /// <param name="owner">The target owner to mark the dirty flag.</param> /// </summary> public static void SetDirty(INodeOwner owner) { var unityObject = owner as UnityEngine.Object; if (!Application.isPlaying && unityObject != null) { // its a prefab Instance? var prefabType = UnityEditor.PrefabUtility.GetPrefabType(unityObject); if (prefabType != UnityEditor.PrefabType.None && prefabType != UnityEditor.PrefabType.Prefab && prefabType != UnityEditor.PrefabType.ModelPrefab) { PropertyUtility.DisconnectPropertyFromPrefab(unityObject, "m_NodeSerialization"); // Workaround to disconnect ArraySize properties owner.Clear(); PrefabUtility.RecordPrefabInstancePropertyModifications(unityObject); } } owner.SaveNodes(); EditorUtility.SetDirty(unityObject); }
/// <summary> /// Marks the state dirty flag; if the state is a prefab instance then disconnects the m_NodeSerialization property. /// <param name="owner">The target owner to mark the dirty flag.</param> /// </summary> public static void SetDirty (INodeOwner owner) { var unityObject = owner as UnityEngine.Object; if (!Application.isPlaying && unityObject != null) { // its a prefab Instance? var prefabType = UnityEditor.PrefabUtility.GetPrefabType(unityObject); if (prefabType != UnityEditor.PrefabType.None && prefabType != UnityEditor.PrefabType.Prefab && prefabType != UnityEditor.PrefabType.ModelPrefab) { PropertyUtility.DisconnectPropertyFromPrefab(unityObject, "m_NodeSerialization"); // Workaround to disconnect ArraySize properties owner.Clear(); PrefabUtility.RecordPrefabInstancePropertyModifications(unityObject); } } owner.SaveNodes(); EditorUtility.SetDirty(unityObject); }