Skip to content

Commit

Permalink
menu "convert scene"
Browse files Browse the repository at this point in the history
  • Loading branch information
Xytabich committed Sep 26, 2021
1 parent 256a289 commit 30fc548
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions Assets/Katsudon/Editor Scripts/Udon/BehavioursTracker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,41 @@ private static void Init()
UpdateReferencesContainer();
}

[MenuItem("Katsudon/Convert Scene")]
private static void ConvertAllToUdon()
{
if(EditorApplication.isPlaying) return;
var behaviours = GameObject.FindObjectsOfType<MonoBehaviour>();
var group = Undo.GetCurrentGroup();
var initBehaviours = CollectionCache.GetList<UdonBehaviour>();
var initProxies = CollectionCache.GetList<MonoBehaviour>();
foreach(var proxy in behaviours)
{
if((proxy.hideFlags & HideFlags.DontSave) != 0) continue;
if(Utils.IsUdonAsm(proxy.GetType()))
{
var behaviour = GetBehaviourByProxy(proxy);
if(behaviour == null)
{
proxy.enabled = false;
proxy.hideFlags = SERVICE_OBJECT_FLAGS;

behaviour = proxy.gameObject.AddComponent<UdonBehaviour>();
RegisterPair(behaviour, proxy);
initBehaviours.Add(behaviour);
initProxies.Add(behaviour);
}
}
}
for(int i = 0; i < initBehaviours.Count; i++)
{
ProxyUtils.InitBehaviour(initBehaviours[i], initProxies[i]);
}
CollectionCache.Release(initBehaviours);
CollectionCache.Release(initProxies);
Undo.CollapseUndoOperations(group);
}

private static void OnPlayModeChanged(PlayModeStateChange state)
{
if(state == PlayModeStateChange.EnteredPlayMode || state == PlayModeStateChange.EnteredEditMode)
Expand Down

0 comments on commit 30fc548

Please sign in to comment.