41 lines
900 B
C#
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;
|
|
}
|
|
}
|
|
} |