93 lines
2.7 KiB
C#
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();
|
|
}
|
|
* */
|
|
}
|
|
|