Exemplo n.º 1
0
        static int[] PasteFoldersAfterCut(string destination = null)
        {
            List <string> pastedObjects = new List <string>();

            string[] assetPaths = new string[assetClipboard.Count];

            int counter = 0;

            foreach (var item in assetClipboard)
            {
                assetPaths[counter] = AssetDatabase.GetAssetPath(ObjectIdentifier.ToObject(item));
                counter++;
            }

            if (counter > 0)
            {
                Undo.RegisterAssetsMoveUndo(assetPaths);
            }

            counter = 0;
            foreach (var item in assetClipboard)
            {
                var assetPath = assetPaths[counter];

                var newPath = AssetDatabase.GenerateUniqueAssetPath(GetValidPath(assetPath, destination));
                if (String.IsNullOrEmpty(AssetDatabase.MoveAsset(assetPath, newPath)))
                {
                    pastedObjects.Add(newPath);
                    counter++;
                }
            }

            Reset();
            performedAction = PerformedAction.None;
            AssetDatabase.Refresh();

            int[] copiedAssets = new int[pastedObjects.Count];

            for (int i = 0; i < pastedObjects.Count; i++)
            {
                copiedAssets[i] = AssetDatabase.LoadMainAssetAtPath(pastedObjects[i]).GetInstanceID();
            }

            return(copiedAssets);
        }
Exemplo n.º 2
0
        static IEnumerable <Object> PasteCutAssets(string destination = null)
        {
            List <string> pastedObjects = new List <string>();

            string[] assetPaths = new string[assetClipboard.Count];

            int counter = 0;

            foreach (var item in assetClipboard)
            {
                assetPaths[counter] = AssetDatabase.GetAssetPath(ObjectIdentifier.ToObject(item));
                counter++;
            }

            if (counter > 0)
            {
                Undo.RegisterAssetsMoveUndo(assetPaths);
            }

            counter = 0;
            foreach (var item in assetClipboard)
            {
                var assetPath = assetPaths[counter];
                var validPath = GetValidPath(assetPath, destination);
                var obj       = AssetDatabase.LoadAssetAtPath(validPath, typeof(Object));
                var newPath   = assetPath != validPath && obj != null?AssetDatabase.GenerateUniqueAssetPath(validPath) : validPath;

                if (String.IsNullOrEmpty(AssetDatabase.ValidateMoveAsset(assetPath, newPath)))
                {
                    AssetDatabase.MoveAsset(assetPath, newPath);
                    pastedObjects.Add(newPath);
                }

                counter++;
            }

            Reset();
            AssetDatabase.Refresh();

            return(pastedObjects.Select(AssetDatabase.LoadMainAssetAtPath));
        }