Files
AR-Menu/Library/PackageCache/com.needle.engine-exporter@8c046140a1d9/Timeline/Editor/TimelineValueResolver.cs
2025-11-30 08:35:03 +02:00

41 lines
900 B
C#

using System.Collections.Generic;
using System.Reflection;
using Needle.Engine.Core;
using Needle.Engine.Utils;
using UnityEngine.Timeline;
namespace Needle.Engine.Timeline
{
internal class TimelineValueResolver : IValueResolver
{
public readonly PlayableDirectorExportContext context;
public TimelineValueResolver(PlayableDirectorExportContext directorExport)
{
this.context = directorExport;
}
public bool TryGetValue(IExportContext ctx, object instance, MemberInfo member, ref object value)
{
if (value is TimelineAsset asset)
{
if (context.Director.playableAsset == asset)
{
if (TimelineSerializer.TryExportPlayableAsset(context, asset, out var res))
{
value = res;
return true;
}
}
}
if (value is SignalAsset signal)
{
value = new SignalAssetModel(signal);
return true;
}
return false;
}
}
}