private static Object RevertObject(Object obj) { if (ObjectUtilities.ChangesStoredInScene(obj)) { SceneManagerUtilities.SaveActiveScene(); } bool success = VCCommands.Instance.Revert(obj.ToAssetPaths()); if (success && onHierarchyReverted != null) { onHierarchyReverted(obj); } return(obj); }
public static void ApplyAndCommit(Object obj, string commitMessage = "", bool showCommitDialog = false) { var gameObject = obj as GameObject; if (ObjectUtilities.ChangesStoredInScene(obj)) { SceneManagerUtilities.SaveActiveScene(); } if (PrefabHelper.IsPrefab(gameObject, true, false) && !PrefabHelper.IsPrefabParent(obj)) { PrefabHelper.ApplyPrefab(gameObject); } if (onHierarchyCommit != null) { onHierarchyCommit(obj); } VCCommands.Instance.CommitDialog(obj.ToAssetPaths(), showCommitDialog, commitMessage); }
public static void ApplyAndCommit(Object obj, string commitMessage = "", bool showCommitDialog = false) { var gameObject = obj as GameObject; if (ObjectUtilities.ChangesStoredInScene(obj)) { SceneManagerUtilities.SaveActiveScene(); } if (PrefabHelper.IsPartofPrefabStage(gameObject)) { PrefabHelper.SaveOpenPrefabStage(); } if (onHierarchyCommit != null) { onHierarchyCommit(obj); } VCCommands.Instance.CommitDialog(obj.ToAssetPaths(), includeDependencies: true, showUserConfirmation: showCommitDialog, commitMessage: commitMessage); }
public bool CommitDialog(IEnumerable <string> assets, bool showUserConfirmation = false, string commitMessage = "") { int initialAssetCount = assets.Count(); if (initialAssetCount == 0) { return(true); } assets = assets.AddFilesInFolders().AddFolders(vcc).AddMoveMatches(vcc); var dependencies = assets.GetDependencies().AddFilesInFolders().AddFolders(vcc).Concat(assets.AddDeletedInFolders(vcc)); var allAssets = assets.Concat(dependencies).Distinct().ToList(); var localModified = allAssets.LocalModified(vcc); if (assets.Contains(SceneManagerUtilities.GetCurrentScenePath())) { SceneManagerUtilities.SaveCurrentModifiedScenesIfUserWantsTo(); } if (PreCommit != null) { PreCommit(allAssets); } if (VCSettings.RequireLockBeforeCommit && localModified.Any()) { string title = string.Format("{0} '{1}' files?", Terminology.getlock, Terminology.localModified); string message = string.Format("You are trying to commit files which are '{0}'.\nDo you want to '{1}' these files first?", Terminology.localModified, Terminology.getlock); if (EditorUtility.DisplayDialog(title, message, Terminology.getlock, "Abort")) { GetLock(localModified); } else { return(false); } } if (showUserConfirmation || initialAssetCount < (assets.Count() + dependencies.Count())) { return(OpenCommitDialogWindow(assets, dependencies)); } return(Commit(assets, commitMessage)); }
public static bool ChangesStoredInScene(Object obj) { obj = GetObjectIndirection(obj); return(obj.GetAssetPath() == SceneManagerUtilities.GetCurrentScenePath()); }
public bool CommitDialog(List <string> assets, bool includeDependencies = true, bool showUserConfirmation = false, string commitMessage = "") { int initialAssetCount = assets.Count; if (initialAssetCount == 0) { return(true); } UnityAssetpathsFilters.AddFilesInFolders(ref assets); AssetpathsFilters.AddFolders(ref assets, vcc); AssetpathsFilters.AddMoveMatches(ref assets, vcc); List <string> dependencies = new List <string>(); if (includeDependencies) { dependencies = assets.GetDependencies().ToList(); UnityAssetpathsFilters.AddFilesInFolders(ref dependencies); AssetpathsFilters.AddFolders(ref dependencies, vcc); dependencies.AddRange(assets.AddDeletedInFolders(vcc)); } var allAssets = assets.Concat(dependencies).Distinct().ToList(); var localModified = allAssets.LocalModified(vcc); if (assets.Contains(SceneManagerUtilities.GetCurrentScenePath())) { SceneManagerUtilities.SaveCurrentModifiedScenesIfUserWantsTo(); } var localOnly = allAssets.LocalOnly(vcc); if (localOnly.Any()) { return(UserDialog.DisplayDialog( title: "Commit Warning!", message: "You have chosen your own content above content from the server, which have made the asset 'Local Only'\n" + "To reduce the risk of removing someones work, you will have to verify you wish to 'commit anyway'\n\n" + $"{localOnly.Aggregate((a, b) => a + "\n" + b)}", ok: "Commit Anyway", cancel: "Cancel" )); } if (VCSettings.RequireLockBeforeCommit && localModified.Any()) { string title = $"{Terminology.getlock} '{Terminology.localModified}' files?"; string message = $"You are trying to commit files which are '{Terminology.localModified}'.\nDo you want to '{Terminology.getlock}' these files first?"; if (UserDialog.DisplayDialog(title, message, Terminology.getlock, "Abort")) { GetLock(localModified); } else { return(false); } } if (showUserConfirmation || initialAssetCount < (assets.Count() + dependencies.Count())) { return(OpenCommitDialogWindow(assets, dependencies)); } return(Commit(assets, commitMessage)); }
internal static void RefreshEditableObject(GameObject gameObject) { if (!EditorUtility.IsPersistent(gameObject)) { bool editable = ShouleBeEditable(gameObject); bool parentEditable = gameObject.transform.parent ? ShouleBeEditable(gameObject.transform.parent.gameObject) : VCUtility.HaveAssetControl(SceneManagerUtilities.GetCurrentScenePath()); bool prefabHeadEditable = PrefabHelper.IsPrefabRoot(gameObject) && parentEditable; if (prefabHeadEditable) { SetEditable(gameObject, true); } else { SetEditable(gameObject, editable); } foreach (var componentIt in gameObject.GetComponents <Component>()) { if (prefabHeadEditable && componentIt == gameObject.transform) { SetEditable(gameObject.transform, true); } else { RefreshEditableComponent(gameObject, componentIt); } } } }