Skip to content

Commit

Permalink
✨ feat(assets): Auto reverting on save
Browse files Browse the repository at this point in the history
  • Loading branch information
esnya committed Jan 20, 2023
1 parent d00421c commit 48cb65f
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
52 changes: 52 additions & 0 deletions Packages/com.nekometer.esnya.inari-udon/Assets/AutoRevert.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
using UnityEngine;
#if UNITY_EDITOR
using System.Linq;
using UnityEngine.SceneManagement;
using UnityEditor;
using UnityEditor.SceneManagement;
using VRC.Udon;
using UdonSharp;
#endif

namespace InariUdon
{

public class AutoRevert : MonoBehaviour
{
private void Reset()
{
hideFlags = HideFlags.DontSaveInBuild;
}

#if UNITY_EDITOR
public void Revert()
{
foreach (var gameObject in GetComponentsInChildren<Transform>(true)
.Where(PrefabUtility.IsPartOfAnyPrefab)
.Select(t => PrefabUtility.GetOutermostPrefabInstanceRoot(t))
.Distinct()
.Where(r => PrefabUtility.HasPrefabInstanceAnyOverrides(r, false))
)
{
Debug.Log($"[AutoRevert] Reverting {gameObject}", gameObject);
PrefabUtility.RevertPrefabInstance(gameObject, InteractionMode.AutomatedAction);
}

}

public static void RevertAll(Scene scene)
{
foreach (var autoRevert in scene.GetRootGameObjects().SelectMany(o => o.GetComponentsInChildren<AutoRevert>(true)))
{
autoRevert.Revert();
}
}

[InitializeOnLoadMethod]
private static void Initialize()
{
EditorSceneManager.sceneSaving += (scene, _) => RevertAll(scene);
}
#endif
}
}
11 changes: 11 additions & 0 deletions Packages/com.nekometer.esnya.inari-udon/Assets/AutoRevert.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 48cb65f

Please sign in to comment.