Ejemplo n.º 1
0
        private static bool ShouleBeEditable(GameObject gameObject)
        {
            var assetPath = gameObject.GetAssetPath();

            if (assetPath == "")
            {
                return(true);
            }
            var assetStatus = gameObject.GetAssetStatus();

            if (!VCUtility.ManagedByRepository(assetStatus))
            {
                return(true);
            }
            bool isPrefab = ObjectUtilities.ChangesStoredInPrefab(gameObject);

            if (isPrefab)
            {
                return(VCUtility.HaveAssetControl(assetStatus));
            }
            else // Treat as scene object
            {
                string scenePath = ObjectUtilities.ObjectToAssetPath(gameObject, false);
                if (scenePath == "")
                {
                    return(true);
                }
                var  vcSceneStatus    = VCCommands.Instance.GetAssetStatus(scenePath);
                bool haveSceneControl = VCUtility.HaveAssetControl(vcSceneStatus);
                bool lockScene        = LockScene(scenePath);
                return(haveSceneControl || !lockScene);
            }
        }
Ejemplo n.º 2
0
        private static string[] OnWillSaveAssets(string[] assets)
        {
            if (UnityEditorInternal.InternalEditorUtility.inBatchMode ||
                !VCCommands.Active ||
                VCSettings.SaveStrategy == VCSettings.ESaveAssetsStrategy.Unity ||
                VCCommands.Instance.FlusingFiles ||
                EditorApplication.isCompiling)
            {
                return(assets);
            }


            if (assets.Any(a => VCCommands.Instance.GetAssetStatus(a).reflectionLevel == VCReflectionLevel.None))
            {
                VCCommands.Instance.Status(assets, StatusLevel.Previous);
            }

            var toBeSaved = new List <string>();
            var noControl = new List <string>();

            foreach (var asset in assets)
            {
                //D.Log(asset+ " has ignored parentfolder: " + VCCommands.Instance.InIgnoredParentFolder(asset));
                if (VCUtility.HaveAssetControl(asset) || !VCUtility.ManagedByRepository(asset) || asset.InUnversionedParentFolder(VCCommands.Instance) || asset.InIgnoredParentFolder(VCCommands.Instance))
                {
                    toBeSaved.Add(asset);
                }
                else
                {
                    noControl.Add(asset);
                }
            }

            if (noControl.Count > 0)
            {
                foreach (var asset in noControl)
                {
                    string message = string.Format("Unity is trying to save following file which is not under control on {1}.\n\n'{0}'", asset, VCSettings.VersionControlBackend, Terminology.getlock);
                    int    result  = EditorUtility.DisplayDialogComplex("Save File?", message, Terminology.allowLocalEdit, Terminology.getlock, "Do not save");
                    if (result == 0 || result == 1)
                    {
                        toBeSaved.Add(asset);
                        if (result == 0)
                        {
                            VCCommands.Instance.AllowLocalEdit(new[] { asset });
                        }

                        if (result == 1)
                        {
                            VCCommands.Instance.GetLock(new[] { asset }, OperationMode.Normal);
                        }
                    }
                }
            }
            return(toBeSaved.ToArray());
        }
Ejemplo n.º 3
0
        private static AssetMoveResult OnWillMoveAsset(string from, string to)
        {
            if (!UseTeamLicence)
            {
                return(AssetMoveResult.DidNotMove);
            }

            VersionControlStatus status = VCCommands.Instance.GetAssetStatus(from);

            if (VCUtility.ManagedByRepository(status))
            {
                if (DisplayConfirmationDialog("Move", from, status))
                {
                    string topUnversionedFolder;
                    if (InUnversionedParentFolder(to, out topUnversionedFolder))
                    {
                        int result = EditorUtility.DisplayDialogComplex("Add Folder?", "Versioned files are moved into an unversioned folder. Add following unversioned folder first?\n\n" + topUnversionedFolder, "Yes", "No", "Cancel");
                        if (result == 0)
                        {
                            VCCommands.Instance.Add(new[] { topUnversionedFolder });
                            VCCommands.Instance.Status(new[] { topUnversionedFolder }, StatusLevel.Local);
                        }
                        if (result == 2)
                        {
                            return(AssetMoveResult.FailedMove);
                        }
                    }
                    if (InUnversionedParentFolder(from, out topUnversionedFolder))
                    {
                        return(AssetMoveResult.DidNotMove);
                    }
                    if (VCCommands.Instance.Move(from, to))
                    {
                        DebugLog.Log("Version Control Move: " + from + " => " + to);
                        return(AssetMoveResult.DidMove);
                    }
                    return(AssetMoveResult.DidNotMove);
                }
                return(AssetMoveResult.FailedMove);
            }
            return(AssetMoveResult.DidNotMove);
        }
Ejemplo n.º 4
0
        private static void ReMoveAssetOnVC(string from, string to)
        {
            VersionControlStatus status = VCCommands.Instance.GetAssetStatus(from);
            string topUnversionedFolder;

            if (VCUtility.ManagedByRepository(status) && !InUnversionedParentFolder(from, out topUnversionedFolder))
            {
                if (DisplayConfirmationDialog("Move", from, status))
                {
                    if (InUnversionedParentFolder(to, out topUnversionedFolder))
                    {
                        string msg    = "Versioned files are moved into an unversioned folder. Add following unversioned folder first?\n\n" + topUnversionedFolder;
                        int    result = EditorUtility.DisplayDialogComplex("Add Folder?", msg, "Yes", "No", "Cancel");
                        if (result == 0)
                        {
                            MoveAssetBack(from, to);
                            VCCommands.Instance.Add(new[] { topUnversionedFolder });
                            VCCommands.Instance.Status(new[] { topUnversionedFolder }, StatusLevel.Local);
                        }
                        if (result == 1)
                        {
                            VCCommands.Instance.Delete(new[] { from }, OperationMode.Force);
                            return;
                        }
                        if (result == 2)
                        {
                            MoveAssetBack(from, to);
                            return;
                        }
                    }
                    else
                    {
                        MoveAssetBack(from, to);
                    }

                    VCCommands.Instance.Move(from, to);
                    AssetDatabase.Refresh();
                    GameObjectToAssetPathCache.ClearObjectToAssetPathCache();
                }
            }
        }
Ejemplo n.º 5
0
        private static void SetMaterialLock(Material material, bool gameObjectLocked)
        {
            var  assetPath             = material.GetAssetPath();
            var  assetStatus           = VCCommands.Instance.GetAssetStatus(assetPath);
            bool materialStoredInScene = VCUtility.MaterialStoredInScene(material);
            bool shouldLock            = (materialStoredInScene ? gameObjectLocked : (VCUtility.ManagedByRepository(assetStatus) && !VCUtility.HaveAssetControl(assetStatus))) && VCSettings.LockAssets;

            SetEditable(material, !shouldLock);
        }