minesweeper_game/Library/PackageCache/com.unity.ai.navigation@c74b2724ed42/Editor/Updater/OffMeshLinkConverter.cs
2025-03-15 14:30:26 -04:00

53 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using Unity.AI.Navigation.Editor.Converter;
using UnityEditor;
namespace Unity.AI.Navigation.Updater
{
internal sealed class OffMeshLinkConverter : SystemConverter
{
public override string name => "OffMesh Link Converter";
public override string info => "Creates NavMesh Link components that match and replace existing OffMesh Link components. \n" +
"Ensure the selected scene or prefab files are writable prior to running the Converter.";
public override Type container => typeof(NavigationConverterContainer);
public override void OnInitialize(InitializeConverterContext context, Action callback)
{
var objectsToConvert = OffMeshLinkUpdaterUtility.FindObjectsToConvert();
foreach (var guid in objectsToConvert)
{
var path = AssetDatabase.GUIDToAssetPath(guid);
var desc = new ConverterItemDescriptor()
{
name = Path.GetFileNameWithoutExtension(path),
info = path,
additionalData = guid
};
context.AddAssetToConvert(desc);
}
callback.Invoke();
}
public override void OnRun(ref RunItemContext context)
{
var convertList = new List<string>(context.items.Length);
for (var i = 0; i < context.items.Length; ++i)
{
var guid = context.items[i].descriptor.additionalData;
convertList.Add(guid);
}
OffMeshLinkUpdaterUtility.Convert(convertList, out var failedConversions);
foreach (var conversionItem in failedConversions)
{
var index = conversionItem.itemIndex;
context.didFail[index] = true;
context.info[index] = conversionItem.failureMessage;
}
}
}
}