Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #5
0
 public static bool ChangesStoredInScene(Object obj)
 {
     obj = GetObjectIndirection(obj);
     return(obj.GetAssetPath() == SceneManagerUtilities.GetCurrentScenePath());
 }
Пример #6
0
        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);
                    }
                }
            }
        }