Exemplo n.º 1
0
        public void Traverse()
        {
            using (var ms = new MemoryStream())
            {
                BinaryWriter writer = new BinaryWriter(ms);
#if AtlaS_ON
                writer.Write(true);
#else
                writer.Write(false);
#endif
                var prefabs = AssetDatabase.FindAssets("t:prefab").Select(i => AssetDatabase.GUIDToAssetPath(i)).ToArray();
                writer.Write(prefabs.Length);
                var prefabLog = new PrefabLog();
                for (int i = 0; i < prefabs.Length; i++)
                {
                    EditorUtility.DisplayProgressBar("Prefab", prefabs[i], (float)i / prefabs.Length);
                    prefabLog.path = prefabs[i];
                    prefabLog.Serialize(writer);
                }
                var scenes = AssetDatabase.FindAssets("t:scene").Select(i => AssetDatabase.GUIDToAssetPath(i)).ToArray();
                writer.Write(scenes.Length);
                var sceneLog = new SceneLog();
                for (int i = 0; i < scenes.Length; i++)
                {
                    EditorUtility.DisplayProgressBar("Scene", scenes[i], (float)i / scenes.Length);
                    sceneLog.path = scenes[i];
                    sceneLog.Serialize(writer);
                }
                var clips = AssetDatabase.FindAssets("t:animationclip").Select(i => AssetDatabase.GUIDToAssetPath(i)).ToArray();
                writer.Write(clips.Length);
                var clipAction = new AnimationClipAction();
                for (int i = 0; i < clips.Length; i++)
                {
                    EditorUtility.DisplayProgressBar("AnimationClip", clips[i], (float)i / scenes.Length);
                    clipAction.path = clips[i];
#if AtlaS_ON
                    clipAction.OnSwitchOff();
#else
                    clipAction.OnSwitchOn();
#endif
                }
                File.WriteAllBytes(LogFile, ms.ToArray());
            }
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            EditorUtility.ClearProgressBar();
        }
Exemplo n.º 2
0
        public void Revert()
        {
            if (!File.Exists(LogFile))
            {
                return;
            }
            using (var fs = File.OpenRead(LogFile))
            {
                BinaryReader reader = new BinaryReader(fs);
                var          isOn   = reader.ReadBoolean();
                if (
#if AtlaS_ON
                    isOn == true
#else
                    isOn == false
#endif
                    )
                {
                    return;
                }
                var prefabLog = new PrefabLog();
                var prefabLen = reader.ReadInt32();
                for (int i = 0; i < prefabLen; i++)
                {
                    EditorUtility.DisplayProgressBar("Reverting", "", (float)i / prefabLen);
                    prefabLog.Deserialize(reader);
                }
                var sceneLog = new SceneLog();
                var sceneLen = reader.ReadInt32();
                for (int i = 0; i < sceneLen; i++)
                {
                    EditorUtility.DisplayProgressBar("Reverting", "", (float)i / sceneLen);
                    sceneLog.Deserialize(reader);
                }
            }
            AssetDatabase.SaveAssets();
            AssetDatabase.DeleteAsset(LogFile);
            EditorUtility.ClearProgressBar();
        }