Files
beyond/Assets/ThirdParty/PlayMaker/Editor/PlayMakerUpgradeTools.cs
2024-11-20 15:21:28 +01:00

93 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using HutongGames.PlayMaker.Actions;
using UnityEngine;
using UnityEditor;
using HutongGames.PlayMakerEditor;
public class PlayMakerUpgradeTools
{
/*
// Change MenuRoot to move the Playmaker Menu
// E.g., MenuRoot = "Plugins/PlayMaker/"
private const string MenuRoot = "PlayMaker/";
[MenuItem(MenuRoot + "Tools/Re-Save All Loaded FSMs", false, 31)]
public static void ReSaveAllLoadedFSMs()
{
LoadPrefabsWithPlayMakerFSMComponents();
SaveAllLoadedFSMs();
SaveAllTemplates();
}
[MenuItem(MenuRoot + "Tools/Re-Save All FSMs in Build", false, 32)]
public static void ReSaveAllFSMsInBuild()
{
LoadPrefabsWithPlayMakerFSMComponents();
SaveAllFSMsInBuild();
SaveAllTemplates();
}
private static void SaveAllTemplates()
{
Debug.Log("Re-Saving All Templates...");
FsmEditorUtility.BuildTemplateList();
foreach (var template in FsmEditorUtility.TemplateList)
{
FsmEditor.SetFsmDirty(template.fsm, false);
Debug.Log("Re-save Template: " + template.name);
}
}
private static void SaveAllLoadedFSMs()
{
foreach (var fsm in FsmEditor.FsmList)
{
Debug.Log("Re-save FSM: " + FsmEditorUtility.GetFullFsmLabel(fsm));
FsmEditor.SetFsmDirty(fsm, false);
}
}
private static void SaveAllFSMsInBuild()
{
foreach (var scene in EditorBuildSettings.scenes)
{
Debug.Log("Open Scene: " + scene.path);
EditorApplication.OpenScene(scene.path);
FsmEditor.RebuildFsmList();
SaveAllLoadedFSMs();
EditorApplication.SaveScene();
}
}
private static void LoadPrefabsWithPlayMakerFSMComponents()
{
Debug.Log("Finding Prefabs with PlayMakerFSMs");
var searchDirectory = new DirectoryInfo(Application.dataPath);
var prefabFiles = searchDirectory.GetFiles("*.prefab", SearchOption.AllDirectories);
foreach (var file in prefabFiles)
{
var filePath = file.FullName.Replace(@"\", "/").Replace(Application.dataPath, "Assets");
//Debug.Log(filePath + "\n" + Application.dataPath);
var dependencies = AssetDatabase.GetDependencies(new[] { filePath });
foreach (var dependency in dependencies)
{
if (dependency.Contains("/PlayMaker.dll"))
{
Debug.Log("Found Prefab with FSM: " + filePath);
AssetDatabase.LoadAssetAtPath(filePath, typeof(GameObject));
}
}
}
FsmEditor.RebuildFsmList();
}
* */
}